2016-06-03 8 views
1

Ich versuche, Daten aus einem Access-Formular zu einer Tabelle hinzuzufügen. Als ich SQL-Code lief, erhielt ich eine Fehlermeldung, dass die Anzahl der Abfragewerte und Zielfelder nicht identisch sind.Access VBA: Anzahl der Abfragewerte und Zielfelder sind nicht identisch

dies ist mein Code:

Private Sub CmdAddtoProductionDetails_Click() 
    Dim StrSql As String 
    StrSql = "Insert Into test1 (ProductName, [Lot Number], ProductionDate, Quantity, Unit, Client) Values(me! ComboProduct1, me! LotNoProduct1, me! txtDate, me! Product1Quantity! me!ComboProduct1Unit, me! ComboProduct1Client)" 
    CurrentDb.Execute (StrSql) 
End Sub 

Antwort

0

Ihr wird SQL-Zeichenfolge an den SQL-Engine übergeben werden, die nicht weiß, wie me!ComboProduct1 etc. Sie die Werte dieser Variablen in den String einfügen müssen, um interpretieren:

Private Sub CmdAddtoProductionDetails_Click() 
    Dim StrSql As String StrSql = "Insert Into test1 (ProductName, [Lot Number], ProductionDate, Quantity, Unit, Client)" & _ 
    " Values('" & me! ComboProduct1 & "', '" & me! LotNoProduct1 & "', #" & Format(me! txtDate, "yyyy/mm/dd") & "#, " & CStr(me! Product1Quantity) & ", '" & me!ComboProduct1Unit & "', '" & me! ComboProduct1Client & "')" 
    CurrentDb.Execute (StrSql) 
End Sub 

Setzen Sie einzelne Anführungszeichen um Strings, aber nicht um Zahlen. Bei einigen deiner Felder war ich mir nicht sicher, ob es sich um Zahlen oder Zeichenfolgen handelte - ich habe eine Vermutung gemacht. Sie müssen mit Datumsangaben vorsichtig sein - überprüfen Sie, ob die SQL-Engine Daten im JJJJ/MM/TT-Format richtig interpretiert. Es wandelt die Zeichenfolge #2016/06/04# automatisch in ein Datum um.

1

Ein einfacheres und direkteres Verfahren ist einen Re-Cord zu verwenden:

Private Sub CmdAddtoProductionDetails_Click() 

    Dim rs As DAO.Recordset 

    Set rs = CurrentDb.OpenRecordset("Select Top 1 * From test1") 
    rs.AddNew 
     rs!ProductName.Value = Me!ComboProduct1.Value 
     rs![Lot Number].Value = Me!LotNoProduct1.Value 
     rs!ProductionDate.Value = Me!txtDate.Value 
     rs!Quantity.Value = Me!Product1Quantity.Value 
     rs!Unit.Value = Me!ComboProduct1Unit.Value 
     rs!Client.Value = Me!ComboProduct1Client.Value 
    rs.Update 
    rs.Close 

    Set rs = Nothing 

End Sub