Mit SQL Daten auslesen

Katzenkind

Mitglied
Ich habe hier mein SQL und möchte gerne in VB sowie in Access Daten auslesen können. Und zwar ein Datum. Aber BETWEEN...AND wird nicht genommen, gibt es noch eine andere Lösung? Ich bekomme immer eine Fehlermeldung: "Datentypen in Kriterienausdruck unverträglich."

Code:
SELECT *
FROM Tabelle1
INNER JOIN Tabelle2
ON Tabelle1.Feld1 = Tabelle2.Feld2
WHERE Tabelle2.Feld2  BETWEEN '01.01.2000' AND '01.01.2050'

Ich bin ratlos... :confused:
 
'01.01.2000' ist ein String.
Feld2 ist ein Datum (wenn ich Dich richtig verstehe)

Irgendwie mußt Du deiner DB ( Ist das Access?) mitteilen, dass '01.01.2000' ( und das andere entsprechend) eine Datumsangabe ist oder Du mußft Feld2 in einen String konvertieren.

Da ich Deine DB nicht kenn und die Funktionen von ACCESS ebensowenig kann ich dir nicht wirklich weiter helfen.

Unter Oracle könnte man beispielsweise sagen
....
WHERE
to_char(FELD2,'dd.mm.yyyy') BETWEEN ....

VORSICHT:
Wenn Du in Strings konvertiertst solltest Du übrigens in das Format 'JJJJ.MM' wandeln, damit der '01.01.2000' nicht vor dem '21.12.1980' kommt

vop
 
Langsam wird es

Langsam aber doch komme ich immer näher zu meinem Ziel ;p

Hier mein jetztiger SQL. In Access funktioniert er, jetzt muss ihn nurmehr auf VB abstimmen, aber dazu brauche ich einen Denkanstoß.

Code:
SELECT *
FROM Tabelle1 INNER JOIN Tabelle2 
ON Tabelle1.Feld1= Tabelle2.Feld2
WHERE Tabelle2.Feld2 Between #1/1/2000# And #1/1/2030#;

Ich möchte jetzt das in VB das Datum durch zwei Variablen ersetzt wird.
In etwa so:

Code:
Dim Datum1 as Date
Dim Datum2 as Date

[...]

SQL="SELECT * FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.Feld1= Tabelle2.Feld2
WHERE Tabelle2.Feld2 BETWEEN Datum1 AND Datum2"

Ich weiß es ist nicht ganz richtig aber vielleicht kann mir jemand sagen wie es richtig gestellt wird.

Danke schonmal im Vorraus!
 
Code:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Datum1 as Date
Dim Datum2 as Date
Dim strSQL as String


Datum1 = Date()-1
Datum2 = Date()

Set db = CurrentDb
strSQL = "SELECT * "
strSQL = strSQL & "FROM Tabelle1 INNER JOIN Tabelle2 "
strSQL = strSQL & "ON Tabelle1.Feld1= Tabelle2.Feld2 "
strSQL = strSQL & "WHERE Tabelle2.Feld2 Between " & Datum1 & " And " & Datum2 & ";"

Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)

Mit rs. kannst du nun auf die Abfrage zugreifen.

Achtung: unter Verweise muss DAO eingeschaltet sein.

Viele Grüsse
 
:( Nur leider verwende ich ADO...

Hier mein Code unter VB... Wie soll ich den jetzt optimieren?!

Code:
strSQL = "SELECT * FROM Anlagen INNER JOIN Ueberpruefungstabelle ON Anlagen.ID = Ueberpruefungstabelle.anlagen_id" _
             & " WHERE Ueberpruefungstabelle.Datum_fällig  Between '#" & Format(DatumHeute, "d-m-yyyy") & _
            "#' AND '#" & Format(Intervall, "d-m-yyyy") & "#'"
 
Dann machs doch einfach in ADO :)

Code:
Dim conn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Datum1 As Date
Dim Datum2 As Date
Dim strSQL As String


Datum1 = Date - 1
Datum2 = Date

Set db = CurrentProject.Connection
strSQL = "SELECT * "
strSQL = strSQL & "FROM Tabelle1 INNER JOIN Tabelle2 "
strSQL = strSQL & "ON Tabelle1.Feld1= Tabelle2.Feld2 "
strSQL = strSQL & "WHERE Tabelle2.Feld2 Between " & Datum1 & " And " & Datum2 & ";"
rs.Open strSQL, conn, adOpenDynamic, adLockPessimistic

Konnte es leider nicht testen.

Viele Grüsse
 
Zurück