vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB & Datenbanken
SQL Abfrage BETWEEN Datum 
Autor: ennok_
Datum: 08.12.11 12:45

Hallo,

vorweg - ich habe sämtliche Beiträge und Tipps (auch von Dieter Otter) hier im Forum dazu gelesen, trotzdem funktioniert meine Abfrage nicht 100%ig .

In meiner Access Datenbank liegen Datensätze eines genzen Jahres vor. ( Im Format 01.01.2011)

Meine Anwendung soll Datensätze eines Zeitraumes auslesen und in einem Listview anzeigen.
Das Datum wird mittels DTPicker1 und 2 ausgewählt.

Funktioniert soweit ganz gut.

Das Problem: Ausgewählt ist ein Zeitraum vom 01.12.2011 bis 05.12.2011

ausgelesen werden diese entsprechenden Datensätze. ABER auch die vom 1.11. bis 5.11, 1.10. bis 5.9 usw.

verschiedene Varianten hab ich ausprobiert doch alle liefern das gleiche Ergebnis
datvon = Mid(frm_start.dtp_von.Value, 4, 2) & "/" & Left( _
  frm_start.dtp_von.Value, 2) & "/" & Right(frm_start.dtp_von.Value, 4)
datbis = Mid(frm_start.dtp_bis.Value, 4, 2) & "/" & Left( _
frm_start.dtp_bis.Value, 2) & "/" & Right(frm_start.dtp_bis.Value, 4)
SQL = "SELECT * FROM 2011 WHERE [E-Datum] BETWEEN #" & datvon & "# And #" & _
datbis & "# ORDER BY [Name 1]"
Variante 2

datvon = CDate(frm_start.dtp_von.Value)
datbis = CDate(frm_start.dtp_bis.Value)
SQL = "SELECT * FROM 2011 WHERE [E-Datum] between #" & _
  Format$(datvon, "m-d-yy") & "# AND #" & _
  Format$(datbis, "m-d-yy") & "#"
und Variante 3


datvon = CDate(frm_start.dtp_von.Value)
datbis = CDate(frm_start.dtp_bis.Value)
SQL = "SELECT * FROM 2011 WHERE [E-Datum] between '" + datvon + "'AND '" + _
  datbis + "'"
Es ist wohl mit sicherheit ein Formatierungs-Problem - nur wie ?


mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: SQL Abfrage BETWEEN Datum 
Autor: wb-soft
Datum: 08.12.11 13:02

Hi!

1. Die Verbindung von Strings soll immer mit "&", und nicht mit "+" erfolgen.

2. Wenn die Richtigkeit eines SQL-Statements überprüft werden soll, sind Variablen und Funktionen hinderlich.
Poste den fertigen String.

3. Nur zur Sicherheit: Hat das Feld E-Datum das Format Date/Time?


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: SQL Abfrage BETWEEN Datum 
Autor: Franki
Datum: 09.12.11 02:27

Hallo,

Variante 3 ist schon mal gut da das mit CDate in ein "echtes" Datum umgewandelt wird.

Access braucht das aber mit den # und vertauschtem Monat und Tag bei der Syntax im SQL String.

mal ganz ausführlich:

datVonTag = day(datvon)
datVonMonat = month(datvon)
datVonJahr = year(datvon)

Anfangsdatum = datVonMonat & "/" & datVonTag & "/" datVonJahr
gleiches für das Ende des Zeitraums.

Und in der SQL abfrage dann die # setzen und als Variabelen halt Anfangsdatum und Enddatum setzen. Oder halt gleich im SQL String umwandeln.

Wenn du das öfter brauchst, die Umwandlung halt in eine Funktion packen die dir dann als Ergebnis genau diesen Teil des SQL Strings zurück liefert.

Hört sich komplieziert an, ist es aber eigentlich nicht. Weil dann bist du mehr oder weniger auch unabhängig von Datumsformaten / Usereingaben wenn du verschiedene Kunden in anderen Ländern hast. Das US Datenformat wird immer verwendet, egal wie es auf welchem Rechner beim User angezeigt oder eingegeben wird. (Nur so ganz grob, stimmt im Detail so natürlich nicht)

Gruß,
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: SQL Abfrage BETWEEN Datum 
Autor: ennok_
Datum: 14.12.11 17:06

Vielen Dank


es funktioniert - und natürlich war es ein ganz simpler und logischer Fehler.

Das Datenbankfeld hatte den falschen Datentyp

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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