Ik heb een DataSet "MCO" aangemaakt die een DataTable "Klanten" (tblKlanten uit MCO.mdb) bevat.
Het toevoegen van een nieuwe klant werkt zonder problemen met onderstaande code (beknopt)
Na deze acties wis ik de volledige datatable en lees ik de volledig tabel terug in.
Het probleem is dat nu de records terug ingeladen zijn maar de 1ste datarow wordt getoond op het scherm. Hoe kan ik nu onmiddellijk / zo snel mogelijk naar het laatst ingegeven karakter gaan?
Ik had het volgende reeds geprobeerd: het laatst ingegeven klantnr onthouden in een variabele. Vervolgens met een loop Me.BindingContext(objDataSet.Tables("Klanten")).Position += 1 uitvoeren tot txtKlantnr.Text = de variabele met het onthouden klantnr. Nadeel is dat dit natuurlijk veel te traag gaat bij veel records (bv 2000 reeds).
Daarom dacht ik aan een DataReader om snel de gegevens uit te lezen
dit geeft echter de error: no data exists for the row/colum.
Heeft iemand een idee hoe ik dit beter kan oplossen?
Het toevoegen van een nieuwe klant werkt zonder problemen met onderstaande code (beknopt)
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| 'commandbuilder maken om automatisch insert / delete / update statements te maken Dim objCommandBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(objKlantenAdapter) 'nieuwe datarij maken in de datatable klanten Dim objNewRow As DataRow = objDataSet.Tables("Klanten").NewRow() 'de nieuwe datarow toevoegen aan de datatable objConnection.Open() 'de connectie openen 'naar de kolommen van de datarow de juiste waardes kopiëren objNewRow("nummer") = txtKlantnr.Text objNewRow("naam") = txtNaam.Text 'de datarow toevoegen aan de datatable klanten objDataSet.Tables("Klanten").Rows.Add(objNewRow) 'update doen waardoor de datatable terug naar de .mdb gekopieerd wordt objKlantenAdapter.Update(objDataSet, "Klanten") 'de connectie terug sluiten objConnection.Close() |
Na deze acties wis ik de volledige datatable en lees ik de volledig tabel terug in.
Het probleem is dat nu de records terug ingeladen zijn maar de 1ste datarow wordt getoond op het scherm. Hoe kan ik nu onmiddellijk / zo snel mogelijk naar het laatst ingegeven karakter gaan?
Ik had het volgende reeds geprobeerd: het laatst ingegeven klantnr onthouden in een variabele. Vervolgens met een loop Me.BindingContext(objDataSet.Tables("Klanten")).Position += 1 uitvoeren tot txtKlantnr.Text = de variabele met het onthouden klantnr. Nadeel is dat dit natuurlijk veel te traag gaat bij veel records (bv 2000 reeds).
Daarom dacht ik aan een DataReader om snel de gegevens uit te lezen
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
| objConnection.Open() dim objCommand as OleDbCommand = new OleDbCommand objCommand.connection = objConnection objCommand.CommandText = "select * from tblKlanten" dim objReader as OleDbDataReader objReader = objCommand.ExecuteReader() Do While objReader("nummer") <> txtKlantnr.Text (of de variabele met dit klantnr) objReader.Read() loop objReader.Close objConnection.Close |
dit geeft echter de error: no data exists for the row/colum.
Heeft iemand een idee hoe ik dit beter kan oplossen?