PDA

Ver la Versión Completa : Trasladar de StringGrid a BD!!


lobosito
05-12-2012, 18:00:06
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
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


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:
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
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: