Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Eliminar registro

Hola, podrian decirme como eliminar un registro de un DBGrid. Utilizo Delphi y MySQL.
En el form tengo una grilla, un ADOQuery y un Button.
Lo que pretendo es poder eliminar cualquier registro haciendo clic en el button.

Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 12-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Al final de esta página, abajo del todo, tienes varios enlaces que te ayudarán.
Responder Con Cita
  #3  
Antiguo 13-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola, este es el código que pongo en el button para borrar un registro de un dbgrid. Lo hago correr y no aparece ningun error, pero no funciona.

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete articulo');
ADOQuery1.SQL.Add('where articulo.id_articulo=id_articulo');
ADOQuery1.Parameters.ParamByName('id_articulo').Value:=DBGrid1.DataSource.DataSet.Fields[id_articulo].AsInteger;
ADOQuery1.ExecSQL;
ADOQuery1.Open;

Pueden mirar el código y decirme donde puede estar el error, sobre todo la linea que esta en negrita (creo que ese es el problema).
Pregunta ¿Para borrar un registro solo es suficiente eliminar el campo clave, o hay que eliminar todos los campos de ese registro?

Muchas Gracias
Responder Con Cita
  #4  
Antiguo 13-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por lucas05 Ver Mensaje
ADOQuery1.SQL.Add('where articulo.id_articulo=id_articulo');
me parece que el problema esta aqui... no estas definiendo ningun parametro

prueba asi
Código Delphi [-]
ADOQuery1.SQL.Add('where articulo.id_articulo=:id_articulo');

nota que he puesto : antes de id_Articulo
y nos comentas
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 13-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La sentencia para borrar es:

delete from tabla where loquesea.
Responder Con Cita
  #6  
Antiguo 13-04-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola lucas05, cuando ejecutas una consulta que va hacer cambios en tu BD (insert, update, delete) debes utilizar solo ExecSQL, por lo que esto "ADOQuery1.Open;" esta demas.

Con lo que te hemos mencionado, tu consulta quedaría asi:

Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Delete From articulo');
ADOQuery1.SQL.Add('Where id_articulo=:id_articulo');
ADOQuery1.Parameters.ParamByName('id_articulo').Value:=DBGrid1.DataSource.DataSet.Fields[id_articulo].AsInteger;
ADOQuery1.ExecSQL;

Si te da algún error, no te olvides mencionar el error que te esta saliendo.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 13-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
me olvide comentarte lo del open...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 13-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Muchas gracias a todos por responder.
Realice los cambios que me sugirieron (puse los dos puntos antes del id_articulo y borre la linea ADOQuery1.Open
Cuando lo hago correr aparece el siguiente error:
Undeclared identifier: 'id_articulo'
El error esta en esta linea (puedes ser el id_articulo que esta entre corchetes):
Query1.Parameters.ParamByName('id_articulo').Value:=DBGrid1.DataSource.DataSet.Fields[id_articulo].AsInteger;

Nuevamente Muchas Gracias.
Responder Con Cita
  #9  
Antiguo 13-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por lucas05 Ver Mensaje
Query1.Parameters.ParamByName('id_articulo').Value:=DBGrid1.DataSource.DataSet.Fields[id_articulo].AsInteger;
Yo no conozco la nomenclatura con ADO, pero seguramente faltan las comillas del nombre del campo.

Código Delphi [-]
Query1.Parameters.ParamByName('id_articulo').Value:=DBGrid1.DataSource.DataSet.Fields['id_articulo'].AsInteger;
Responder Con Cita
  #10  
Antiguo 14-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola, logre eliminar un registro de una grilla, pero aparecio un pequeño problemita. Les explico:
En el Form1 tengo una grilla y un button, cuando hago clic en el button(form1) abro el Form2 donde muestro todos los datos (en distintos dbedit) del registro seleccionado. Luego hago clic en el button eliminar(form2) que tiene el siguiente codigo para eliminar el registro.
Form1.ADOQuery1.delete;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('delete from articulo where id_articulo= :id_articulo');
Form1.ADOQuery1.Parameters.ParamByName ('id_articulo').Value:=Form2.DBEdit1.Text;
Form1.ADOQuery1.ExecSQL;

Luego de que se borro el registro cierro el form2 y vuelvo al form1 donde esta la grilla.
El registro se borro, pero los otros registros que no borre no se pueden ver, la grilla queda en blanco. Aclaro que el unico registro que se borro es el que seleccione, los otros no se borraron pero para poder verlos debo volver a compilar el programa.
Espero haber sido claro y que puedan ayudarme.

Muchas Gracias.
Responder Con Cita
  #11  
Antiguo 14-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
los datos que estan en el FORM1 en la grilla o grid...

son de una tabla? de un query?

lo que puedes hacer es refrescar la tabla o query

Código Delphi [-]
 
qryAlimentos.Refresh;

Me parece que la Primera linea esta demas
Código Delphi [-]
 
Form1.ADOQuery1.delete;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('delete from articulo where id_articulo= :id_articulo');
Form1.ADOQuery1.Parameters.ParamByName ('id_articulo').Value:=Form2.DBEdit1.Text;
Form1.ADOQuery1.ExecSQL;
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 15-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola oscarac, los datos en la grilla son de un ADOQuery.
Segui tu consejo y agrega la siguiente linea al final de mi codigo:
Form1.ADOQuery1.Refresh;
Pero sigue sin mostrar nada.
Lo que necesito hacer luego de eliminar el registro es refrescar el adoquery en tiempo de ejecución. Como puedo hacer eso.

Muchas Gracias
Responder Con Cita
  #13  
Antiguo 15-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmmm otra cosa que se me ocurre es que lo cierres y lo vuelvas a abrir
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar Registro agustin173 Varios 27 09-12-2010 16:18:02
Eliminar Registro agustin173 Varios 9 13-10-2010 06:32:41
eliminar un registro pronto7 SQL 1 21-06-2010 20:33:21
Eliminar registro sizne OOP 4 30-04-2010 15:17:58
Eliminar registro de un .mdb con ADO ¥0n1 Conexión con bases de datos 2 07-11-2007 11:29:12


La franja horaria es GMT +2. Ahora son las 19:56:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi