• Lunes 18 de Noviembre de 2024, 05:29

Autor Tema:  Actualizar registro despues de usar DELETE (SQL)  (Leído 4187 veces)

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Actualizar registro despues de usar DELETE (SQL)
« en: Miércoles 9 de Marzo de 2011, 12:08 »
0
Hola, os presento mi problema.

Tengo un programa que cuando selecciono a través de un combobox la opción de bloqueada, lo que hago es copiar el registro a otra tabla (tarjetabloqueada) y posteriormente lo elimino de la tabla actual (tarjeta). El caso es que el código funciona perfectamente, lo que pasa es que cuando hago esto, me aperece en el registro movido #Eliminado (en todos los textbox que hacian referencia a ese registro).

Si salgo de mi formulario y vuelvo a entrar, la tabla se actualiza, pero en el momento en el que ejecuto la instrucción, si permanzco en él, sigue apareciendo.

Sé que se solucionaría actualizando la tabla, pues cuando cierro el formulario me voy a la tabla y le doy al boton de actualizar de access, desaparece.

Estoy programando en VBA 6.0 para una BBDD de Access 2007:

Código: Text
  1.  
  2. Private Sub EstadoID_Click()
  3. Dim msg As String
  4. Dim title As String
  5. Dim db As Database
  6. Set db = CurrentDb()
  7. If EstadoID.ListIndex = 3 Then
  8.             msg = "¿Está seguro de que desea BLOQUEAR la tarjeta?"
  9.             msg = msg & Chr(13) & Chr(10)
  10.             msg = msg & Chr(13) & Chr(10) & "Esta acción INHABILITARÁ la tarjeta para siempre."
  11.             title = "Pregunta"
  12.    
  13.             x = MsgBox(msg, 33, title) 'Hay que poner la suma del codigo pregunta + 2 botones
  14.             If (x = 1) Then
  15.                 EstadoID.Value = "Bloqueada"
  16.                
  17.                 DoCmd.RunCommand acCmdRefresh
  18.                 micadena1 = """Bloqueada"""
  19.                 strSQL = "INSERT INTO TarjetaBloqueada ( SocioID, FamiliarID, TarjetaID, NumTarjeta, EstadoID, ClaveSecreta )" '( TarjetaID, NumTarjeta, EstadoID, SocioID, FamiliarID, ClaveSecreta )"
  20.                 strSQL = strSQL & " SELECT Tarjeta.SocioID, Tarjeta.FamiliarID, Tarjeta.TarjetaID, Tarjeta.NumTarjeta, Tarjeta.EstadoID, Tarjeta.ClaveSecreta" '[Tarjeta].[TarjetaID], [Tarjeta].[NumTarjeta], [Tarjeta].[EstadoID], [Tarjeta].[SocioID],[Tarjeta].[FamiliarID], [Tarjeta].[ClaveSecreta]"
  21.                 strSQL = strSQL & " FROM Tarjeta"
  22.                 'strSQL = strSQL & " WHERE Tarjeta.EstadoID=""Bloqueada"" "
  23.                 strSQL = strSQL & " WHERE Tarjeta.EstadoID=" & "" & micadena1 & ""
  24.                 strSQL = strSQL & "ORDER BY Tarjeta.NumTarjeta;"
  25.                 'Texto45.Value = strSQL
  26.                 db.Execute strSQL, dbFailOnError
  27.                
  28.                 DoCmd.RunCommand acCmdRefresh
  29.                
  30.                 strSQL = "DELETE FROM Tarjeta" '( TarjetaID, NumTarjeta, EstadoID, SocioID, FamiliarID, ClaveSecreta )"
  31.                 strSQL = strSQL & " WHERE Tarjeta.EstadoID=" & "" & micadena1 & "" & ";"
  32.                 'Texto45.Value = strSQL
  33.                 db.Execute strSQL, dbFailOnError
  34.                
  35.                 DoCmd.RunCommand acCmdRefresh
  36.                
  37.                 DoCmd.GoToRecord , , acNext
  38.                
  39.             Else
  40.                 EstadoID.Value = estado
  41.             End If
  42.     End If
  43.     If IsNull(EstadoID.ItemData(EstadoID.ListIndex)) Then
  44.     Else
  45.         estado = EstadoID.ItemData(EstadoID.ListIndex)
  46.     End If
  47. End Sub
  48.  
  49.  
Muchas gracias, espero vuestra contestación

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #1 en: Miércoles 9 de Marzo de 2011, 12:24 »
0

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #2 en: Miércoles 9 de Marzo de 2011, 12:28 »
0
Ya veo que debo de usar COMMIT, pero en sintaxis de VBA como seria?

Muchas gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #3 en: Miércoles 9 de Marzo de 2011, 12:58 »
0
No tiene nada que ver con VB6. Es una orden SQL, debes mandarla tal y como mandas tu INSERT y tu DELETE.

Saludos.

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #4 en: Miércoles 9 de Marzo de 2011, 13:20 »
0
Hola de nuevo, perdona mi insistencia, pero no comprendo como tengo que hacerlo.

He probado con el siguiente código:

             
Citar
  strSQL = "DELETE FROM Tarjeta"
                strSQL = strSQL & " WHERE Tarjeta.EstadoID=" & "" & micadena1 & "" & ";"

                db.Execute strSQL, dbFailOnError
                strSQL = "COMMIT;"
                db.Execute strSQL, dbFailOnError

pero me da error en el commit.

También he probado con un START TRANSACTION  y con un BEGIN WORK  al principio y tampoco me funciona.

¿Me podrías indicar, si no es mucha molesta, como tendría que ponerlo en mi código?

Un saludo y muchas gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #5 en: Miércoles 9 de Marzo de 2011, 13:46 »
0
Lo siento, yo hablo de SQL estándar. Cómo implementa eso Access, lo ignoro. A lo mejor existe una función para ello, o simplemente al cerrar la conexión se hace un COMMIT automático... Consulta la documentación al respecto.

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Actualizar registro despues de usar DELETE (SQL)
« Respuesta #6 en: Miércoles 9 de Marzo de 2011, 14:15 »
0
Para aquellos que estén interesados al final lo solucioné poniendo al final del sub

Me.Requery


NOTA: Gracias de todas formas m0skit0