Access - consulta para borrar un registro

   
Vista:

consulta para borrar un registro

Publicado por mati (48 intervenciones) el 07/02/2008 14:22:25
Hola de nuevo compañeros. Resulta que tengo una lista y cuando selecciono una fila y le doy al boton eliminar debería hacer un delete de la tabla de pedidos pero es que no borra el registro de dicha tabla ni me da error ni na de na asique no se a qué se debe.
A continuacion expongo el código del boton eliminar por si veis algo mal:

Private Sub boton_eliminar_Click()

Set BDatos = CurrentDb()
elimina = "DELETE FROM PEDIDOS WHERE id_pedido=" & Form_SUB_PEDIDOS_BORRADOR.id_pedido & ""
CurrentDb().Execute elimina

Form_PEDIDOS.Form.Refresh
End Sub

La lista está en un subformulario (SUB_PEDIDOS_BORRADOR) y el boton eliminar en el formulario principal (PEDIDOS).
He comprobado que Form_SUB_PEDIDOS_BORRADOR.id_pedido me devuelve un campo de la fila que tengo seleccionada.

Bueno, agradezco cualquier opinión ya que esto me tiene un poco pillá porque no se donde puede estar el error, seguro que alguno lo vereis.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta para borrar un registro

Publicado por elias (405 intervenciones) el 07/02/2008 16:26:56
Has probado con DoCmd.RunSQL (elimina,False) ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta para borrar un registro

Publicado por Enrique (1299 intervenciones) el 07/02/2008 18:37:08
Hola Mati:
Prueba mejor de esta forma:

Private Sub boton_eliminar_Click()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("PEDIDOS", dbOpenDynaset)
rst.FindFirst "Id_pedido=" & Form_SUB_PEDIDOS_BORRADOR.Lista1.ItemData(Lista1.ListIndex)
If Not rst.NoMatch Then ' SI ENCUENTRA EL REGISTRO COINCIDENTE
Dim mens As Integer
mens = MsgBox("¿ Confirma la eliminación ?", vbQuestion + vbYesNo + vbDefaultButton2, "Eliminar Registro")
If mens = vbYes Then
rst.Delete
Form_SUB_PEDIDOS_BORRADOR.Lista1.Requery
Else ' SI NO ENCUENTRA NINGUN REGISTRO COINCIDENTE
rst.Close: Set rst = Nothing
MsgBox "No se ha encontrado ningún registro.", vbInformation, "Aviso"
Form_SUB_PEDIDOS_BORRADOR.Lista1 = 0
Exit Sub
End If
End If
rst.Close: Set rst = Nothing
End Sub

Para que esto funcione, el Cuadro de Lista debe tener como Columna Dependiente (ListIndex) el campo Id_pedido, o dicho de otra forma, el campo Id_pedido de la Tabla PEDIDOS debe estar en la primera columna del Cuadro de Lista, la columna 0 (cero). Sustituye Lista1 por el nombre real de tu Cuadro de Lista y entiendo que Id_pedido es Numérico.

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar