Fórum SOMAR quantidade #375099
21/09/2009
0
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
Curtir tópico
+ 0Posts
21/09/2009
Afarias
|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
21/09/2009
Thiagoangra2
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
21/09/2009
Afarias
O código identificador do produto? sua chave primária para produto?
T+
Gostei + 0
21/09/2009
Thiagoangra2
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
Gostei + 0
21/09/2009
Afarias
Sempre informe a mensagem de erro ou fica difícil entender o problema
T+
Gostei + 0
22/09/2009
Thiagoangra2
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
22/09/2009
Afarias
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
22/09/2009
Thiagoangra2
var
Codigo: string; // se o código é string
begin
{...}
Codigo := DataSetOndeOUsuarioSelecionaOProduto.FieldByName(´CODIGO´).AsString;
if dm.cdsitem.Locate(´CODIGO´, Codigo, [loPartialKey]) then
{...}
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)