Bases de Datos > MS Access
Actualizar registro despues de usar DELETE (SQL)
mizzard:
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 --- Private Sub EstadoID_Click()Dim msg As StringDim title As StringDim db As DatabaseSet db = CurrentDb()If EstadoID.ListIndex = 3 Then msg = "¿Está seguro de que desea BLOQUEAR la tarjeta?" msg = msg & Chr(13) & Chr(10) msg = msg & Chr(13) & Chr(10) & "Esta acción INHABILITARÁ la tarjeta para siempre." title = "Pregunta" x = MsgBox(msg, 33, title) 'Hay que poner la suma del codigo pregunta + 2 botones If (x = 1) Then EstadoID.Value = "Bloqueada" DoCmd.RunCommand acCmdRefresh micadena1 = """Bloqueada""" strSQL = "INSERT INTO TarjetaBloqueada ( SocioID, FamiliarID, TarjetaID, NumTarjeta, EstadoID, ClaveSecreta )" '( TarjetaID, NumTarjeta, EstadoID, SocioID, FamiliarID, ClaveSecreta )" 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]" strSQL = strSQL & " FROM Tarjeta" 'strSQL = strSQL & " WHERE Tarjeta.EstadoID=""Bloqueada"" " strSQL = strSQL & " WHERE Tarjeta.EstadoID=" & "" & micadena1 & "" strSQL = strSQL & "ORDER BY Tarjeta.NumTarjeta;" 'Texto45.Value = strSQL db.Execute strSQL, dbFailOnError DoCmd.RunCommand acCmdRefresh strSQL = "DELETE FROM Tarjeta" '( TarjetaID, NumTarjeta, EstadoID, SocioID, FamiliarID, ClaveSecreta )" strSQL = strSQL & " WHERE Tarjeta.EstadoID=" & "" & micadena1 & "" & ";" 'Texto45.Value = strSQL db.Execute strSQL, dbFailOnError DoCmd.RunCommand acCmdRefresh DoCmd.GoToRecord , , acNext Else EstadoID.Value = estado End If End If If IsNull(EstadoID.ItemData(EstadoID.ListIndex)) Then Else estado = EstadoID.ItemData(EstadoID.ListIndex) End IfEnd Sub Muchas gracias, espero vuestra contestación
m0skit0:
COMMIT
mizzard:
Ya veo que debo de usar COMMIT, pero en sintaxis de VBA como seria?
Muchas gracias
m0skit0:
No tiene nada que ver con VB6. Es una orden SQL, debes mandarla tal y como mandas tu INSERT y tu DELETE.
Saludos.
mizzard:
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
--- Fin de la cita ---
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
Navegación
[#] Página Siguiente
Ir a la versión completa