Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar Datos De Un Dbgrid A Una Tabla (https://www.clubdelphi.com/foros/showthread.php?t=53556)

schaka 23-02-2008 20:19:15

Insertar Datos De Un Dbgrid A Una Tabla
 
HOLA QUE TAL , BUENO SOY NUEVO EN DELPHI , TENGO UN PROBLEMA , TENGO UN DBGRID DONDE MUESTRO LA INFORMACION DE UNA TABLA, Y DESPUES DE REALIZAR UNA BUSQUEDA ME GUSTARIA QUE LA FILA QUE FUE SELECCIONADA COMO RECULTADO DE LA BUSQUEDA `PODER INSERTARLA EN UNA TABLA EN MYSQL, EL PROBLEMA QUE TENGO , ES QUE NO SE COMO RECUPERAR LA INFORMACION DE LA FILA SELECCIONADA DESPUES DE MI BUSQUEDA PARA PODER INSERTARLA EN UNA TABLA , HE DADO UN VISTAZO POR LA INTERNET, Y NO HE PODIDO ENCONTRAR ALGO AL RESPECTO, ESPERO ALGUIEN ME PUEDA AYUDAR .. MUCHISIMAS GRACIAS, MUESTRO MI CODIGO PARA LA BUSQUEDA,

Código Delphi [-]

procedure TFMain.Edit1Change(Sender: TObject);
var i:integer;
palabras: TStringList;
consulta: String;

begin if Edit1.Text = '' then begin consulta:='Select * from productos';
ZQuery.close;
ZQuery.sql.clear;
ZQuery.sql.add(consulta);
ZQuery.open;
end else begin
palabras := TStringList.Create;
palabras.CommaText := Edit1.Text;
ZQuery.close; ZQuery.sql.clear;
for i:=0 to palabras.Count-1 do
begin consulta:=consulta+'and Producto like "%'+palabras.Strings[i]+'%"';
end;
Delete(consulta,1,3);
consulta:='Select * from productos where'+consulta;
ZQuery.SQL.Add(consulta);
ZQuery.Open;
end;//else
end;

Delphius 23-02-2008 20:37:32

Hola schaka,
No te enojes, pero te voy a pedir que respetes la guia de estilo:
1. No escribas en mayusculas, pareciera que estás gritando.
2. Usa las etiquetas delphi: [ DELPHI ] [ /DELPHI ] (sin los espacios entre los corchetes) para que el código se vea bien.

Saludos,

schaka 23-02-2008 20:53:14

hola que tal , bueno soy nuevo en delphi , tengo un problema , tengo un DBgrid donde muestro la informacion de una tabla y despues de realizar una busqueda me gustaria que la fila que fue seleccionada como resultado de la busqueda poder insertarla en una tabla en mysql,pero no se como recuperar la informacion de la fila seleccionada para poder insertarla en una nueva tabla, he dado un vistazo por la internet y no he encontrado nada aun, espero me puedas ayudar gracias, a continuacion muestro mi codigo de busqueda

Código Delphi [-]
procedure TFMain.Edit1Change(Sender: TObject);
var i:integer;
    palabras: TStringList;
    consulta: String;

begin
  if Edit1.Text = '' then
  begin
    consulta:='Select * from productos';
    ZQuery.close;
    ZQuery.sql.clear;
    ZQuery.sql.add(consulta);
    ZQuery.open;
  end
  else begin
    palabras := TStringList.Create;
    palabras.CommaText := Edit1.Text;
    ZQuery.close;
    ZQuery.sql.clear;
      for i:=0 to palabras.Count-1 do
      begin
      consulta:=consulta+'and Producto like "%'+palabras.Strings[i]+'%"';
      end;
    Delete(consulta,1,3);
    consulta:='Select * from productos where'+consulta;
    ZQuery.SQL.Add(consulta);
    ZQuery.Open;
  end;//else
end;

reina 23-02-2008 21:34:43

Hola, no se bien que es lo que queres hacer pero el codigo podrias mejorarlo un poco el stringlist trata de liberarlo despues que no lo uses, podrias poner su creacion entre un try..except para salvar cualquier inconveniente.
Despues si queres insertar datos de un dbgrid en un tabla X, deberias poder recuperar los valores de la filas o columnas de grilla si te fijas cuando refencias a la grilla en el codigo y poniendo punto te aparecen todas sus propiedades y metodos disponibles. Si no tambien lo podiras buscar en la ayuda de delphi que por cierto es muy buena.
Otra recomendacion es que te bajes el libro "La Cara Oculta de Delphi 4" que es un documento bueno para aprender delphi, creo que se encuentra disponible en este foro para bajarlo.
Saludos y espero te sirvan mis opiniones!

LA PATRIA SERA LIBRE!

schaka 23-02-2008 21:44:07

Bueno mostrare ahora un metodo que he creado para recuperar los datos de un dbgrid llamado DProductos para despues insertarlos en una tabla, pero no me inserta valores nulos y me manda este mensaje "can not open a resultset" , pongo a continuacion mi metodo,
Código Delphi [-]
procedure TFMain.BAgregarClick(Sender: TObject);
var consulta,clave,producto,preciou,preciov:String;
begin
  clave:=DProductos.Fields[0].AsString;
  producto:=DProductos.Fields[1].AsString;
  preciou:=DProductos.Fields[4].AsString;
  preciov:=DProductos.Fields[3].AsString;

   Remision.close;
   Remision.sql.clear;
   consulta:='INSERT INTO remision VALUES(clave,producto,preciov,preciou)';
    Remision.SQL.Add(consulta);
    Remision.Open;

end;

rafita 24-02-2008 20:20:05

Hola, yo pondría algo así:

Código:


var Consulta : String;
begin
  Consulta:'INSERT INTO remision (clave, producto, preciov, preciou) VALUES (:clave, :producto, :preciov, :preciou)';
  Remision.SQL.Clear;
  Remision.SQL.Add(Consulta);
  Remision.Parameters.Parambyname('Clave').Value := DProductos.Fields[0].AsString;
  Remision.Parameters.Parambyname('Producto').Value := DProductos.Fields[1].AsString;
  Remision.Parameters.Parambyname('PrecioV').Value := DProductos.Fields[4].AsString;
  Remision.Parameters.Parambyname('PrecioU').Value := DProductos.Fields[5].AsString;

  Remision.ExecSql; // Remision.Open; es para hacer una consulta, tienes que poner EXECSQL para hacer un Insert/update/delete
end;

Ahora mismo no recuerdo la sintaxis correcta para pasar los parámetros, creo que con ADO es como te lo he puesto Remision.Parameters.ParamByName, pero con BDE es Remision.Params.... De todas formas la ayuda de Delphi te lo va dando.

Y otra cosa, suponiendo que DProductos sea una query, yo me referiría a los datos de esta forma:
Código:

  Remision.Parameters.Parambyname('PrecioU').Value := DProductos.FieldByName('PrecioU').AsString;
De esta forma no dependes del orden de los campos en la consulta, sino del nombre del campo, que normalmente será el mismo en la consulta que en la tabla.

Espero haberte ayudado algo,
un saludo

Lepe 24-02-2008 20:59:21

Hilo repetido con este otro

Revisa la guía de estilo.
Saludos


La franja horaria es GMT +2. Ahora son las 15:54:00.

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