| |
VB & DatenbankenRe: 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 | |
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 | |
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 | |
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
| |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
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
|
|