Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Wert aus Feld mit Doppelklick-Ereignis

Begonnen von AllenWalker, August 02, 2013, 16:03:50

⏪ vorheriges - nächstes ⏩

AllenWalker

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

DF6GL

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.


AllenWalker


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)


AllenWalker

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'



AllenWalker

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.

bahasu

#7
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
Servus

AllenWalker

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.

MzKlMu

#9
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])
Gruß Klaus

bahasu

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
Servus

database

Hallo,

siehe zur Übergabe eines Datums an einen SQL-String in VBA auch mal folgendes:

http://www.donkarl.com?FAQ6.8

HTH