Eliminar registro actual Visual Basic ADO
Tengo una aplicación hecha en Visual Basic 6.0 y un motor de base de datos Sql Server 7 conectada con ADO.
Bueno, estoy aquí por que después de varios intentos he podido modificar un registro actual:
Private Sub cmdModificar_Click()
rst!Nombre = txtNombre
rst!Apellido = txtApellido
rst.Update
Bueno, ahora necesito eliminar el registro actual de una tabla llamada "nombres"... Por ejemplo, si estoy en registro número 8 me elimine el registro numero 8, pero resulta que me modifica siempre el primer registro...
Bueno, como programadores sabemos que todo registro que se elimina de una base de datos no debe ser eliminado en su totalidad, así que hice que antes de eliminar un registro copie el registro actual a una tabla que se llama "Eliminados" y después elimine el registro actual de la tabla "nombres"
Dejo el código que utilizé:
Private Sub cmdEliminar_Click()
Dim var As Integer
'----------------------------------------------------------------------------
'Primero se abre la Tabla "Eliminados"
'La tabla "Eliminados" es aquella que guarda a los alumnos que se eliminarán
'Este paso es necesario antes de borrar cualquier registro
'----------------------------------------------------------------------------
Dim tField As ADODB.Field
'
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=SERGIO; " & _
"integrated security=SSPI; persist security info=True;"
' Se abre el recordset abriendo la tabla "Eliminados"
rst.Open "SELECT * FROM Eliminados", cnn, adOpenDynamic, adLockOptimistic
rst.AddNew
rst.Fields("IdNombreEli") = txtIdNombre
rst.Fields("NombreEli") = txtNombre
rst.Fields("ApellidoEli") = txtApellido
rst.Update
'----------------------------------------------------------------------------
'Se cierra la conexion de la tabla "Eliminados"
'Este paso es necesario, ya que esta tabla no puede permanecer abierta
'si se necesita abrir otra tabla
'----------------------------------------------------------------------------
rst.Close
cnn.Close
'----------------------------------------------------------------------------
'la declaración "Dim tField As ADODB.Field" se debe sacar ya que si no
'se provocará un error de compilación: "declaracion duplicada"
'----------------------------------------------------------------------------
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=SERGIO; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder
'
rst.Open "SELECT * FROM nombres", cnn, adOpenDynamic, adLockOptimistic
rst.Delete
rst.Update
End Sub
Pero el problema es que me elimina el primer registro, si quiero eliminar el registro numero 8 me elimina el registro numero 1...
Bueno, estoy aquí por que después de varios intentos he podido modificar un registro actual:
Private Sub cmdModificar_Click()
rst!Nombre = txtNombre
rst!Apellido = txtApellido
rst.Update
Bueno, ahora necesito eliminar el registro actual de una tabla llamada "nombres"... Por ejemplo, si estoy en registro número 8 me elimine el registro numero 8, pero resulta que me modifica siempre el primer registro...
Bueno, como programadores sabemos que todo registro que se elimina de una base de datos no debe ser eliminado en su totalidad, así que hice que antes de eliminar un registro copie el registro actual a una tabla que se llama "Eliminados" y después elimine el registro actual de la tabla "nombres"
Dejo el código que utilizé:
Private Sub cmdEliminar_Click()
Dim var As Integer
'----------------------------------------------------------------------------
'Primero se abre la Tabla "Eliminados"
'La tabla "Eliminados" es aquella que guarda a los alumnos que se eliminarán
'Este paso es necesario antes de borrar cualquier registro
'----------------------------------------------------------------------------
Dim tField As ADODB.Field
'
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=SERGIO; " & _
"integrated security=SSPI; persist security info=True;"
' Se abre el recordset abriendo la tabla "Eliminados"
rst.Open "SELECT * FROM Eliminados", cnn, adOpenDynamic, adLockOptimistic
rst.AddNew
rst.Fields("IdNombreEli") = txtIdNombre
rst.Fields("NombreEli") = txtNombre
rst.Fields("ApellidoEli") = txtApellido
rst.Update
'----------------------------------------------------------------------------
'Se cierra la conexion de la tabla "Eliminados"
'Este paso es necesario, ya que esta tabla no puede permanecer abierta
'si se necesita abrir otra tabla
'----------------------------------------------------------------------------
rst.Close
cnn.Close
'----------------------------------------------------------------------------
'la declaración "Dim tField As ADODB.Field" se debe sacar ya que si no
'se provocará un error de compilación: "declaracion duplicada"
'----------------------------------------------------------------------------
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Prueba; " & _
"Data Source=SERGIO; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder
'
rst.Open "SELECT * FROM nombres", cnn, adOpenDynamic, adLockOptimistic
rst.Delete
rst.Update
End Sub
Pero el problema es que me elimina el primer registro, si quiero eliminar el registro numero 8 me elimina el registro numero 1...
2 respuestas
Respuesta de Roberto Alvarado
1
Respuesta de luisinho18
1