Metodo delete del ado

Valen
09 de Septiembre del 2003
Hola muy buenas, quiero poder borrar ciertos registros de una tabla pero no puedo, con dao todo me iba muy bien pero con ado no me resulta asi. Os pongo el codigo que utilizo por si tuviera algun error, que sera lo mas probable:

Dim Mensaje, Título, a
Dim strquery As String
Dim borra As Recordset
Mensaje = " Introduzca el NºPregunta que desea borrar"
Título = "Eliminar Preguntas"
a = InputBox(Mensaje, Título)

If pass.DataCombo1.Text = "Angel C" Or pass.DataCombo1.Text = "Javier G" Or pass.DataCombo1.Text = "valen" Then
If IsNumeric(a) Then
strquery = "SELECT * FROM preguntas where npre=" & a
Set borra = mibase.Execute(strquery)
With borra
If (.BOF And .EOF) Then
MsgBox "No hay ninguna pregunta con este número.", vbExclamation, "Eliminación de Preguntas"

Else
borra.Delete
borra.MoveFirst
MsgBox "La pregunta ha sido eliminada", vbInformation, "Eliminación de preguntas"



End If
End With
Else
MsgBox "Debe introducir un valor númerico", vbInformation, "Eliminación de Preguntas"
End If
Else
MsgBox "Usted no es administrador, por lo que no podra eliminar preguntas", vbInformation, "Eliminación de Preguntas"
End If

cuando ejecuto este codigo me salta un error de visual que me dice: "EL objeto o proveedor no puede realizar la operacion requerida y me señala en el codigo a borra.delete. Como se puede hacer esto, borrar un registro no me sale. Gracias de antemano.

angelescj
09 de Septiembre del 2003
Puedes utilizar directamente SQL, es mucho más cómodo:
If IsNumeric(a) Then
strquery = "DELETE * FROM preguntas where npre=" & a
Set borra = mibase.Execute(strquery)
Y ya está.
Si no prueba algo así:

Dim cad As String
Dim r As ADODB.Recordset
With formulario
cad = "SELECT * FROM preguntas where npre=" & a
Set r = New ADODB.Recordset
r.LockType = adLockOptimistic
r.CursorType = adOpenDynamic
r.Open cad, con
r.Delete
r.UpdateBatch
r.Close
End With