query - sql y vba
Acceso a VBA: el nĂºmero de valores de consulta y los campos de destino no son los mismos (2)
Su cadena SQL se pasará al motor SQL que no sabe cómo interpretarme me!ComboProduct1
etc. Necesita insertar los valores de esas variables en la cadena:
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
Ponga comillas simples alrededor de las cadenas, pero no alrededor de los números. Algunos de sus campos no estaba seguro de si eran números o cadenas, lo adiviné. Debe tener cuidado con las fechas: compruebe que el motor SQL esté interpretando las fechas en el formato aaaa / mm / dd correctamente. Convertirá la cadena #2016/06/04#
en una fecha automáticamente para usted.
Estoy tratando de agregar datos de un formulario de acceso a una tabla. Cuando ejecuté el código sql, recibí un mensaje de error que decía que "el número de valores de consulta y los campos de destino no son los mismos".
este es mi código:
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
Un método más simple y directo es usar un conjunto de registros:
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