Bericht in Access - Problem mit Zeitstempel

martinpriebe

Erfahrenes Mitglied
Hallo,

ich habe ein Problem mit einer Abfrage.
Ich habe einen Bericht der als Datenquelle eine Abfrage hat.

Diesen Abfrage grenze ich ein ..
"where p.zeitstempel between datum_von AND datum_bis"

Führe ich die Abfrage aus, fragt er nach den Parametern, ich gebe sie ein und erhalte das Ergebniss.

Führe ich den Bericht aus, fragt er mich ebenfalls nach den Parametern und hier geht es immernoch.


<Setzte ich nun per VBA die Parameter.
Set db = CurrentDb
Set query = db.QueryDefs(Me.RecordSource)
sql = query.sql
sql = Replace(sql, "datum_von", "'01.01.1900'")
Me.RecordSource = sql>

Dann bekomme ich eine Typenunverträglichkeit.
Also ändere ich die Abfrage mittel "Format"

<Where p.zeitstempel between Format(datum_von,'dd.mm.yyyy') AND Format(datum_bis,'dd.mm.yyyy')>
Dann steht in etwa sowas drin
..
.. Where p.zeitstempel between Format("01.01.1900",'dd.mm.yyyy') ..

Nur da bekomme ich das falsche Ergebniss.

Was stimmt da nicht ?

P.S.
ich nutze Access 2002 als Frontend.
Oracle Datenbank Backend.
Ich muss des SQL string der Abfrage verändern da ich den Bericht über eine Com Schnittstelle aufrufe und die Abfrage aus mehreren Subqueries besteht.
Da kann ich keine allg. Where Klausel übergeben.


danke im vorraus
Martin
 
Mach aus dem SQL doch folgendes:

anstatt
SQL:
...
where p.zeitstempel between datum_von AND datum_bis"

kannst du folgendes schreiben (Oracle-Syntax))

SQL:
where p.zeitstempel between TRUNC(TO_DATE(datum_von,'DD.MM.YYYY')) AND TRUNC(TO_DATE(datum_bis,'DD.MM.YYYY')+1)-1/86400

Dann kannst du in dem SQL-String die beiden Datums-Platzhalter ersetzen.
Besser wäre es natürlich wenn du es mit Bind-Variablen machen kannst.

Markus
 
Hallo,

leider bekomme ich da einen Fehler.
"Undefinierte Funktion Trunc in Ausdruck"

Auch bei to_Date bringt er diese Meldung!
 
erledigt

:Hallo,

statt ..
:<p.zeitstempel between Format(datum_von,'dd.mm.yyyy')
:AND Format(datum_bis,'dd.mm.yyyy')>


p.zeitstempel between #datum_von# AND #datum_bis#

nur aufpassen das datum_von und bis im Format 01/01/1900 übergeben werden.
Ohne Anführungszeichen (")

mfg
 

Neue Beiträge

Zurück