Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7

    [vb .net] problema appendText ed evento load

    ho un problema con una applicazione che sto scrivendo. in pratica c'è un form1 che è un menù, che apre vari form in cui si effettuano le operazioni. tra questi, nel form 5 c'è una datagridview con l'elenco di tutti i record presenti in un db access.
    se effettuo doppio click su una cella, tramite DataGridView1_CellDoubleClick, mi si apre (con showdialog) il form8
    e qui nasce il problema. nel form ci sono delle textbox, che al caricamento dovrebbero leggere i dati alla gridview. ma niente. nemmeno se l'appendtext lo faccio con una stringa.
    ma se invece che nel load lancio il codice alla pressione di un button tutto funziona perfettamente. qualcuno per favore saprebbe dirmi come mai?
    da premettere che sto cercando di riusare il codice di una applicazione più piccola, con solo un form con datagrid e uno con le textbox, creata prendendo spunto da vari tutorial qua e la, e funzionava tutto perfettamente
    ecco il codice:

    codice:
    Private Sub Form8_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim connetionString As String
    
            Dim connection As OleDbConnection
    
            Dim oledbAdapter As OleDbDataAdapter
    
            Dim ds As New DataSet
    
            Dim sql As String
    
    
    
    
    
            connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\utente\Documents\Visual Studio 2012\Projects\DATABASE REPERTI\DATABASE REPERTI\Database reperti versione buona1.accdb"
            sql = "SELECT * FROM Tabella1 WHERE (ID = " & param & ")"
    
    
    
            connection = New OleDbConnection(connetionString)
    
            Try
    
                connection.Open()
    
                oledbAdapter = New OleDbDataAdapter(sql, connection)
    
                oledbAdapter.Fill(ds)
    
                oledbAdapter.Dispose()
    
                connection.Close()
    MsgBox("Prova")
                txtID.AppendText("prova")
                txtTipo.AppendText(ds.Tables(0).Rows(0).Item(1).ToString)
                txtSottotipo.Text = "" & param
                txtInventario.Text &= "provaInventario"
    
            Catch ex As Exception
    
                MsgBox("Can not open connection ! ")
    
            End Try
    
        End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ciao..
    Uhm... direi che intanto, a parte che i dati non li leggi dalla datagrid ma li ottieni da una query fatta al database...
    Ti direi di verificare il codice perché fai una query passando "param" ma nel codice che hai scritto param non appare da nessuna parte.
    In ogni caso, prova a fare un debug linea per linea per cercare di capire dov'è il problema: se la query viene fatta correttamente, se i dati sono messi nella datatable (che te ne fai del dataset?)
    Poi, non serve usare "AppendText".. .basta la proprietà "Text"...
    Prova così, per individuare l'errore e capire su cosa agire...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    ho dimenticato di dire due cose, param è una variabile public di tipo string dichiarata in un modulo. nel momendo del doppio click sulla datagridview viene settata con il codice id del record scelto

    e ho dimenticato di dire una cosa ancora più importante e più strana...che se uso appendtext o la proprietà text non cambia niente.

    il debug l'ho fatto mettendo tutto in un buttonclick, e funziona perfettamente. mi legge i dati e li carica correttamente

    in effetti non leggo da datagrid ma da query. da datagrid (che mi serve per stampare l'elenco completo dei record) leggo solo l'id selezionato per mostrare la scheda del singolo record

    avevo pensato andasse bene perchè cmq ottengo quello che voglio, è molto sbagliato?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ok per la variabile param, ma non sarebbe la cosa migliore..
    Perché non passi il valore di param quando crei l'oggetto form8, invece di scrivere variabili globali in giro per il progetto? E' alla base della programmazione ad oggetti, e i form alla fine sono oggetti come gli altri...
    Per quanto riguarda "appendText", certo, non fa altro che concatenare il testo che la textbox contiene con quello che gli passi tu, quando richiami il metodo.
    Ma hai debaggato il codice?
    Qui
    ds.Tables(0).Rows(0).Item(1).ToString
    il dataset contiene i dati corretti, estratti dalla query?
    prova con debug.print(ds.Tables(0).Rows(0).Item(1).ToString)
    e vedi se è corretto...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    allora, andiamo con ordine

    ho usato text invece di appendtext, tutto ok

    i dati sono quelli giusti

    ho aggiunto all'inizio della sub me.show, ora funziona correttamente come volevo

    proverò a togliere la variabile param e passare il valore alla creazione di form8. ci avevo già provato, ma mi creava un form vuoto invece che quello che ho creato io con le textbox e tutto, per questo avevo adottato lo stratagemma di param publica

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Bene che ti funzioni.. Ma sai cosa.. Come gestisci l'evento doubleclick sulla datagrid?
    Se magari posti il codice si può vedere...
    Le istruzioni dovrebbero essere del tipo:
    codice:
    Dim Mydialog as New Form8(param)
    Mydialog.showdialog
    Così crei un nuovo oggetto del tipo form8, che è la classe da te creata che contiene le textbox dei dati. Nella creazione passi il parametro che è l'ID della cella selezionata...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    si funzionare funziona ora, ma logicamente c'è sempre spazio per imparare e migliorare

    al momento il codice è questo

    codice:
     Private Sub DataGridView1_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            param = DataGridView1.Item(0, DataGridView1.CurrentCell.RowIndex).Value.ToString()
            Dim frm8 As New Form8()
            frm8.Show()
        End Sub
    ora proverò a passare il parametro alla creazione del form

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    in un primo momento avevo messo come prima istruzione della sub me.show, e cosi (e solo così) funzionava usando la variabile publica

    ora ho modificato come suggerito, passando il parametro nella creazione del form come attributo, e tutto funziona, senza bisogno dell'istruzione me.show

    per l'appendtext, l'ho sostituito con text (in realtà all'inizio nn funzionava nessuno dei due, ora entrambi). effettivamente è più corretto e non rischio di dover gestire sovrapposizioni di testo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.