SOMAR quantidade
uso delphi - firebird
tenho um campo quantidade em uma tabela que é exibida no dbgrid principal, acrescento quantidade no dbgrid quando clico duas vezes em outro dbgrid que me mostra os produtos cadastrados , os campos são codigo,nome,quantidade, valor. Mais em especial a quantidade...
bom quando clico duas vezes em um regsitro do dbgrid de produtos , ele adiciona no dbgrid principal, a questão é, se eu addicionar o msm registro, ele repeti no dbgrid...ao inves disso queria q mudasse a quantidade sabendo q é o msm registro.
epsero q tenham intendido...ABRAÇOS
tenho um campo quantidade em uma tabela que é exibida no dbgrid principal, acrescento quantidade no dbgrid quando clico duas vezes em outro dbgrid que me mostra os produtos cadastrados , os campos são codigo,nome,quantidade, valor. Mais em especial a quantidade...
bom quando clico duas vezes em um regsitro do dbgrid de produtos , ele adiciona no dbgrid principal, a questão é, se eu addicionar o msm registro, ele repeti no dbgrid...ao inves disso queria q mudasse a quantidade sabendo q é o msm registro.
epsero q tenham intendido...ABRAÇOS
Thiagoangra2
Curtidas 0
Respostas
Afarias
21/09/2009
|bom quando clico duas vezes em um regsitro do dbgrid de produtos , ele
|adiciona no dbgrid principal,
Acho q aqui vc quer dizer que dá um APPEND no DataSet ligado ao DBGrid principal, e insere valores a partir do DataSet ligado ao DBGrid produtos
|se eu addicionar o msm registro, ele repeti no dbgrid...ao inves disso queria
|q mudasse a quantidade sabendo q é o msm registro.
Antes de dar um APPEND, veja se não existe registo do produto no DataSet, algo assim:
T+
|adiciona no dbgrid principal,
Acho q aqui vc quer dizer que dá um APPEND no DataSet ligado ao DBGrid principal, e insere valores a partir do DataSet ligado ao DBGrid produtos
|se eu addicionar o msm registro, ele repeti no dbgrid...ao inves disso queria
|q mudasse a quantidade sabendo q é o msm registro.
Antes de dar um APPEND, veja se não existe registo do produto no DataSet, algo assim:
ProdutoID := DataSetProduto.FieldByName(´PRODUTO_ID´).AsInteger; if not DataSetVenda.Locate(´PRODUTO´, ProdutoID, []) then begin DataSetVenda.Append; // seu código nomal... end else begin DataSetVenda.Edit; DataSetVenda.FieldByName(´QTDE´).AsInteger := DataSetVenda.FieldByName(´QTDE´).AsInteger+1; DataSetVenda.Post; end;
T+
GOSTEI 0
Thiagoangra2
21/09/2009
|bom quando clico duas vezes em um regsitro do dbgrid de produtos , ele
|adiciona no dbgrid principal,
Acho q aqui vc quer dizer que dá um APPEND no DataSet ligado ao DBGrid principal, e insere valores a partir do DataSet ligado ao DBGrid produtos
|se eu addicionar o msm registro, ele repeti no dbgrid...ao inves disso queria
|q mudasse a quantidade sabendo q é o msm registro.
Antes de dar um APPEND, veja se não existe registo do produto no DataSet, algo assim:
T+
ProdutoID := DataSetProduto.FieldByName(´PRODUTO_ID´).AsInteger; if not DataSetVenda.Locate(´PRODUTO´, ProdutoID, []) then begin DataSetVenda.Append; // seu código nomal... end else begin DataSetVenda.Edit; DataSetVenda.FieldByName(´QTDE´).AsInteger := DataSetVenda.FieldByName(´QTDE´).AsInteger+1; DataSetVenda.Post; end;
amigo o q seria produto_id? vlw
GOSTEI 0
Afarias
21/09/2009
amigo o q seria produto_id? vlw
O código identificador do produto? sua chave primária para produto?
T+
GOSTEI 0
Thiagoangra2
21/09/2009
[quote:43319ea8f4=´thiagoangra2´]amigo o q seria produto_id? vlw
O código identificador do produto? sua chave primária para produto?
T+[/quote:43319ea8f4]
amigo ficou assim... mais deu erro nesta linha if dm.cdsitem.Locate(´CODIGO´, dm.cdsitem.Fields[0].Text,[loPartialKey]) then
begin
if dm.cdsitem.Locate(´CODIGO´, dm.cdsitem.Fields[0].Text,[loPartialKey]) then
begin
dm.cdsitem.Edit;
dm.cdsitem.FieldByName(´QUANTIDADE´).AsInteger:=dm.cdsitem.fieldByName(´QUANTIDADE´).AsInteger+1;
dm.cdsitem.Post;
end
else
begin
dm.cdsitem.Active:=true;
dm.cdsitem.Insert;
dm.cdsitemCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
dm.cdsitemQUANTIDADE.AsInteger:=dm.cdsprodutoQuantidade.asinteger;
dm.cdsitemPvenda.AsInteger:=dm.cdsproPVENDA.AsInteger;
dm.cdsitem.Post;
end;
end;
GOSTEI 0
Afarias
21/09/2009
mais deu erro nesta linha
Sempre informe a mensagem de erro ou fica difícil entender o problema
T+
GOSTEI 0
Thiagoangra2
21/09/2009
[quote:1d60a35de1=´thiagoangra2´]mais deu erro nesta linha
Sempre informe a mensagem de erro ou fica difícil entender o problema
T+[/quote:1d60a35de1]
mals eskeci de colocar o erro....ta aí
expression expected but nothing found.
GOSTEI 0
Afarias
21/09/2009
bom, acredito q tenha algo a ver com a linha:
if dm.cdsitem.Locate(´CODIGO´, dm.cdsitem.Fields[0].Text,[loPartialKey]) then
no mínimo tem um erro de lógica ai... vc não deve procurar no DataSet com um valor do próprio DataSet (cdsItem). Mude para:
T+
if dm.cdsitem.Locate(´CODIGO´, dm.cdsitem.Fields[0].Text,[loPartialKey]) then
no mínimo tem um erro de lógica ai... vc não deve procurar no DataSet com um valor do próprio DataSet (cdsItem). Mude para:
var
Codigo: string; // se o código é string
begin
{...}
Codigo := DataSetOndeOUsuarioSelecionaOProduto.FieldByName(´CODIGO´).AsString;
if dm.cdsitem.Locate(´CODIGO´, Codigo, [loPartialKey]) then
{...}
T+
GOSTEI 0
Thiagoangra2
21/09/2009
bom, acredito q tenha algo a ver com a linha:
if dm.cdsitem.Locate(´CODIGO´, dm.cdsitem.Fields[0].Text,[loPartialKey]) then
no mínimo tem um erro de lógica ai... vc não deve procurar no DataSet com um valor do próprio DataSet (cdsItem). Mude para:
Rapaz vlw msm pela moral
T+
var
Codigo: string; // se o código é string
begin
{...}
Codigo := DataSetOndeOUsuarioSelecionaOProduto.FieldByName(´CODIGO´).AsString;
if dm.cdsitem.Locate(´CODIGO´, Codigo, [loPartialKey]) then
{...}
GOSTEI 0