Actualizar datos en access por medio de código

Tengo un botón que en la función al hacer click ejecuta este código

If Not IsNull(Me.PLAZA1) Or (Me.id1) Then
  CurrentDb.Execute "Update LIBRETA set NOOFICIO='" & Form!No1 & "', CLAVE='" & Form!PLAZA1 & "', FCONCURSO='" & Form!F1 & "', NOMBRE='" & Form!PN1 & "', PRE='" & Form!PR1 & "', CODIGO='" & Form!C1 & "', OAFDE='" & Form!D1 & "', OAFA='" & Form!H1 & "' " _
  & "where Id=" & Form!id1 & ""
   'si el campo plaza esta vacio elimina los registros de esa plaza
      If IsNull(Me.PLAZA1) Then
      CurrentDb.Execute "DELETE FROM LIBRETA WHERE Id = " & Me.id1
      Else
      End If
Else
End If
If Not IsNull(Me.P2) Or (Me.id2) Then
   CurrentDb.Execute "Update LIBRETA set NOOFICIO='" & Form!No1 & "', CLAVE='" & Form!P2 & "', FCONCURSO='" & Form!F2 & "', NOMBRE='" & Form!PN2 & "', PRE='" & Form!PR2 & "', CODIGO='" & Form!C2 & "', OAFDE='" & Form!D2 & "', OAFA='" & Form!H2 & "' " _
  & "where Id=" & Form!id2 & ""
     If IsNull(Me.P2) Then
     CurrentDb.Execute "DELETE FROM LIBRETA WHERE Id = " & Me.id2
     Else
     End If

lo raro es que solo ejecuta el primer if y actualiza los datos, pero el segundo if no se ejecuta

(Ahorita solo estoy usando 2 if en el ejemplo pero en realidad serian 4)

Como puedo hacer para que se ejecuten los 2 update y no solo 1

1

1 respuesta

Respuesta
2

Si no se ejecuta la segunda SQL de actualización es simple y llanamente porque la condición del If que la precede no se cumple. Tendrás que verificar que esa condición que has puesto es realmente la que querías poner...

Exactamente, ¿qué es lo que pretendes comprobar con esta condición: If Me.Id1 Then o con esta: If Me. Id2 Then?

Según yo estoy validando que no este vacío el campo de id

Tengo varios cuadros de texto llenos con información de la tabla

Busco el oficio 5

Y me arroja los sig datos

nombre        clave          codigo             fecha inicio           fecha fin            id 

juan                  12           10                       12/10/2017         12/15/2018          2

maria                05          11                      17/10/2017         12/05/2018           3

carlos               02          11                      10/10/2017         02/05/2018           4

Entonces yo lo que hago es que si el id no esta vacío actualice los datos de ese id

Si quieres validar que el campo esté o no vacío, has de usar la función IsNull(), exactamente igual que haces con los campos Plaza1 y P2:

If Not Isnull(Me.Plaza1) Or Not Isnull(Me.Id1) Then....

Ten también en cuenta que una condición múltiple con un operador OR se cumple cuando alguna de las condiciones individuales es verdadera: eso quiere decir que si id1 es nulo pero plaza1 no, se cumple la condición y se ejecuta la SQL de actualización, con el consiguiente error en la parte del where...

Pero lo raro es que solo el If Not Isnull(Me.Plaza1) Or Not Isnull(Me.Id1) Then ejecuta

el segundo no lo ejecuta

esta mal el if?

El segundo If tiene que ser:

If Not Isnull(Me.P2) Or Not Isnull(Me.Id2) Then 

Si no se ejecuta, es que no se cumple la condición... El If está correcto, pero puede que no sea el que quieres hacer o el que necesitas, eso no lo puedo saber...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas