Ich habe ein Formular das an eine lokale tabelle gebunden ist.
mit .Recordset.Findfirst suche ich in einem Feld - das funktioniert auch so, ABER NUR auf 1 rechner!
Die gleiche DB habe ich auf einen anderen Computer kopiert und dort wird mit dem gleichen Code nix gefunden.
Irgendwas muß anders sein - aber was?
Gibt es noch eine alternative Methode um zu suchen?
Sicher, aber wenn eine Metallsonde kein Metall findet, findest du auch keins mit buddeln.
Zitat von: drnicolas am Oktober 19, 2023, 12:01:36Gibt es noch eine alternative Methode um zu suchen?
Du kannst ein Recordset gefiltert öffnen.
Aber da ändert sich nichts. Ein Computer liefert auch Ergebnisse wenn er schlechte Laune hat.
Zeig also mal deinen Code.
Außerdem solltest du für jedes gefilterte Feld den Datentyp mitteilen, das der Code ja Datentyp abhängig ist.
Public Sub FindeEBM(suchstr)
' Dim rs As Recordset
' Set rs = Me.RecordsetClone
' rs.FindFirst "[OPS 2023]= '" & suchstr & "'"
' Stop
'
Me.Recordset.FindFirst "[OPS 2023]= '" & suchstr & "'"
If Me.Recordset.NoMatch Then
Beep
MsgBox "Es konnte kein Datensatz gefunden werden." & vbCrLf & "OPS-Code: " & suchstr & vbCrLf & "Bitte vollständig eingeben", vbCritical + vbOKOnly, _
"Suche nach OPS-Code"
flag_Suche = False
Me.xt_Stichwort.SetFocus
Me.txt_LZeile.Enabled = False
Me.btn_NeuBerechnen.Enabled = False
Me.txt_nachbehandlung.Enabled = False
Else
flag_Suche = True
Me.txt_LZeile.Enabled = True
Me.txt_nachbehandlung.Enabled = True
Me.btn_NeuBerechnen.Enabled = True
End If
End Sub
Dies ist der Code. Die Tabelle nebenbei wurde aus einem Excel der KBV importiert und enthält Operationscods mit den zugehörigen Abrechnungsziffern.
Wie ich schon schrieb: Der Code macht was er soll auf dem Ur-rechner und läuft nicht auf den rechnern in der Praxis.
Einziger Untreschied: Der ursprüngliche rechner läuft mit Access 2013, die Praxisrechnern mit ACC 2016
Erstens solltest du recordsetclone verwenden wie du es ursprünglich gemacht hast.
Zweitens immer zu Beginn ein rs.movefirst machen.
Das Problem: Wenn du einmal keinen Wert gefunden hast, kann sich der Datenzeiger für die nächste Suche an einer ungültigen Position befinden -> siehe Doku.
Das Verhalten ist möglicherweise auch von der DAO Version abhängig.
Zitatund dort wird mit dem gleichen Code nix gefunden
Hast Du hinreichend geprüft, ob es etwas zu finden gibt? Und zwar im aktuellen Formularrecordset? Dort könnte ja zusätzlich gefiltert sein, so dass nicht alle Tabellendaten in diesem Moment verfügbar sind, vorbehaltlich, dass die Tabelle das Gesuchte enthält.
Nebenbei: Etwas mit einem spezifischen Kriterium nicht zu finden ist kein "nicht funktionieren", sondern ein stets mögliches Ergebnis einer funktionierenden Suche. Daten und Kriterium müssen schon zueinander passen für ein erfolgreiches Finden.
ZitatWenn du einmal keinen Wert gefunden hast, kann sich der Datenzeiger für die nächste Suche an einer ungültigen Position befinden
FindFirst sucht von vorn. Für das Weiterrücken des Datenzeigers gibt es FindNext.
Vielen Dank an alle Poster. Das problem ist gelöst.
Banal - aus versehen wurde ein feldinhalt überschrieben, korrigiert und ein Zahlendreher eingebaut.