Hallo,Freunde der VBA Programmierung: Ich arbeite immernoch an meiner kleinen Sprachen (fInnisch-Lernen.mdb)
Meine Frage, ich möchte eine Tabelle schnell durchsuchen können ohne umständlich auf Docmd und goto Record zurück zu greifen.(DoCmd.GoToRecord , , acNext 'nächste Zeile) das ist sehr langsam.
stattdessen ist die Rs.Move... Methode sehr schnell. leider funktioniert das nicht so wie gedacht. mit rs.moveNext
Ich habe gerade nochmal bevor ich das hier veröffentlich getestet. es scheint so zu sein, dass die Funktion rs.MoveNext nicht funktioniert. der Zähler springt irgend wo hin aber nicht dahin, wo man denkt. ???
Wer hier eine gute Idee hat, Hilfe wird gerne angenommen.
Private Sub Text134_DblClick(Cancel As Integer)
'Schnelle Suche in Finnisch
'DoCmd.GoToRecord , , acGoTo, 1
Dim db As Database
' Datenbank
Dim rs As Recordset
' Tabelle
'Dim Feldname As Field ' Feldname Diese Zeile habe
ich heraus genommen verstehe den Syntax nicht.
Dim Es As Integer
' Erster Satz
Dim Ls As Integer
'Letzter Satz
Dim Cs As Integer
'Current Dat
Dim Fm As String
'Merken inhalt von Finnisch
Fm = Finnisch
'Merker
Dim V1 As String
'V1 = Finnisch
'Inhalt von Finnisch nach V1
Dim V2 As String
' Suchargument als String
V2 = Text134
'Suchargument aus textfeld 134
Set db = CurrentDb
' oder DatenPfad der DB
Set rs = db.OpenRecordset("TB1") 'TB1 ist Name der Tabelle
Es = rs![Satz] 'Erster Satz Numme
'Es = Satz
rs.MoveLast
'gehe zu letzten Satz und setzte Ls
Ls = rs![Satz]
'[Satz ]Nummer (Record Nummer Autnummerfield)
rs.MoveFirst
'gehe zu ersten Satz Es ist ja Satz 1
Es = Satz
Cs = Satz
' Cs der Current Satz im Test musste der Wert mit Null beginnen.
'Do While Not rs.EOF ' kann man machen geht aber auch mit stop on Ls
Do While Cs <> Ls
rs.MoveNext
Cs = Cs + 1
V1 = rs![Finnisch]
'Finnisch = V1 'V2 neuer Vergleich
V1 = Finnisch
If V1 = V2 Then GoTo Gefunden ' wenn gleich dann halt goto Ende
If Cs = Ls Then GoTo DEnde ' Nicht gefunden Vergleich currentSatz mit letzter Satz
If Cs = 10 Then GoTo Test1 'hier sollte der Vergleich gefunden sein Cs =10
Loop
Test1:
MsgBox "Cs ist 10 erreicht , nicht gefunden --->" & Cs
rs.Close
Gefunden:
DoCmd.GoToRecord , , acGoTo, 1
Finnisch = Fm 'Speichert Inhalt von recht nach links
'stellt den Inhalt ursprünglich wieder in Zeile eins her.
DoCmd.GoToRecord , , acGoTo, Cs 'sollte zum Satz springen in dem der Vergleich gefunden war. Syntax versteht Cs nicht ?
MsgBox "Gefunden " & V1 & Cs
GoTo Ende
DEnde: MsgBox "Datei Ende erreicht , nicht gefunden --->" & Ls
Ende:
End Sub