Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trasladar de StringGrid a BD!! (https://www.clubdelphi.com/foros/showthread.php?t=81667)

lobosito 05-12-2012 18:00:06

Trasladar de StringGrid a BD!!
 
Hola a todos los foreros, no sabía donde colocar este hilo (en conexión a BD o en SQL), por eso lo puse en varios...
Mi problema es que usé un StringGrid para acumular datos de manera temporal, ahora necesito que estos datos, y otros que están en Edits y Labels pueda ingresarlos a una BD Paradox.
He tratado de hacer lo siguiente para recorrer el StringGrid celda a celda
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  no,fecha,total,cliente,preciou,producto,ci,can:String;
  i,j:Integer;
begin
  fecha:=Label2.Caption;
  for i:=0 to 8 do
  begin
    for j:=1 to 9 do
    begin
      if StringGrid1.Cells[i,j]<>'' then
      begin
        no:=StringGrid1.Cells[i,j];
      end;
    end;

end;
No he tenido éxito ya que dentro del for anidado no puedo asignar varias variables porque en cada iteración tomarían valores iguales, es decir de la misma columna y fila del StringGrid.
No he utilizado un DBGrid debido a que necesitaba ingresar varios datos externos al StringGrid como lo es el caso de la fecha.
Agradezco como siempre su colaboración...

Faust 05-12-2012 18:30:24

Amigo, lo que pasa es que en cada iteración del ciclo for metes el valor de la celda en la misma variable, haz el ciclo For solo para las filas del StringGrid y guardas las columnas en otras variables. Por ejemplo:

Suponiendo que el StringGrid se llama Grid y tiene 8 columnas llamadas Var1, Var2... hasta Var8 y variables string con el mismo nombre harías esto

Código Delphi [-]
for i:= 1 to Grid.RowCount - 1 do  // Aquí uso RowCount para saber cuantas filas tiene el grid
begin
  Var1:= Grid.Cells[0, i];
  Var2:= Grid.Cells[1, i];
...
// Al terminar de pasar el valor de las celdas a las variables lo procesas
end;

Asi de simple

lobosito 05-12-2012 19:23:22

Ya he logrado asignar las variables, pero ahora no quiere insertar los datos a la tabla, mediante sql que puede estar sucediendo, o existe otra manera más directa... Este es mi código hasta el momento, no me da errores pero no funciona:
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  no,fecha,total,cliente,preciou,producto,ci,can:String;
  i,j:Integer;
begin
  fecha:=Label2.Caption;
  for i:=1 to 9 do
  begin
    if StringGrid1.Cells[0,i]<>'' then
    begin
      producto:=StringGrid1.Cells[0,i];
      preciou:=StringGrid1.Cells[2,i];
      can:=StringGrid1.Cells[3,i];
      cliente:=StringGrid1.Cells[5,i];
      ci:=StringGrid1.Cells[6,i];
      total:=StringGrid1.Cells[7,i];
      no:=StringGrid1.Cells[8,i];
      Query2.SQL.Clear;
      Query2.SQL.Add('Insert into factura.db (No_Fac,Fecha,Cliente,Ci_nit,Producto,Precio_u,Can,Total)');
      Query2.SQL.Add('Values('+''''+no+''''+','+''''+fecha+''''+','+''''+cliente+''''+','+''''+ci+''''+','  +''''+producto+''''+','+''''+preciou+''''+','+''''+can+''''+','+''''+total+''''+')');
      Query1.ExecSQL;

    end;
  end;

end;

Faust 05-12-2012 20:17:04

Te da algún error???

Faust 06-12-2012 16:34:55

Te convendría usar en tu Query parámetros para evitarte algunos problemillas y trabajo extra ;)

lobosito 06-12-2012 20:10:12

No entiendo cual es el problema, el Query no da errores, pero a mi tabla no se inserta nada...y no puedo utilizar parámetros porque estos son cambiantes...

lobosito 06-12-2012 21:08:45

Cita:

Empezado por lobosito (Mensaje 451301)
Código Delphi [-]
      Query2.SQL.Clear;
      Query2.SQL.Add('Insert into factura.db (No_Fac,Fecha,Cliente,Ci_nit,Producto,Precio_u,Can,Total)');
      Query2.SQL.Add('Values('+''''+no+''''+','+''''+fecha+''''+','+''''+cliente+''''+','+''''+ci+''''+','  +''''+producto+''''+','+''''+preciou+''''+','+''''+can+''''+','+''''+total+''''+')');
      Query1.ExecSQL;

    end;
  end;

end;

Un Ahora si todo resuelto...por un pequeñisimo detalle...estaba ejecutando el SQL del Query1 y no del 2 gracias por todo...:D:p:rolleyes:


La franja horaria es GMT +2. Ahora son las 14:33:50.

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