BITweises und setzen.

12/03/2011 - 11:51 von Alexander Bierig | Report spam
Hallo,

ich setze es wohl falsch an...

in einer Tabelle habe ich ein Feld Datentyp BYTE.

Die Idee ist, dass ich die acht Bit verwende um bestimmte Flags zu
setzen, bzw zu kombinieren.

Auslesen, klar ist kein Thema, aber das Aktualisieren...
Ich mache da einen Ansatzfehler, ich will ein Bit, evtl auch mehrere in
einem zweiten Schritt an, bzw abschalten UNDABHÄNGIG vom Stand alelr
anderen Bits.

UPDATE tmptbl_fg_komponenten_anforderung SET
tmptbl_fg_komponenten_anforderung.welches_lastenheft =
([tmptbl_fg_komponenten_anforderung].[welches_lastenheft] And 2)
WHERE (((tmptbl_fg_komponenten_anforderung.kriteriums_rangfolge)=3));

Damit ist das AND der Fehler im SQL-Statement. Ersetzen muss ich das durch?


Grüsse

Alex.
 

Lesen sie die antworten

#1 Josef Poetzl
12/03/2011 - 12:21 | Warnen spam
Hallo!

Alexander Bierig schrieb:
in einer Tabelle habe ich ein Feld Datentyp BYTE.

Die Idee ist, dass ich die acht Bit verwende um bestimmte Flags zu
setzen, bzw zu kombinieren.


[...]
UPDATE tmptbl_fg_komponenten_anforderung SET
tmptbl_fg_komponenten_anforderung.welches_lastenheft =
([tmptbl_fg_komponenten_anforderung].[welches_lastenheft] And 2)
WHERE (((tmptbl_fg_komponenten_anforderung.kriteriums_rangfolge)=3));

Damit ist das AND der Fehler im SQL-Statement. Ersetzen muss ich das durch?



... mehrere per 1:n verknüpfte Datensàtze.

Bitweises Auswerten ist ein Zeichen für einen fehlenden
Normalisierungsschritt. ;-)


Aber zu deine Frage:
Du müsstest AND durch BAND ("binary and") ersetzen.

Da BAND von DAO (ANSI89) allerdings nicht erkannt wird, musst du diese
SQL-Anweisung über ADODB ausführen.

Falls du DAO benötigst, könntest du in VBA eine eigene Funktion
erstellen, die den passenden Wert liefert.

mfg
Josef

Code-Bibliothek für Access-Entwickler: http://access-codelib.net/
AccUnit - Access-Anwendungen testen: http://access-codelib.net/accunit
Access-FAQ von Karl Donaubauer: http://www.donkarl.com/

Ähnliche fragen