Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error recorriendo dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=49819)

Petolansa 31-10-2007 02:19:39

Error recorriendo dbgrid
 
Buenas gente, estoy recorriendo un dbgrid de factura detalle, y quiero descontar el stock mediante un query.

Código:

procedure TFrmfactura.BitBtn1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to dbgrid1.FieldCount -1 do
begin
query1.SQL.Text:='Update stock set stkact=stkact-'+dbgrid1.Fields[0,i]+'Where'+
                'procod='+QuotedStr(dbgrid1.Fields[1,i]);
query1.ExecSQL;
end;
end;

Me da el siguiente errortoo many actual params, me podrian decir a que se debe, desde ya muchas gracias

HenryAraniva 31-10-2007 02:58:05

me parece que quieres realizar una resta dentro de la sentencia sql. si stkact es el campo que vas a actualizar con el valor de "stkact-dbgrid1.fields[0,i]" debes hacerlo antes y colocarlo en una variable para luego dentro de la sentencia sql poner :
'Update stock set stkact='+nuevavariable+'Where procod='+QuotedStr(dbgrid1.Fields[1,i]);

Petolansa 31-10-2007 04:02:33

No funciona
 
Henry, vos sabes que probe, haciendo lo que me dijiste y me da error siempre en en el mismo lugar, en la variable i que uso en el indice de os campos del dbgrid.
Me dice too many actual parameters, gracias igual por la pronta respuesta.


procedure TFrmfactura.BitBtn1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to dbgrid1.FieldCount -1 do
begin
query1.SQL.Text:='Update stock set stkact=stkact-'+dbgrid1.Fields[0,i]+'Where'+
'procod='+QuotedStr(dbgrid1.Fields[1,i]);
query1.ExecSQL;
end;
end;


Disculpen hago muchas preguntas en tan poco tiempo, es que es una tesis de la facultad, y realmente el profesor que me dio delphi no ayudo mucho enseñandome para poder realizarla, entonces me la debo rebuscar solo, y aprender todo a fuerza de voluntad mia y si no fuera por el club, realmente esto me costaria muchisimo mas.


Agradezco su ayuda

Neftali [Germán.Estévez] 31-10-2007 10:12:44

En lugar de acceder a las celdas del DBGrid, es mejor que accedas a los campos del DataSet asociado. Puedes utilizar FieldByName.

Código Delphi [-]
  DBGrid.DataSource.DataSet.FieldByname('Importe').AsInteger;


La franja horaria es GMT +2. Ahora son las 11:51: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