Ho un form dal quale inserisco o leggo i dati presenti in un db.
All'avvio, nel form_load ho:
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
Poi ho 2 bottoni:
Il primo mi aggiorna il database ed il suo evento click è così codificato:
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à")
Il secondo, associato ad una text box e "dovrebbe" richiamarmi e visualizzare i record riempendo il form. Il codice è:
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?