| |

VB & DatenbankenUNION, NULL-Werte in Datumsfeldern | |  | Autor: db-ernie | Datum: 03.01.07 13:38 |
| Hallo Xperts und n' fröhliches 2007!
Ich habe in Access 2003 ein Formular zu Projekten gebaut in dem sich ein Kombifeld (cboJahr) und ein Listenfeld (lstProjekte) befindet.
Die Daten für beide Steuerelemente liefert die Tabelle projekte mit folgenden Feldern ...
- ID (gleich der Projektnummer)
- Projektname (Text)
- Start (Datum)
- Ende (Datum)
... in der sich testweise folgende Datensätze befinden:
000376 ProjektA 10.01.2006 22.01.2006
000377 ProjektB 10.04.2007 13.04.2007
000379 ProjektC 14.02.2008
000381 ProjektD
Im Listenfeld werden die Projekte entsprechend der im Kombifeld gewählten Einträge mit den Feldern aufgelistet.
Das Kombifeld selbst soll die in der Tabelle in "Start" enthaltenen Werte nach Jahreszahlen filtern.
Vom Prinzip ne' einfache Sache, oder?
Mein Problem ist, dass es auch Projekte gibt (und geben soll!), denen erst mal kein Startdatum zugwiesen wird.
Also brauche ich Einträge, die nicht nur das Filtern nach einzelnen Jahren zulassen, sondern auch ALLE! Projekte und auch die Projekte ermitteln, die kein Startdatum haben.
Im Kombifeld selbst werden die Werte durch folgende Abfrage generiert:
SELECT "ALLE" as jahreszahl,0 As ODERB FROM projekte
UNION
SELECT "ohne Startdatum" as jahreszahl,1 As ODERB FROM projekte
UNION
SELECT Format([Start],"yyyy") AS jahreszahl,2 As ODERB FROM projekte
WHERE (((Format([Start],"yyyy"))>""))
ORDER BY ODERB, jahreszahl DESC;
... was folgende 5 Einträge ergibt:
(1) ALLE (--> soll alle Projekte anzeigen, inkl. der Proj. ohne Startdatum)
(2) ohne Startdatum (--> nur Projekte ohne Startdatum)
(3) 2008
(4) 2007
(5) 2006
Solange eine Jahreszahl wie in (3)/(4)/(5)gewählt wird ist alles OK.
Wie erreiche ich aber die Anzeige der Projekte entsprechend der vorgenannten Einträge (1) und (2)?
Denn dort stehen ja keine Jahre als Kriterien, sondern Zeichenketten drin, die für die Abfrage umgewandelt werden müssen.
Für die Datenherkunft des Listenfelds lstProjekte entsprechend (1) habe ich es mit folgender Abfrage versucht:
SELECT projekte.ID, projekte.Projektname, projekte.Start, projekte.Ende
FROM projekte
WHERE (((Year([Start])) Like IIf([Forms]![frmProjekte]![cboJahr]="ALLE","*",[Forms]![frmProjekte]![cboJahr])))
ORDER BY projekte.ID DESC;
Ich bekomme hier nur die Projekte, denen ein Startdatum zugewiesen wurde (Projekt D fehlte).
Erstelle ich eine unabhängige Abfrage auf die Tabelle für (1) mit:
SELECT projekte.ID, projekte.Projektname, projekte.Start, projekte.Ende
FROM projekte
WHERE projekte.Start Is Null OR projekte.Start Is Not Null
ORDER BY projekte.ID DESC;
... werden mir als Ergebnis auch wirklich alle Datensätze angezeigt.
(bzw. für (2) mit WHERE projekte.Start Is Null)
Logisch
Bloß: da weiß ich nicht, wie ich das in die IIF-Anweisung einbauen sollte.
Versuche zu (2) für die erwünschte Anzeige von "Projekt D" mit ...
WHERE (((Year([Start])) Like IIf([Forms]![frmProjekte]![cboJahr]="ALLE",IS NULL,[Forms]![frmProjekte]![cboJahr])))
... schlugen fehl.
Auch wenn ich statt "IS NULL" eingebe:
NULL
(LEER, also garnichts zwischen den Semikolons in der IIF-Anweisung
0
"" (zwei Anführungszeichen)
Meine Frage: wie bringe ich die zwei Kriterien (1) und (2) in die Abfrage für das Listenfeld? (wahrscheinlich komme ich um geschachtelte IIF-Anweisungen nicht rum)
Bin ich komplett auf dem falschen Dampfer und sollte ich lieber nach einer reinen VBA-Lösung suchen, die die Abfrage für das Listenfeld generiert?
Bin allen für Hinweise und Anregungungen dankbar.
Danke und Gruss an Alle |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|