Muchas gracias, Jose Arriagada. Tanto una cosa como otra me funcionaron, pero me gusta más tu forma, queda más clara.
Pero ahora tengo otro problemilla. Tengo un formulario con un ADODC que es con el que controlo todos los campos del formulario y de la tabla. Y luego tengo el Recorset por el que pedí anoche ayuda, el rst.
En el adodc1 tengo abierta la tabla extras (tblExtras).
En el rst tengo abierta la tabla VehiculosExtras(tblVehiculoExtras).
Bien todo esto es para poder borrar. Ya que para poder borrar un extra de la tblExtras tengo que mirar si existe algun extra vinculado con algun vehículo en la tblVehiculoExtras. Hasta aqui todo bien y controlado, consigo borrar los registros de la tblVehiculoExtras, pero luego al querer borrarlo de la tblExtras me dice que no se puede borrar ya que el registro se encuentra vinculado a otra tabla(supuestamente a tblVehiculoExtra). Pero en ese momento que se me para la aplicación, voy y miro en la BD y en esa tabla ya no existe el ningun registro con el Extra que quiero borrar.
He intentado que despues de borrar en la tblVehiculoExtra hacer un adodc1.Refresh y despues el adodc1.Delete pero me sigue diciendo lo mismo.
¿Alguien me podría guiar en como se podría solucionar esto?, pq llevo horas estancado en este punto y no consigo salir de aquí.
Aquí os coloco el código que tengo escrito hasta ahora:
Private Sub cmdBorrar_Click()
If vbYes = MsgBox(vbTab & "¿ Borrar el extra seleccionado ?" & vbCr & vbCr & _
"Si acepta, si es necesario se procederá a borrar el extra " & vbCr & _
"seleccionado en todos los vehículos en los que se encuentre." & vbCr & vbCr & _
"¿¿¿ Realmente desea borrar el extra seleccionado ???", vbExclamation + vbYesNo, "ATENCIÓN") Then
If Adodc1.Recordset.BOF And Adodc1.Recordset.EOF Then
MsgBox "No es posible borrar el registro.", vbCritical, "ERROR"
Else
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim SentenciaSQL As String
cnn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\RentaCar.mdb;"
cnn.Open
SentenciaSQL = "SELECT * FROM tblVehiculoExtras WHERE Extras='" & txtNombre.Text & "'"
rst.Open SentenciaSQL, cnn, adOpenDynamic, adLockOptimistic
If rst.EOF And rst.BOF Then 'Miramos si en la otra tabla hay algun registro vinculado. Si no hay nada, borramos el extra directamente.
Adodc1.Recordset.Delete 'Con esto borramos la categoría seleccionada.
Adodc1.Recordset.MoveFirst 'Con esto nos establecemos en el primer registro de la tabla.
'Mensaje advirtiendo de que el extra ha sido borrado.
MsgBox "Extra borrado correctamente.", vbInformation, "Extra borrada"
Else 'Si entra por aquí, es que hay algun registro vinculado y necesitamos borrarlo primero de la tabla VehículoExtra antes de borrarlo en la tblExtras.
rst.MoveFirst 'Nos movemos al primer registro para empezar a buscar y a borrar.
Do While Not rst.EOF 'Repite hasta que no sea el final de la tabla.
rst.Delete
rst.MoveNext
Loop
cnn.Close
' Refresh es necesario para que se cargue la tabla
Adodc1.Refresh
[B] ==> Adodc1.Recordset.Delete 'Con esto borramos la categoría seleccionada.[/B]
[I]En esta línea de arriba es cuando me salta el error.[/I]
Adodc1.Recordset.MoveFirst 'Con esto nos establecemos en el primer registro de la tabla.
'Mensaje advirtiendo de que el extra ha sido borrado.
MsgBox "Extra borrado correctamente.", vbInformation, "Extra borrada"
End If
End If
End If
End Sub
Muchas gracias ya de antemano por siquiera pararos a leer mi problema.