Grüße,
ich versuche gerade verzweifelt eine Möglichkeit der Bitmaskenabprüfung für Access zu entwickeln.
Die "Spieltabelle" besteht nur aus einer Spalte, ID, int mit den Zahlen 1 - 9
Nun wollte ich anhand einer SQL-Abfrage mir die Zeilen für bestimmte Werte raussuchen:
PARAMETERS Param long;
SELECT ID FROM TEST
WHERE ID = (ID & [Param])
Ergo: Geht nicht, blödes Access nimmt & nicht als Bitwise And, sondern als Verkettungsoperator für Strings.
Nächster Versuch:
PARAMETERS Param long;
SELECT ID FROM TEST
WHERE ID = CLng(ID) & CLng([Param])
Ergo: Geht auch nicht, Access zickt immer noch rum.
Gut dacht ich mir, schreibste nen VBA-Makro, über Extras -> Makros -> Visual Basic Editor neues Modul angelegt und folgenden Text geschrieben:
Option Compare Database
Public Function CheckBit(L1 As Long, L2 As Long) As Boolean
If Not IsNumeric(L1) Or Not IsNumeric(L2) Then
CheckBit = False
Else
CheckBit = (CLng(L1) = (CLng(L1) And CLng(L2)))
End If
End Function
Ergo: geht.
PARAMETERS Param long;
SELECT ID FROM TEST
WHERE CheckBit(ID, [Param])
Programm gestartet (CheckBit-Funktion war nun im Query), Fehler bekommen:
->
Was mach ich falsch?
bzw. gibts eine einfachere Möglichkeit, das ohne Makros zu machen? Wenn ja, wie?
Wenn nein, wie mach ich die Makros so verfügbar, dass diese auch beim Verwenden externer Programme korrekt funktionieren (ohne, dass ich beim Kunden noch irgendwas extra installieren muss)?