maik87
Goto Top

Datum für WHERE-Bedingung aus Unterabfrage

Hallo zusammen,

ich möchte das Ergebnis einer Unterabfrage als Bedingung für die Hauptabfrage nutzen. Mein Code (der leider nicht funktioniert) sieht so aus:

Neu: Wenn([art_anl_dat]<(select value from dbparam where param = 'DefineDateNeu');"0";"1")

In der Tabelle dbparam wir das Datum als string gespeichert, in der anderen Tabelle als Timestamp.
Wie muss ich den Code nun ändern, dass er läuft?


Danke euch schonmal!!

Content-ID: 134971

Url: https://administrator.de/contentid/134971

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

TsukiSan
TsukiSan 02.02.2010 um 16:24:56 Uhr
Goto Top
mach mich schlau und gib ein paar mehr details rüber(Beispiele!).
Meine Glaskugel hat heute Schwierigkeiten.
Ich vermute nur aus der Ferne, dass es sich bei dir um VBA - Excel dreht.

Gruss
Tsuki
Maik87
Maik87 02.02.2010 um 17:32:44 Uhr
Goto Top
Scheinbar ist deine Glaskugel blind.
Die Kathegorie lautet

          • Startseite
          • Windows
          • Office
          • Access
          • Frage

face-wink

Ich bastel eine ganz normale Abfrage über das "Zusammenklickding"
Biber
Biber 02.02.2010 um 21:00:06 Uhr
Goto Top
Moin maik87,

Ich bastel eine ganz normale Abfrage über das "Zusammenklickding"
Ich weiß ja nicht... "eine ganz normale Abfrage über das "Zusammenklickding"... ist für mich ein Widerspruch in sich...
Aber okay... heute beschleunigen wir ja auch das Wirtschaftswachstum per Gesetz...

Wenn ich dieses Gestrunkele richtig interpretiere...
Neu: Wenn([art_anl_dat]<(select value from dbparam where param = 'DefineDateNeu');"0";"1")
..dann müsste doch das, was deine Access-Stützräder irgendwie zum Eiern bringt dieses hier sein
(select value from dbparam where param = 'DefineDateNeu')
..und daran fallen mir zwei Sachen auf, die ich mal probeweise wegeditieren würde:
1. Der Vergleichsstring für den Inhalt des Feldes param ist im Gegensatz zu allen anderen Vergleichsstrings in einfachen statt doppelten Anführungszeichen
2. Das Ergebnis value , sollte es denn zurückkommen, ist nach deinem Bekunden ein Char/VarChar-Wert "in Datumsformat".
Wenn du den Vergleichen willst mit einem Datum, dann muss (mindestens) einen der beiden Werte konvertieren.
Falls du aus dem Wert value also ein datevalue machen willst... wie könnte wohl die Funktion dafür heißen?
Richtig! die heißt "DateValue()".
In einem früheren Leben war ich bestimmt Access-Assistent...

Ändere doch mal spassmäßig das "select value from dbparam where bla" in "select DateValue(value) from dbparam WHERE bla"
Und wie ich Unterschleißheimer einschätze wird die Funktion DateValue() bestimmt in der Stützrad-Variante zu DatWert() ...
(Deren deutsche Funktionen sehen immer aus wie das, was beim Scrabble übrig bleibt, nur liebloser)

Grüße
Biber
Maik87
Maik87 03.02.2010 um 10:15:38 Uhr
Goto Top
Zitat von @Biber:

..und daran fallen mir zwei Sachen auf, die ich mal probeweise wegeditieren würde:
1. Der Vergleichsstring für den Inhalt des Feldes param ist im Gegensatz zu allen anderen
Vergleichsstrings in einfachen statt doppelten Anführungszeichen

ändern bringt nix...

2. Das Ergebnis value , sollte es denn zurückkommen, ist nach deinem Bekunden ein Char/VarChar-Wert
"in Datumsformat".
Wenn du den Vergleichen willst mit einem Datum, dann muss (mindestens) einen der beiden Werte konvertieren.
Falls du aus dem Wert value also ein datevalue machen willst... wie könnte wohl die
Funktion dafür heißen?
Richtig! die heißt "DateValue()".

Undefinierte Funktion DateValue in Ausdruck.

Und wie ich Unterschleißheimer einschätze wird die Funktion DateValue() bestimmt in der Stützrad-Variante zu
DatWert() ...

Undefinierte Funktion DatWert in Ausdruck.


Gruß
KalleAtWork
KalleAtWork 03.02.2010 um 11:09:24 Uhr
Goto Top
Ich wollte das gerade nachstellen und stolpere über den Feldnamen "value". Den darf ich bei meinem Access 2007 nicht verwenden. Evtl. den auch mal ändern.

Und so funktioniert es bei mir:

Wenn([art_anl_dat]<(select cdate([mydate]) from dbparam where param = 'DefineDateNeu');"0";"1")
Biber
Biber 03.02.2010 um 11:46:00 Uhr
Goto Top
Moin Kalle@Work,

bei mir (Access 2002/2003) funktionieren sowohl cDate("datumsstring") wie auch DateValue("DatumsString").

gibt es bei Access 2007 die DateValue() nicht mehr?

beispiel-Statement unter ACC2002:
SELECT  DateValue("20.11.2006") as DateValue , Month( DateValue("20.11.2006")) as monthDV,  Day( DateValue("20.11.2006")) as DayDV,  
cDate("20.11.2006") as cDate , Month( cDate("20.11.2006")) as monthCD,  Day( cDate("20.11.2006")) as DayCD  
[ geht auch ganz ohne .."FROM Tabelle .."]

Ausgabe as should do.
DateValue	monthDV	DayDV	cDate	monthCD	DayCD
20.11.06	11	20	20.11.06	11	20

Bei direktem Einfügen von "ZDatum()" oder "DatWert()" in das SQL-Eingabefenster bekomme ich natürlich auch "unbekannte Funktion ZDatum()".

Grüße
Biber
KalleAtWork
KalleAtWork 03.02.2010 um 11:57:13 Uhr
Goto Top
Ok, Du warst in der SQL-Ansicht, ich in der Entwurfsansicht. Wenn ich deine Syntax in der SQL-Ansicht eingebe konvertiert Access das beim Umschalten in die Entwurfsansicht in meine Syntax. Insofern haben wir beide Recht und Maik87 hat wahrscheinlich Deine Syntax in der Entwurfsansicht ausprobiert.
Maik87
Maik87 03.02.2010 um 12:02:36 Uhr
Goto Top
Zitat von @KalleAtWork:
Maik87 hat wahrscheinlich Deine
Syntax in der Entwurfsansicht ausprobiert.

Japp hat er face-wink

Hab es nun so zum laufen bekommen:
Neu: Wenn(DatWert([art_anl_dat])<(select datevalue(value) from dbparam where param ="DefineDateNeu");"0";"1")  

Danke euch allen für die Hilfe!!