Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Paddy24 am Februar 04, 2021, 12:44:05

Titel: INSERT INTO schneidet Datum ab
Beitrag von: Paddy24 am Februar 04, 2021, 12:44:05
Hallo,

ich möchte über einen Button Daten aus Feldern in eine Tabelle übergeben, aus irgendeinen Grund schneidet er beim Datum aber die letzte Zahl ab, sodass dann anstatt 01.02.2021 .... 01.02.202 kommt und er mir eine Fehler raushaut:

Laufzeitfehler '3075':

Syntaxfehler in Zahl in Abfrageausdruck '01.02.202'.

Anbei die Prozedur:
Dim strSQL As String

strSQL = "INSERT INTO tblKontaktpersonen (per_id_f, KontPer_KontaktPersID, KontPer_KontaktDatum, KontPer_Notiz) VALUES " _
            & "(" & Me.per_id & ", " & Me.cboNeueKontaktpersonSuchen & ", " & Me.KontPer_KontaktDatum & ", " _
            & Me.KontPer_Notiz & ");"

CurrentDb.Execute strSQL, dbFailOnError
Titel: Re: INSERT INTO schneidet Datum ab
Beitrag von: MzKlMu am Februar 04, 2021, 13:39:40
Hallo,
ein Datum muss SQL gerecht übergeben werden. Entweder in US Format (MMTTJJJJ) oder ISO Format (JJJJMMTT).
Siehe hierzu:
http://www.donkarl.com?FAQ6.8 (http://www.donkarl.com?FAQ6.8)

Der Sinn einer solchen Abfrage erschießt sich mir aber nicht. Du verwendest doch gebundene Formular da sollte eine solche Abfrage nicht notwendig sein.
Titel: Re: INSERT INTO schneidet Datum ab
Beitrag von: Paddy24 am Februar 04, 2021, 15:03:22
Hallo Klaus,

ich habe das Listenelement direkt auf dem Formular frmPerson, darunter wollte ich jetzt eine Kombobox hinzufügen über der ich Personen suchen kann, die ich der Hauptperson ebenfalls als Kontaktperson hinzufügen möchte.

Da ich aber für die Tabelle noch die Daten für das Datum und Notiz füllen möchte, müssen die Felder auch auf das Register. Beim hinzufügen der Felder fragte mich Access dann, wie die Verbindung mit per_id sein soll, aber beide Optionen passen nicht wirklich. Daher ist meine nächste Option die Daten per 2 ungebundene Felder zu beschaffen und in der Tabelle zu hinterlegen.

Im 2ten Schritt soll dann noch die Option der Neuanlage hinzukommen. Finde ich also die Person nicht in der Kombobox, dann muss ich sie neu anlegen. Tue ich das dann über einen Button auf dem Reigster für die Kontaktpersonen, dann soll die neue Person angelegt werden (Stammdaten) und gleich den Personen-Status "Kontaktperson" bekommen, welches als Fremdschlüssel an der Tabelle "Person" hängt.

 
Titel: Re: INSERT INTO schneidet Datum ab
Beitrag von: Paddy24 am Februar 05, 2021, 17:18:05
Zitat von: MzKlMu am Februar 04, 2021, 13:39:40Hallo,
ein Datum muss SQL gerecht übergeben werden. Entweder in US Format (MMTTJJJJ) oder ISO Format (JJJJMMTT).
Siehe hierzu:
http://www.donkarl.com?FAQ6.8 (http://www.donkarl.com?FAQ6.8)

Vielen Dank für den Link, es scheint so zu funktionieren. Allerdings gibt er mir trotzdem noch eine Fehlermeldung und die kann ich so nicht nachvollziehen. Leider lässt es sich auch nicht richtig debuggen:

Laufzeitfehler '3061':
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

Ich rufe genau 4 Parameter ab und übergebe auch genau 4 Parameter oder braucht eins der Felder, die ich abfrage mehrere Parameter übergeben?

Private Sub cmdAddKontaktperson_Click()
'TODO: Sicherheitsabfrage ob Person ausgewählt wurde hinzufügen

Dim strDatum As String
Dim KontaktPersID As Long
Dim strSQL As String

KontaktPersID = CLng(Me.cboNeueKontaktpersonSuchen)

strSQL = "INSERT INTO tblKontaktpersonen (per_id_f, KontPer_KontaktPersID, KontPer_KontaktDatum, KontPer_Notiz) VALUES " _
            & "(" & Me.per_id & _
            ", " & KontaktPersID & _
            ", " & Format(Me.KontPer_KontaktDatum, "\#yyyy\-mm\-dd\#") & _
            ", " & Me.KontPer_Notiz & ");"

CurrentDb.Execute strSQL, dbFailOnError

End Sub
Titel: Re: INSERT INTO schneidet Datum ab
Beitrag von: MzKlMu am Februar 05, 2021, 17:21:44
Hallo,
KontPer_Notiz ist ja ein Text und da müssen Hochkomma drum.
", '" & Me.KontPer_Notiz & "')"Das letzte Semikolon kann entfallen.
Titel: Re: INSERT INTO schneidet Datum ab
Beitrag von: Paddy24 am Februar 05, 2021, 18:35:49
Vielen Dank, das hat funktioniert.