Código VBA para actualizar valor en tabla.

Me gustaría que alguien me ayudara con el siguiente código, que parece que hay algún problema con algún signo.

Private Sub Mes_Para_Informe_GotFocus()

If Not IsNull(Me.Ajuste_Horas) Then
DoCmd.SetWarnings False
Dim Instruccion As String
Instruccion = "Update Reg_TrabajosXOperarios Set Reg_TrabajosXOperarios.AjusteHoras ='" & Ajuste_Horas & "' WHERE Reg_TrabajosXOperarios.Dia='" & FechaCorta & "' And Reg_TrabajosXOperarios.NumeroOperario='" & NumOperario & "'"
DoCmd.RunSQL Instruccion
DoCmd.OpenQuery "CamposUnicosNuevos1"
DoCmd.SetWarnings True
Else
DoCmd.SetWarnings False
Dim Instruccion1 As String
Instruccion1 = "Update Reg_TrabajosXOperarios Set Reg_TrabajosXOperarios.AjusteHoras =0 WHERE Reg_TrabajosXOperarios.Dia='" & FechaCorta & "' And Reg_TrabajosXOperarios.NumeroOperario='" & NumOperario & "'"
DoCmd.RunSQL Instruccion1
DoCmd.OpenQuery "CamposUnicosNuevos1"
DoCmd.SetWarnings True
End If

End Sub
A ver si alguien con más experiencia me pudiera ayudar.

1 Respuesta

Respuesta
2

Suponiendo que el campo Dia es de tipo Fecha/hora y AjusteHoras y NumeroOperario numéricos, las SQL deberían ser:

Instruccion = "Update Reg_TrabajosXOperarios Set Reg_TrabajosXOperarios.AjusteHoras =" & Ajuste_Horas & " WHERE Reg_TrabajosXOperarios.Dia=#" & FechaCorta & "# And Reg_TrabajosXOperarios.NumeroOperario=" & NumOperario 

y

Instruccion1 = "Update Reg_TrabajosXOperarios Set Reg_TrabajosXOperarios.AjusteHoras =0 WHERE Reg_TrabajosXOperarios.Dia=#" & FechaCorta & "# And Reg_TrabajosXOperarios.NumeroOperario=" & NumOperario

Tampoco te es necesario declarar la variable Instruccion1, puedes usar la misma variable para las dos SQLs. También puedes sacar de dentro del If las instrucciones repqtidas, con lo que al final tendrás menos lineas de código que te hacen exactamente lo mismo.

Un saludo.


Muchas gracias, en cualquier caso, fecha corta es un campo de texto, un control bloqueado cuyo valor predeterminado es 
=Format(Día(Ahora());"00") & "/" & Format(Mes(Ahora());"00") & "/" & Format(Año(Ahora());"00")

En ese caso vuelve a cambiar las # por las comillas simples (') como tenías en un principio. El resto de "correcciones" siguen siendo válidas, je je je

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas