2017-04-07 6 views
0

Ich habe eine Datenbank innerhalb von Microsoft Access und damit ein Formular erstellt.
Ich habe eine Schaltfläche an das Formular angehängt und wenn es geklickt wird, möchte ich einen neuen Datensatz in die Tabelle customerHeader einfügen.
Es gibt vier Felder innerhalb dieser Tabelle, von denen eine eine automatische Nummerierung ist. In meiner SQL-Anweisung schließe ich die Bestellnummer nicht ein, da es sich um ein Autofeld handelt.
Wenn ich versuche, auf die Schaltfläche zu klicken und das On-Click-Ereignis ausgeführt wird, erhalte ich die Fehlermeldung, dass Microsoft Access die Datensätze in der Append-Abfrage nicht anhängen kann.Microsoft Access VBA INSERT SQL-Anweisung

Irgendwelche Ideen, ich habe überall gesucht und ich konnte die Lösung nicht finden.

Private Sub addOrder_Click() 
    Dim mySql As String 
    Dim rowNum As Integer 
    Dim recCount As Long 
    Dim orderNumber As Long 
    Dim myBool As Boolean 


    Dim todayDate As Date 

    todayDate = CDate(Date) 

    myBool = False 


    MsgBox todayDate 

    rowNum = Form.CurrentRecord 
    rowNum = CInt(rowNum - 1) 



    'DoCmd.GoToRecord , , acNewRec 
    mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (" & todayDate & "," & rowNum & "," & myBool & ")" 

    DoCmd.RunSQL mySql 

    Me!orderNum.Requery 
+0

Für sich allein funktioniert die SQL, obwohl Sie '#' um das Datum hinzufügen möchten - '(#" & todayDate & "#," '(möglicherweise müssen Sie auch mit der Datumsformatierung herumalbern) abhängig von deiner Örtlichkeit - ich hasse Daten in Access.) Was genau bin ich sagage gibt es? In der Regel heißt es - 'MS Access setzte x Feld (e) auf Null, weil ein Konvertierungsfehler aufgetreten ist, und es wurden keine x Einträge hinzugefügt ...' –

+0

Es heißt konkret "Microsoft Access Set 0 field (s) zu Null aufgrund eines Typs Konversion Fehler, und es wurde nicht 1 Datensatz (s) zu der Tabelle aufgrund von Schlüsselverletzungen, 0 Datensatz (en) aufgrund von Sperrverletzungen und 0 Datensätze aufgrund der Validierungsregel hinzufügen Verstöße ". Ich werde versuchen, # zum Datum –

Antwort

0

Sie haben nicht zu viel um - nur die Sequenz ISO verwenden für das Format des String-Ausdrucks für den Datumswert:

mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (#" & Format(todayDate, "yyyy\/mm\/dd") & "#," & rowNum & "," & myBool & ")" 

es aber es ist heute, verwenden Sie einfach:

mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (Date()," & rowNum & "," & myBool & ")" 
+0

hinzuzufügen Ich habe gerade das jetzt probiert und leider bekomme ich den gleichen Fehler wie zuvor. –

+0

Dann ist etwas anderes los. Versuchen Sie, die Werte manuell einzufügen, und suchen Sie den fehlerhaften Wert. – Gustav

+0

"Schlüsselverletzung" bedeutet, dass Sie versuchen, einen doppelten Wert in ein Feld mit einem eindeutigen Index einzufügen. – Gustav