Ho un form dal quale inserisco o leggo i dati presenti in un db.
All'avvio, nel form_load ho:
Poi ho 2 bottoni:codice:con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = Miodb.mdb" con.Open() sql = "SELECT * FROM Paese" da = New OleDb.OleDbDataAdapter(sql, con) da.Fill(ds, "Città") con.Close() MaxRows = ds.Tables("Città").Rows.Count
Il primo mi aggiorna il database ed il suo evento click è così codificato:
Il secondo, associato ad una text box e "dovrebbe" richiamarmi e visualizzare i record riempendo il form. Il codice è:codice:Dim cb As New OleDb.OleDbCommandBuilder(da) Dim dsNewRow As DataRow dsNewRow = ds.Tables("Città").NewRow() dsNewRow.Item("comune") = v1_comune.Text ds.Tables("Città").Rows.Add(dsNewRow) da.Update(ds, "Città")
codice:On Error GoTo INSESISTENTE Dim i, riga, ID As Integer ID = ID_TextBox.Text For i = 0 To MaxRows If (ds.Tables("Città").Rows(i).Item(0) = ID) Then riga = i Exit For End If Next i v1_comune.Text = ds.Tables("Città").Rows(riga).Item(1) Exit Sub INSESISTENTE: MsgBox("Città non trovata")
L'aggiornamento del database, quindi il primo button, è ok. Il nuovo record viene inserito corettamente nel db, il secondo button, relativo all'interrogazione... ha qualcosa che non va e non capisco cosa.
Mi spiego.
Se avvio l'applicazione ed uso il secondo bottone (mostra) leggo tranquillamentee (gli passo l'id) tutti i record ma... se nella stessa sessione aggiungo un record col primo bottone e poi cerco di rivederlo richiamandolo col secondo bottone... il record non esiste, non lo vedo. Viceversa, se esco e rientro nell'applicazione anche il nuovo recordo è visibile.
Pensavo fosse un problema di "riempimento" di dataset e allora ho modificato il primo bottone aggiungendo le stesse istruzioni presenti sul form_load, così che, dopo l'inserimento del dato, il dataset "Città" venisse nuovamente riempito con tutti i dati presenti nel db anche l'ultimo appena inserito. Purtroppo non va! :-(
Quindi chiedo... dove sbaglio?

Rispondi quotando