vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
UNION, 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
UNION, NULL-Werte in Datumsfeldern1.126db-ernie03.01.07 13:38
Re: UNION, NULL-Werte in Datumsfeldern564db-ernie06.01.07 15:25

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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