INSERT no funciona con determinados campos ausentes

Poseo esta formula para pasar datos de una tabla a otra, y me pasa que si el campo F_Nacimiento en la tabla de origen esta vacio, no funciona, no pega en la destino. Probe con otros campos ausentes, como por ejemplo Obra_social, y funciona. Solo deja de funcionar cuando falta fecha. Aclaro que ambas tablas son identicas. Mismos campos, mismos tipo de datos. La formula me la paso Jacinto Trillo Jareño y me es muy util.

If MsgBox("¿Desea dar egreso a este paciente?", vbYesNo + vbQuestion, "Gestion de pacientes JANIES") = vbYes Then
   CurrentDb.Execute "INSERT INTO Historial_Paciente (DNI, Nombre_Apellido, Cama, F_Nacimiento, Edad, F_Ingreso, Diagnostico, Obra_Social, Derivado, Tel_Contacto, F_Egreso) VALUES ('" & Me.DNI & "','" & Me.Nombre_Apellido & "'," & Me.Cama & "," & "#" & Format(Me.F_Nacimiento, "mm/dd/yyyy") & "#" & ",'" & Me.Edad & "'," & "#" & Format(Me.F_Ingreso, "mm/dd/yyyy") & "#" & ",'" & Me.Diagnostico & "','" & Me.Obra_Social & "','" & Me.Derivado & "','" & Me.Tel_Contacto & "'," & "#" & Format(Me.F_Egreso, "mm/dd/yyyy") & "#" & ")"
   DoCmd.SetWarnings False
   AllowEdits = True
   DoCmd.RunCommand acCmdDeleteRecord
   Me.Requery
   DoCmd.SetWarnings True
   AllowEdits = False
   End If
End Sub

3 Respuestas

Respuesta
1

Las fechas deben de ir de esta manera:

,#" & Format(Me.F_Nacimiento, "mm/dd/yyyy") & "#,

en lugar de:

," & "#" & Format(Me.F_Nacimiento, "mm/dd/yyyy") & "#" & ",
Respuesta
2

Yo lo que haría, sin complicarme mucho, es añadir un condicional que compruebe si hay o no fecha, y en función de eso, ejecutar un insert con o sin fecha:

If MsgBox("¿Desea dar egreso a este paciente?", vbYesNo + vbQuestion, "Gestion de pacientes JANIES") = vbYes Then
   If IsNull(Me.F_Nacimineto) Then
      CurrentDb.Execute "INSERT INTO Historial_Paciente (DNI, Nombre_Apellido, Cama, Edad, F_Ingreso, Diagnostico, Obra_Social, Derivado, Tel_Contacto, F_Egreso) VALUES ('" & Me.DNI & "','" & Me.Nombre_Apellido & "'," & Me.Cama & ",'" & Me.Edad & "',#" & Format(Me.F_Ingreso, "mm/dd/yyyy") & "#,'" & Me.Diagnostico & "','" & Me.Obra_Social & "','" & Me.Derivado & "','" & Me.Tel_Contacto & "',#" & Format(Me.F_Egreso, "mm/dd/yyyy") & "#)"
   Else
      CurrentDb.Execute "INSERT INTO Historial_Paciente (DNI, Nombre_Apellido, Cama, F_Nacimiento, Edad, F_Ingreso, Diagnostico, Obra_Social, Derivado, Tel_Contacto, F_Egreso) VALUES ('" & Me.DNI & "','" & Me.Nombre_Apellido & "'," & Me.Cama & ",#" & Format(Me.F_Nacimiento, "mm/dd/yyyy") & "#,'" & Me.Edad & "',#" & Format(Me.F_Ingreso, "mm/dd/yyyy") & "#,'" & Me.Diagnostico & "','" & Me.Obra_Social & "','" & Me.Derivado & "','" & Me.Tel_Contacto & "',#" & Format(Me.F_Egreso, "mm/dd/yyyy") & "#)"
   End If
   DoCmd.SetWarnings False
   AllowEdits = True
   DoCmd.RunCommand acCmdDeleteRecord
   Me.Requery
   DoCmd.SetWarnings True
   AllowEdits = False
   End If
End Sub

Un saludo.


PD: Por cierto, las dos expresiones que te pone William son idénticas, ahí no está el problema...

¡Gracias! Excelente. Lo voy a probar así.

Otra pregunta. Existe, si las tablas de origen y destino son exactamente iguales en sus campos, la posibilidad de poner algo así como "insert into tabla x  from tabla y el id z?

Si, sería así:

Insert Into TablaDestino Select * From TablaOrigen (Where...)

Respuesta
1

Podrías evaluar si el campo tiene valor antes de insertar

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas