SQL Select Befehl in vba access funktioniert richtig

  • Themenstarter Themenstarter Airmexx
  • Beginndatum Beginndatum
A

Airmexx

Sorry, das ich wieder mein problem hier posten muss...

habe folgenden SQL befehl
Visual Basic:
        sqlid = ("SELECT ID_urlaub FROM tbl_azubi_urlaub WHERE '(urlaub_von = " & txtvon & " AND urlaub_bis = " & txtbis & " AND Personalnummer = " & sqlper & ")'")
        Set rec3 = CurrentDb.OpenRecordset(sqlid, dbOpenSnapshot)
        idurlaub = rec3.Fields("ID_urlaub")

meine tabelle ID_urlaub hat folgenden auf bau:
ID_urlaub, Personalnummer, urlaub_von, urlaub_bis, Bemerkungen

das problem ist jetzt, das wenn mehrere einträge vorhanden sind, mit (natürlich) unterschiedlichen ID´s, nimmt er immer die erste ID, obwohl das Datum überall verschieden ist

danke...
 
Hatten wir die selbe Anfrage heute nicht schon mal in nem anderen Thread?
Selbes Problem wie dort schon besprochen. Du darst bei den Klammern vom WHERE keine ' setzen.
 
leider nicht.
von den stand von heute morgen, hätte ich das so geschrieben.
Visual Basic:
sqlid = ("SELECT ID_urlaub FROM tbl_azubi_urlaub WHERE '(urlaub_von = '" & txtvon & "' AND urlaub_bis = '" & txtbis & "' AND Personalnummer = '" & sqlper & "')'")

Visual Basic:
sqlid = ("SELECT ID_urlaub FROM tbl_azubi_urlaub WHERE '(urlaub_von = " & txtvon & " AND urlaub_bis = " & txtbis & " AND Personalnummer = " & sqlper & ")'")

so wie es jetzt da steht ist es schon fast richtig, aber irgendwas an meiner logik in select muss falsch sein zb. in meiner tabelle hab ich folgende datensätze:
ID_urlaub Personalnummer urlaub_von urlaub_bis Bemerkungen
144 0000 23.01.... 24.01.....
145 ...........................
146............................
147...........................

aber alle datum´s sind verschieden, und wenn ich die abfrage auf zb. 146 machen will bekomme ich immer die 144
 
Gib mal den kompletten SQL-String aus. Dann nimm ihn und schick ihn in Access in den Abfrageeditor. Geht er dort?
 
Wenn du schon dabei bist: Poste den SQL-String auch hier bitte.

@yaslaw: Ist ja auch die einzige sinnvolle Variante
 
ja er funktioniert dort, ich bekomme aber mehrere id´s angezeit

SELECT ID_urlaub FROM tbl_azubi_urlaub WHERE '(urlaub_von = 08.07.2010 AND urlaub_bis = 23.07.2010 AND Personalnummer = 503524)'

aber ist die abfrage nicht eindeutig genug?
irgendwie guckt er nach personalnummer wie es aussieht, aber nicht nach den daten(datum´s)
 
So ich hab jetzt deine Datenbank schnell nachgebaut und probiert. Ich seh nur meinen ersten Post bestätigt: Nimm die ' bei '( und )' heraus und es wird gehen. Immer wenn du ' ' verwendest wird der Inhalt zwischen den Hochkommas nicht vom SQL-Parser interpretiert, was bei dir bedeutet das nach dem WHERE keine Bedingung folgt. Resultat: Du bekommst natürlich alle Werte aus der Datenbank. Und wenn du alle Werte bekommst und nur den ersten Abfragst wird das immer der erste aus der Datenbank sein.
 
item: Nimm endlich die ' da raus. Stand im alten Thread schon etwa 10 mal!

item: Ansonsten stimmt das schon. Die ausgegeben Daten, haben die andere Urlaubsdatums?

item: das saubere Datumsformat für SQL ist bei Access #mm/dd/yyyy#

SQL:
SELECT 
	ID_urlaub 
FROM 
	tbl_azubi_urlaub 
WHERE 
	urlaub_von = #07/08/2010#
	AND urlaub_bis = #07/23/2010#
	AND Personalnummer = 503524
 

Neue Beiträge

Zurück