Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2012
Avatar de Facu
Facu Facu is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 14
Poder: 0
Facu Va por buen camino
Duda DBGrid

Primero que nada quiero agradecer a Club Delphi por este espacio, y saludar a todos los programadores/ moderadores que van a leer este tema.

Paso a explicar mi duda.

Tengo un componente DbGrid en un formulario, está asociado con todos los componentes correspondientes a una base de datos en access,
mediante un edit, realizo un filtrado, simulando una busqueda en la base por "nombre", hasta ahi va todo perfecto.

Mi problema es el siguiente, lo que deseo hacer es que estando posicionado sobre una celda del dbgrid presionando un boton, se borre ese registro.

He intentado de varias formas las cuales pondré aquí a continuación.

1- DbGrid1.SelectedRows.Delete; Esto está pésimo.
2- Pensé, ya que hago consultas, borro con las consultas y sucedio otro problema
intento tomar lo que dice el dbgrid en un campo (haya sido reducida la lista con el edit o no) de la siguiente manera
var
nombre:string;
Begin
nombre:= DBgrid1.Fields[0].asString;
ADOQuery1.Close;
ADOQuery1.SQL.Text:= 'DELETE * FROM Herramientas WHERE Nombre='+ nombre;
ADOQuery1.Open;
End;

Creo que son burradas lo que estoy haciendo, si alguien me podria explicar como sacar el campo "nombre" de la celda que estoy clickeando, creo que lo podia borrar sin problemas, espero una respuesta, muchas gracias
Responder Con Cita
  #2  
Antiguo 19-03-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
tomar nombre

Ke tal amigo Facu, mira, la dbgrid esta conectada a una tabla o query, (te soy sincero casi no he traabajado con access),

por lo cual no es necesario que hagas tanto busqueda, al darle un clic en cualquier celda, el puntero se coloca en ese registro de tu tabla o de tu query, asi lo unico que tienes que hacer para llamar ese datos que necesitas es:

Código Delphi [-]
 
TUQUERY1.FieldValues['NOMBRE']
 
o bien 
 
TUTABLA.FieldValues['NOMBRE']
y de ahi lo mandas a donde quieras

Código Delphi [-]
 
tuvariable:= TUTABLA.FieldValues['NOMBRE'];
 
edit1.text:= TUTABLA.FieldValues['NOMBRE'];
 
 
'DELETE  FROM tutabla WHERE Nombre='+ '"' + edit1.text + '"';  //asi seria la sintaxis en Mysql, desconozco como sea para access con ese adoquery
Saludos ...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #3  
Antiguo 19-03-2012
Avatar de Facu
Facu Facu is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 14
Poder: 0
Facu Va por buen camino
Hola Kapcomx, gracias por interesarte, y responder.

procedure TForm2.Button1Click(Sender: TObject);
begin
edit1.text:= DataModule5.ADOQuery1.FieldValues['Nombre'];
DataModule5.ADOQuery1.Close;
DataModule5.ADOQuery1.SQL.Text:=
'DELETE * from Herramientas WHERE Nombre=' + '"' + Edit1.Text + '"';
DataModule5.ADOQuery1.Open;
end;

Este es el código.
hay algo curioso, lo borra, pero inmediatamente lanza un error que dice: "ADOQuery1: CommandText does not return a result set."
Responder Con Cita
  #4  
Antiguo 19-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Facu.

Por favor cuando incluyas código en tus mensajes, para darles más legibilidad usa los TAG's. Una imágen que explica su uso:

.

En cuanto al error, probá reemplazando la línea:
Código Delphi [-]
  DataModule5.ADOQuery1.Open;
Por:
Código Delphi [-]
  DataModule5.ADOQuery1.ExecSQL;
Cuando realizas consultas que no devuelven un cursor con datos, tales como: INSERT, UPDATE, DELETE, ..., tenés que utilizar ExcecSQL en lugar de Active u Open.


Saludos.

Pd: Muy bueno tu avatar
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-03-2012 a las 20:53:12.
Responder Con Cita
  #5  
Antiguo 19-03-2012
Avatar de Facu
Facu Facu is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 14
Poder: 0
Facu Va por buen camino
Muchas gracias a ambos, problemin solucionado, era eso ExecSQL ahora voy a buscar info para aprender más y que mis consultas sean más precisas y poder ayudar a alguien también alguna vez
Responder Con Cita
  #6  
Antiguo 20-03-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Yo al principio y aún de cuando en cuando uso el CREADORSQL, qu es para firebird, te permite de una manera grafíca, hacer más del 50% de tu consulta y es muy facil de manejar el resto. Permitiendo ver el resultado y dandote el código.

Un saludo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #7  
Antiguo 20-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

en lugar de borrar el registro en el dbgrid hazlo en el query.

Código Delphi [-]
AdoQuery1.delete;
Esto borra el registro activo de la consulta de tu query que corresponde al que está señalado en el dbgrid.

También puedes hacerlo mediante consulta pero utilizando ExecSQL.

Código Delphi [-]
AdoQuery1.SQL.Text:='DELETE * FROM Herramientas WHERE nombre='+quotedstr(nombre);
AdoQuery1.ExecSQL;

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #8  
Antiguo 20-03-2012
Avatar de Facu
Facu Facu is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 14
Poder: 0
Facu Va por buen camino
Muchas gracias a todos, me he dado cuenta de lo útil que es este foro, me encanta
Responder Con Cita
  #9  
Antiguo 20-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Facu Ver Mensaje
Muchas gracias a todos, me he dado cuenta de lo útil que es este foro, me encanta
Y a nosotros nos encanta que te encante , gracias.
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
Duda con Dbgrid Paulao Varios 1 17-02-2009 23:47:02
Duda con un DBGrid santi33a OOP 2 19-11-2007 21:32:49
duda con dbgrid ercrizeporta Conexión con bases de datos 3 22-04-2007 20:34:59
Duda con DBGrid alcides Varios 4 14-09-2006 22:39:43
Duda Con Dbgrid armando Varios 2 26-02-2004 16:08:12


La franja horaria es GMT +2. Ahora son las 10:30:57.


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