SELECT BETWEEN funktioniert nicht

gander

Mitglied
Hi Leute,
hab jetzt das problem das ich nicht nach einem Zeitraum suchen kann.
Wenn ich normla nach einen bestimmten datum frag daann zeigt er mir ergebnisse an, aber wenn ich ihm sage "SELECT * FROM TABELLE WHERE datum BETWEEN '12.12.2009' AND '15.12.2009'" dann bring er mir die fehler meldung 'Datentypen im Kriterienausdruck unverträglich', genau so wenn ich das datum in rauten schreib also so: '#15.12.2009#'. Wenn ich die einfachen anführungszeichen ' weg lass dann kommt die fehlermeldung "Syntaxfehler in Zahl in Abfrageausdruck 'datum BETWEEN 12.12.2009 AND 15.12.200' wieso lässt er da die 9 am schluss von 2009 weg?
wenn ich das datum im Format yyyyMMdd schreib also 20091215 dann bringt er keine fehlermeldung aber auch kein ergebnis, aber ich weiß das es einige ergebnisse gibt! Genau so bei yyyy-MM-dd und dd-MM-yyyy und bei MM-dd-yyyy auch. hab schon so ziemlich alles ausprobiert aber entweder es kommt ne fehlermeldung oder kein ergebnis....

Hierm mal der vb code vll hab ich ja da einen fehler:

Dim von As String
Dim bis As String
Dim vond As Date
Dim bisd As Date
von = tb1String.Substring(0, 10)
bis = tb1String.Substring(11)
vond = CDate(von)
bisd = CDate(bis)

SqlString = "SELECT * FROM Tabelle WHERE datum BETWEEN " & Format(vond, "yyyyMMdd") & " AND " & Format(bisd, "yyyyMMdd")
oder so
festerSqlString = stAcSelect & "WHERE bestell_datum BETWEEN '" & von & "' AND '" & bis & "'"


man man hab glaub echt schon ales ausprobiert :)

wäre echt froh wenn mir jemand helfen kann

aso und tb1String sieht so aus : 12.12.2009-15.12.2009
 
Zuletzt bearbeitet:
Hallo,
ich weiß nicht wie Du den SqlString weiter verwendest, aber wenn Du den über ein SqlCommand absetzt, nutze doch die SqlParameter zur Übergabe der Werte. Dabei musst Du Dich nicht mehr um das Format kümmern da es ja mit übergeben wird.

zum Beispiel:
festerSqlString = stAcSelect & "WHERE bestell_datum BETWEEN @Begin AND @End"
MySqlCommand(festerSqlString,Connectionstring)
MySqlCommand.Parameters.Add( _
"@Begin", SqlDbType.DateTime).Value = "12.12.2009"
MySqlCommand.Parameters.Add( _
"@End", SqlDbType.DateTime).Value = "15.12.2009"


Suche mal nach "parameter sqlcommand" auf MSDN.

Andre
 
he
danke dir für deine antwort, hab jetzt bischen geschaut im internet nach dem stichwort "parameter sqlcommand" und wenn ich das jetztz richtig verstanden hab kann man das nicht für Access datenbanken benutzen oder hab ich das falsch verstanden? Achso ich seh grad das ich ja oben gar nicht angegeben hab welche DB ich nutze :) ups. Also ich arbeite bei diese Abfrage mit Access. Gibt es da auch eine möglichkeit das iwie so ähnlich zu machen?

da wenn ich ja nur nach einemm bestimmten datum suche, er mir ein ergebnis liefert, hab ich es auch schon so versucht(auch wenn es eigentlich total umständlich ist) :
festerSqlString = stAcSelect & "WHERE bestell_datum BETWEEN (SELECT bestell_datum FROM Tabelle WHERE bestell_datum LIKE '" & von & "') AND (SELECT bestell_datum FROM Tabelle WHERE bestell_datum LIKE '" & bis & "')"
aber da bringt er mir die fehlermeldung "Höchstens ein Datensatz kann von dieser Unterabfrage zurückgegeben werden"
Also über weitere Tipps wäre ich echt dankbar

gruß
 
Hab zwar keine Ahnung von .Net, dafür jedoch von MS Access.
Versuch mal das Datumsformat #mm/dd/yyyy#
SQL:
SELECT *
FROM myTable
WHERE myDate BETWEEN #03/11/2010# AND #03/29/2010#

Desweiteren hier noch ein kleines Tutorial wie man Access-SQL-Fehler in VB am besten findet. Ist zwar VB6/VBA, jedoch ist es dasselbe Prinzip: http://wiki.yaslaw.info/wikka/VbaAccessDebugQuery
 
Zuletzt bearbeitet von einem Moderator:
Hab das Format auch schon ausprobiert. Danke für den Link damit hab ich mich gestern schon ne ganze weile rumgeschlagen, aber anscheinend nicht genug. Ich hab den Fehler jetzt, aber weiß leider nicht, oder noch nciht, wie ich ihn behenben kann. Und zwar, dein Format funktioniert(hab es gestern wahrscheinlich nicht in access getestet sondern nur in VB), aber wenn ich folgenden code schreib, ändert der mir das format einfach wieder um?
Code:
von = tb1String.Substring(0, 10)
bis = tb1String.Substring(11)
vond = CDate(von) 'hat im debugging modus den wert "#09/15/2009#"
bisd = CDate(bis) 'hat im debugging modus den wert "#09/20/2009#"

also hat es hier ja eigentlich das richtige format!

So, wenn ich jetzt aber den SQLString anschau der so aussieht:
festerSqlString = stAcSelect & "WHERE bestell_datum BETWEEN #" & vond & "# AND #" & bisd & "#"
hat der im debugging folgenden wert:
SELECT * FROM Tabelle WHERE bestell_datum BETWEEN #15.09.2009# AND #20.09.2009#
wieso ist hier auf einmal ein "." statt dem "/"
wenn ich aber im festerSQLString im debugging auf das "vond" schau steht da "#09/15/2009#"

Ich versteh das einfach nicht****?

an was kann das liegen?
 
ok hat sich erledigt, ein kollege hat mir gesagt das er sich an den "/" stört.
wahrscheinlich wandelt er das datum mautomatisch ins deutsche format um soald er ein datum sieht, deshalb übergebe ich das datum jetzt als string.
hab es jetzt so gemacht:
Dim von As String
Dim bis As String
Dim vond As Date
Dim bisd As Date
Dim vonf As String
Dim bisf As String

von = tb1String.Substring(0, 10)
bis = tb1String.Substring(11)
vond = CDate(von)
bisd = CDate(bis)
vonf = Format(vond, "#MM-dd-yyyy#").Replace("-", "/")
bisf = Format(bisd, "#MM-dd-yyyy#").Replace("-", "/")

festerSqlString = stAcSelect & "WHERE bestell_datum BETWEEN " & vonf & " AND " & bisf
 

Neue Beiträge

Zurück