1.
free
28.12.2008 19:47:11 Peter de Maas Lesen/Editieren
Antworten SQL Abfrage Guten Tag, ich bin auf diese Seite über eine Suche nach SQL Abfragen gekommen und finde das Tutorial sehr lehrreich. Leider habe ich ein SQL Abfrage Problem, welches ich damit noch nicht lösen kann. Kann ich dazu hier eine Frage Stellen? Gruß Peter de Maas 2.
free
28.12.2008 19:52:43 Jürgen Auer Lesen/Editieren
Antworten Re: SQL Abfrage Hallo Herr Maas,
> Kann ich dazu hier eine Frage Stellen?
klar, warum nicht.
Fragen Sie mal! 3.
free
28.12.2008 20:17:10 Peter de Maas Lesen/Editieren
Antworten SQL Abfrage Es geht um ein VB6 Projekt, welches eine mdb Datenbank steuert, in dem eine Vielzahl von Daten zu einem Personen/Klientenkreis zugeordnet werden. Daneben sollen die gespeicherten Daten aber auch über das VB6 Projekt ausgewertet werden. Dies geschieht über SQL-Abfragen. Bei den "normalen" Abfragen habe ich zumeist keine Probleme, eine zugordnete Information innerhalb einer Tabelle ist jedoch als bitset in einer Spalte gespeichert. Hat also eine Person Kenntnisse in Spanisch, Deutsch, Englisch, Französisch usw., so wird diese Gesamtinformation in einer entsprechenden Bitzahl hinterlegt 1+2+4+8 usw. Bei der Auswertung will ich nun wissen, wieviele Personen können (auch) Spanisch (1) oder wieviele (auch) Englisch (4) usw. Muss also jeden Datensatz bei jeder Sprache abfragen, ob die referierende Zahl im gespeicherten Wert der Personenzeile für Sprache enthalten ist. In VB würde ich das mit einer Schleifenkonstruktion bewerkstelligen, ich hoffe aber, es gibt dafür eine Formel innerhalb einer SQL-Abfrage!? Vielen Dank für eine Hinweisantwort. 4.
free
28.12.2008 20:58:48 Jürgen Auer Lesen/Editieren
Antworten Access und Bitset-Techniken Beim MS-SqlServer geht das direkt, sehen Sie sich die Beispiele unter
http://www.sql-und-xml.de/server-daten/sql-befehle/operatoren.htm
1.4 Bitweise Operatoren an.
Das etwas blöde Problem liegt darin, daß Access diese Bitoperatoren so nicht kennt. Es gibt allerdings einen 'kleinen Trick', mit dem man das lösen kann. Den verwende ich selbst innerhalb von Server-Daten, um bei solchen Bitset-Ausgaben (Checkbox 1 - deutsch, 2 - englisch, 4 - französisch usw) herauszufinden, ob der Wert $v in der Datenspalte (bsp. 5 = deutsch und französisch) den Wert $val (1 = deutsch) enthält (XSL kennt auch keine Bitset-Operatoren):
($v mod ($val * 2)) >= $val
Sieht schlimm aus, funktioniert aber :-)
$v = 1, $val = 1: 1 mod 2 = 1 >= 1, also enthalten - 1 kann deutsch.
$v = 2, $val = 1: 2 mod 2 = 0 < 2, also nicht enthalten - ein reiner Engländer kann kein deutsch.
$v = 3, $val = 1: 3 mod 2 = 1 >= 1 - ok $v = 3, $val = 2: 3 mod 4 = 3 >= 2 - auch ok
$v = 5 (dt+fr), $val = 4: 5 mod 8 = 5 >= 4 - der dt-fr-Kenner kann französisch.
Ansonsten könnte man sich in Access auch eine selbstdefinierte Funktion schreiben, da VBA die Operatoren AND/OR als Bitset-Operatoren unterstützt:
MsgBox (5 And 3)
gibt 1 zurück, das kann man dann (genauso wie beim MS-SqlServer) auf = 0 oder <> 0 testen. 5.
free
28.12.2008 21:36:27 Peter de Maas Lesen/Editieren
Antworten SQL Abfrage Bitset Vielen Dank für die rasche Antwort. Damit kann ich schon was anfangen. Ihre Seite erhält einen fetten Bookmark bei mir. Werde sicher noch öfter hier vorbeischauen. Beste Grüße Peter de Maas