Hallo,
Ich habe einem Feld (dtTermin) aus einem Unterformular das Ereignis Doppelklick zugewiesen.
In meinem VBA-Code möchte ich für eine SQL-Abfrage auf den Wert aus dem Feld dtTermin zugreifen.
Bekomme eine Fehlermeldung wenn ich es mit Me.dtTermin versuche.
Danke sehr,
Gruß,
AllenWalker
Hallo,
meine Glaskugel ist zur Zeit geschmolzen... Bitte poste den Code und den SQL-String der Abfrage (mit Copy&Paste) sowie die Fehlermeldung, damit eine konkrete Problemlösung erfolgen kann.
Private Sub GesprDatum_DblClick(Cancel As Integer)
Dim SQLAbfrage As String
MsgBox ("Klient: " & Me.KliID)
SQLAbfrage = "SELECT P.GesprDatum, P.Honorar " & _
"FROM Protokolle P " & _
"WHERE P.KliID = " & Me.KliID & ";"
MsgBox (SQLAbfrage)
End Sub
Hinter dem WHERE möchte ich gerne noch die folgende Zeile einfügen
AND P.GesprDatum = ...; (Feld mit dem Doppelklick Ereignis)
AND P.GesprDatum = " & Format(Me![GesprDatum], "\#yyyy-mm-dd\#")
Habe meine Prozedur in VBA erweitert. Beim Ausführen bekomme ich die gewünschte SQL Abfrage angezeigt aber
beim Recordset bekomme ich eine Fehlermeldung und es wird mir angezeigt dass ein Ziffer am Ende des Datums fehlt.
Private Sub GesprDatum_DblClick(Cancel As Integer)
Dim SQLAbfrage As String
MsgBox ("Klient: " & Me.KliID)
SQLAbfrage = "SELECT P.GesprDatum, P.Honorar " & _
"FROM Protokolle P " & _
"WHERE P.KliID = " & Me.KliID & " " & _
"AND P.GesprDatum = " & Format(Me![GesprDatum], "dd.mm.yyyy") & ";"
MsgBox (SQLAbfrage)
' Menue: Extras -> Verweise Microsoft DAO 3.xx Object Library muss aktiv sein!
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim var1, var2
Set db = CurrentDb ' Datenbank definieren
Set rs = db.OpenRecordset(SQLAbfrage) ' Recordset öffnen
If Not rs.EOF Then rs.MoveFirst ' Zum ersten Datensatz
Do While Not rs.EOF ' Schleife über die Datensätze des Recordsets
var1 = rs!GesprDatum ' Wert auslesen
var2 = rs!Honorar
MsgBox ("Datum " & var1 & " Honorar " & var2)
rs.MoveNext 'nächsten Datensatz ansteuern
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
Die folgende Fehlermeldung bekomme ich:
Zitat
Syntaxfehler in Zahl in Abfrageausdruck 'P.KliID = 7 AND P-GesprDatum = 09.05.201'
Richtig abschreiben wäre vorteilhaft...
Zitat von: DF6GL am August 02, 2013, 20:31:30
Richtig abschreiben wäre vorteilhaft...
Was meinst du damit?
Wenn du die Fehlermeldung meinst, dabei handelt es sich um die Meldung die ich bekomme wenn die Zeile
ZitatSet rs = db.OpenRecordset(SQLAbfrage) ' Recordset öffnen
erreicht wird.
Hi,
die Kombination von Deiner Zeile und der Angabe von Franz ergibt:
SQLAbfrage = "SELECT P.GesprDatum, P.Honorar " & _
"FROM Protokolle P " & _
"WHERE P.KliID = " & Me.KliID & _
" AND P.GesprDatum = " & Format(Me![GesprDatum], "\#yyyy-mm-dd\#") & ";"
Allerdings bin ich mir unsicher, was mit "Protokolle P" gemeint ist. Ist dort ein Leerzeichen zuviel, oder fehlt ein "_" oder , oder ggf [] oder as {damit gibt P.... Sinn}?
Harald
Zitat
Allerdings bin ich mir unsicher, was mit "Protokolle P" gemeint ist. Ist dort ein Leerzeichen zuviel, oder fehlt ein "_" oder , oder ggf [] oder as {damit gibt P.... Sinn}?
Das P soll ein Alias darstellen für die Tabelle Protokolle.
Zitat
" AND P.GesprDatum = " & Format(Me![GesprDatum], "\#yyyy-mm-dd\#") & ";"
Ich muss aber das Datum dem Datumformat in der Tabelle anpassen.
Hallo,
ZitatDas P soll ein Alias darstellen für die Tabelle Protokolle.
daher sollte man Code nie abtippen, sondern immer kopieren um zusätzliche irritierende Tippfehler zu vermeiden, Du hast nämlich das As vergessen.
"FROM Protokolle As P " & _
ZitatIch muss aber das Datum dem Datumformat in der Tabelle anpassen.
nein, musst Du nicht, bzw. darfst Du nicht. Das Format ist im Grunde bedeutungslos. Gespeichert ist ein Datum ohnehin als Zahl. Daher funktioniert auch folgendes:
AND CDbl(P.GesprDatum) = " & CDbl(Me![GesprDatum])
Und wenn man bei Datumswerten mit Zeitanteilen nur das Datum vergleichen will, geht auch das:
AND Int(P.GesprDatum) = " & Int(Me![GesprDatum])
Hallo Klaus,
zum fehlenden as:
Habe heute probiert und dabei gelernt, dass der Begriff "as" auch geschlabbert werden kann.
Die Abfrage (a2003) funktioniert trotzdem. {An einen Anblick ohne as muss ich mich allerdings erst noch gewöhnen ;) }
Harald
Hallo,
siehe zur Übergabe eines Datums an einen SQL-String in VBA auch mal folgendes:
http://www.donkarl.com?FAQ6.8 (http://www.donkarl.com?FAQ6.8)
HTH