Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: AllenWalker am August 02, 2013, 16:03:50

Titel: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: AllenWalker am August 02, 2013, 16:03:50
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
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: DF6GL am August 02, 2013, 17:01:14
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.

Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: AllenWalker am August 02, 2013, 17:55:44

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)
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: DF6GL am August 02, 2013, 19:01:46
AND P.GesprDatum = "  & Format(Me![GesprDatum], "\#yyyy-mm-dd\#")
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: AllenWalker am August 02, 2013, 20:12:20
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'

Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: DF6GL am August 02, 2013, 20:31:30
Richtig abschreiben wäre vorteilhaft...
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: AllenWalker am August 02, 2013, 21:30:15
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.
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: bahasu am August 02, 2013, 22:28:47
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
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: AllenWalker am August 03, 2013, 08:59:55
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.
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: MzKlMu am August 03, 2013, 09:10:54
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])
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: bahasu am August 03, 2013, 12:22:49
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
Titel: Re: Wert aus Feld mit Doppelklick-Ereignis
Beitrag von: database am August 04, 2013, 11:51:01
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