Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Recordset.Findfirst findet nichts

Begonnen von drnicolas, Oktober 19, 2023, 12:01:36

⏪ vorheriges - nächstes ⏩

drnicolas

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?

Beaker s.a.

Sicher, aber wenn eine Metallsonde kein Metall findet, findest du auch keins mit buddeln.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

markusxy

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.

drnicolas

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

markusxy

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.

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

drnicolas

Vielen Dank an alle Poster. Das problem ist gelöst.
Banal - aus versehen wurde ein feldinhalt überschrieben, korrigiert und ein Zahlendreher eingebaut.