Selecao DevMedia QUERO SER PRIME

Fórum SOMAR quantidade #375099

21/09/2009

0

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


Thiagoangra2

Thiagoangra2

Responder

Posts

21/09/2009

Afarias

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


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+


Responder

Gostei + 0

21/09/2009

Thiagoangra2

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



amigo o q seria produto_id? vlw


Responder

Gostei + 0

21/09/2009

Afarias

amigo o q seria produto_id? vlw


O código identificador do produto? sua chave primária para produto?


T+


Responder

Gostei + 0

21/09/2009

Thiagoangra2

[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;



Responder

Gostei + 0

21/09/2009

Afarias

mais deu erro nesta linha


Sempre informe a mensagem de erro ou fica difícil entender o problema


T+


Responder

Gostei + 0

22/09/2009

Thiagoangra2

[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.


Responder

Gostei + 0

22/09/2009

Afarias

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:

var
  Codigo: string; // se o código é string
  
begin
{...}
  Codigo := DataSetOndeOUsuarioSelecionaOProduto.FieldByName(´CODIGO´).AsString;

  if dm.cdsitem.Locate(´CODIGO´, Codigo, [loPartialKey]) then 
  {...}





T+


Responder

Gostei + 0

22/09/2009

Thiagoangra2

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:
var
  Codigo: string; // se o código é string
  
begin
{...}
  Codigo := DataSetOndeOUsuarioSelecionaOProduto.FieldByName(´CODIGO´).AsString;

  if dm.cdsitem.Locate(´CODIGO´, Codigo, [loPartialKey]) then 
  {...}

Rapaz vlw msm pela moral T+



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar