Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Recordset SEEK Methode mit LongLong Index

Begonnen von junjon, Dezember 01, 2021, 21:28:40

⏪ vorheriges - nächstes ⏩

junjon

Hallo zusammen,
Mein Name ist junjon, ich arbeite semihobbymäßig mit Access.

Beim Durchsuchen eines Recordsets mit der Seek Methode ist mir aufgefallen dass sobald der Indexwert den Typ LongLong hat, nie ein Eintrag gefunden wird. In der Doku habe ich nichts dazu gefunden, weiß da jemand mehr zu?


Falls es jemand testen möchte:
Tabelle1 ist eine Tabelle mit einem indizierten Feld longindex. Wenn der Datentyp von longindex Zahl, oder kurzer Text ist, gibt es keine Ausgabe, bei Großer Ganzzahl "Kein Eintrag gefunden".
Sub test()
Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim test As Variant
Set db = CurrentDb
Set rst = db.OpenRecordset("Tabelle1")
test = rst!longindex
rst.Index = "longindex"
rst.Seek "=", test
If rst.NoMatch Then Debug.Print ("Kein Eintrag gefunden")
Set rst = Nothing
Set db = Nothing
End Sub

markusxy

Hallo,

aus meiner Sicht ist die einzige mögliche logische Erklärung ein Null Wert in der Variable test.
Wenn das ausgeschlossen ist, dann gibts möglicherweise ein Problem mit 64Bit Integer.
Verwendest du 32Bit Access?

ebs17

Vielleicht müsste man auch explizit Recordset2 verwenden.
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: junjon am Dezember 01, 2021, 21:28:40Beim Durchsuchen eines Recordsets mit der Seek Methode ist mir aufgefallen dass sobald der Indexwert den Typ LongLong hat, nie ein Eintrag gefunden wird.
Ich kann das Problem sowohl mit 32bit- als auch 64bit-Access reproduzieren.

Zitat von: ebs17 am Dezember 02, 2021, 09:18:10Vielleicht müsste man auch explizit Recordset2 verwenden.
Das macht für mich keinen Unterschied.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

junjon

Ich habe es unter 64-Bit ausprobiert. Recordset2 macht bei mir ebenfalls keinen Unterschied.

Ich habe es nochmal für die anderen Datentypen getestet, entweder diese lassen sich garnicht erst als Index einrichten oder die Seek Methode funktioniert,nur der LongLong macht nicht so ganz mit. Hat jemand ne idee ob/warum das gewollt sein könnte?

markusxy

Zitat von: junjon am Dezember 02, 2021, 12:17:56Hat jemand ne idee ob/warum das gewollt sein könnte?

Da fällt mir kein schlüssiger Grund ein.
Ich nehme mal an, es spielt auch keine Rolle, wenn du das Feld zum PK machst.

PhilS

Zitat von: junjon am Dezember 02, 2021, 12:17:56Hat jemand ne idee ob/warum das gewollt sein könnte?
Es ist nicht gewollt, sondern ein Bug. Der Bug wird wahrscheinlich in einer zukünftigen Version von Microsoft Access behoben.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor