Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB.NET 2005] naar het nieuwe ingegeven record navigeren

Pagina: 1
Acties:

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
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)
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?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:16

gorgi_19

Kruimeltjes zijn weer op :9

Een dataview gebruiken en omgekeerd sorteren?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
Je weet welk nummer je hebt ingegeven ?
De find method van de dataview gebruiken, en dan de index die je terugkrijgt gebruiken om de position van je currency-manager te zetten ?

https://fgheysels.github.io/


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
bedankt voor de antwoorden. De dataview ken(de) ik eigenlijk niet, maar ik zal er wat info over opzoeken. Het zal wel lukken dan. Bedankt

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
whoami schreef op dinsdag 18 september 2007 @ 12:11:
Je weet welk nummer je hebt ingegeven ?
De find method van de dataview gebruiken, en dan de index die je terugkrijgt gebruiken om de position van je currency-manager te zetten ?
ik gebruik volgende code:
Visual Basic .NET:
1
2
3
dim objDataView as DataView
objDataView = New DataView(objDataSet.Tables("Klanten"))
objDataView.Sort = "naam"


objDataView.Find("nummer='abc1'")
geeft mij altijd als resultaat -1 terug, ongeacht of 'abc1' gevonden is of niet (ter info: nummer is gedefinieerd als text in de tabel)

Kan iemand mij op de juiste weg helpen aub?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
De help van de Find method v/d DataView eens goed bekijken ... :)

Je moet Sort zetten op 'nummer', en dan aan de Find method gewoon abc1 doorgeven, dacht ik.

https://fgheysels.github.io/


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
inderdaad, bedankt
objDataView.Sort = "nummer"
objDataView.Find("abc1") --> geeft de rij index terug als integer.
Pagina: 1