guardar datos de StringGrid en mysql
#1
Escrito 03 julio 2012 - 04:53
#2
Escrito 03 julio 2012 - 05:21
Saludos.
#3
Escrito 04 julio 2012 - 08:06
tabla2.SQL.Clear; tabla2.Close; tabla2.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:, :cantidad, :codigo, :descripcion, :unitario) '); stringGrid1.Cells[1, StringGrid1.Row]:=tabla2.ParamByName('cantidad').AsString; stringGrid1.Cells[2, StringGrid1.Row]:=tabla2.ParamByName('codigo').AsString; stringGrid1.Cells[3, StringGrid1.Row]:=tabla2.ParamByName('descripcion').AsString; stringGrid1.Cells[4, StringGrid1.Row]:=tabla2.ParamByName('unitario').AsString;
tabla2.Execute;
#4
Escrito 04 julio 2012 - 08:25
tabla2.SQL.Clear; tabla2.Close; tabla2.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:cantidad, :codigo, :descripcion, :unitario) '); tabla2.ParamByName('cantidad').AsString := stringGrid1.Cells[1, StringGrid1.Row]; tabla2.ParamByName('codigo').AsString := stringGrid1.Cells[2, StringGrid1.Row]; tabla2.ParamByName('descripcion').AsString := stringGrid1.Cells[3, StringGrid1.Row]; tabla2.ParamByName('unitario').AsString := stringGrid1.Cells[4, StringGrid1.Row]; table2.ExecSQL;
Saludos
PD, Supongo que Table2 es un Query, porque si no, no me explico porque no hay error
#5
Escrito 04 julio 2012 - 08:28
#6
Escrito 04 julio 2012 - 08:30
for i := 1 to StringGrid1.RowCount do begin Query.SQL.Clear; Query.SQL.Add('insert into cobro( cantidad, codigo, descripcion, unitario) values(:, :cantidad, :codigo, :descripcion, :unitario) '); Query.ParamByName('cantidad').AsString := stringGrid1.Cells[1, i] ; Query.ParamByName('codigo').AsString := stringGrid1.Cells[2, i]; Query.ParamByName('descripcion').AsString := stringGrid1.Cells[3, i]; Query.ParamByName('unitario').AsString := stringGrid1.Cells[4, i]; Query.ExecSQL; end;
A veces sucede que se agrega una línea de más en el TStringGrid a medida que agregas filas para insertar datos, por eso, ddicionalmente yo haría una validación antes de hacer la inserción a la tabla que validara que la linea que estás por ingresar tenga datos... pero eso te lo dejamos de tarea
Saludox !
#7
Escrito 04 julio 2012 - 08:41
#8
Escrito 04 julio 2012 - 08:50
#9
Escrito 04 julio 2012 - 08:51
gracias por la respuesta aunque me esta marcando el siguiente error #21S0 column count doesn´t match value count at row1 ya me tocara ver de que se trata
Quita los dos puntos y la coma antes de cantidad, si hay otro datos tendras que ponerlo en el query y asignarlo en los parametros.
Saludos
#10
Escrito 03 enero 2018 - 03:27
procedure Guardar(); var StrSQl, cantidad, codigo, descripcion, unitario: string; i : integer; begin for i := 0 to StringGrid1.RowCount - 1 do begin cantidad := stringGrid1.Cells[0, i]; codigo := stringGrid1.Cells[1, i]; descripcion := stringGrid1.Cells[2, i]; unitario := stringGrid1.Cells[3, i]; StrSQl := 'insert into cobro(cantidad, codigo, descripcion, unitario) ' + ' values(' + cantidad + ',' + quotedstr(codigo) + ',' + quotedstr(descripcion) + ',' + quotedstr(unitario) + ')'; Query.SQL.text := StrSQl; Query.Execsql; end; end;
Un poquito tarde, pero que sirva de algo para quien(es) en un futuro llegue(n) por estos lares..
#11
Escrito 03 enero 2018 - 08:38
Un poquito tarde, pero que sirva de algo para quien(es) en un futuro llegue(n) por estos lares..
Nunca es tarde para aportar los conocimentos. Muchas gracias amigo
Saludos