Gravar dados em duas tabelas simultaneamente
Saudações,
estou tendo um pequeno problema no sistema que estou desenvolvendo. É o seguinte quando tento fazer com que os dados da compra sejam jogados em duas tabelas simultaneamente, isso não é feito. Estou usando Dbedit e DBlookupcombobox setados a um Ds e uma table(compraesc = tbesc) e mais uma table(giroesc). A ligação da entrada de dados está com a table compraesc mas eu queria que também fossem salvos os dados na table giroesc. Como faço isso? Deve ser algo bem simples. Se alguém quiser ajudar, vai aí o código:
procedure Tfrmcompesc.btconfirmarClick(Sender: TObject);
begin
fim;
if application.messagebox(´Confirma a Atualização?´,´Confirme´, mb_yesno) = idyes then
begin
try
if dbcod.text <> inttostr(tbescCod_prod.asinteger) then
begin
tbescQtent.asinteger := strtoint(dbqtde.text);
tbgiroCod_prod.asinteger := strtoint(dbcod.text);
tbgiroNome.asstring := dbnome.text;
tbgiroModelo.asstring := dbmodel.text;
tbgiroQt_ent.asinteger := strtoint(dbqtde.text);
tbgiroQt_sai.asinteger := 0;
tbgiroQt_tot.asinteger := tbescQtent.asinteger;
tbesc.post;
tbgiro.post;
tbgiro.close;
tbesc.close;
tbgiro.open;
tbesc.open;
end
Notas: 1= Fim é apenas uma procedure que habilita os botões e os Db´s. Eu especifiquei apenas na TBesc a qtde de entrada o restante ele salva automaticamente. Muito obrigado.
estou tendo um pequeno problema no sistema que estou desenvolvendo. É o seguinte quando tento fazer com que os dados da compra sejam jogados em duas tabelas simultaneamente, isso não é feito. Estou usando Dbedit e DBlookupcombobox setados a um Ds e uma table(compraesc = tbesc) e mais uma table(giroesc). A ligação da entrada de dados está com a table compraesc mas eu queria que também fossem salvos os dados na table giroesc. Como faço isso? Deve ser algo bem simples. Se alguém quiser ajudar, vai aí o código:
procedure Tfrmcompesc.btconfirmarClick(Sender: TObject);
begin
fim;
if application.messagebox(´Confirma a Atualização?´,´Confirme´, mb_yesno) = idyes then
begin
try
if dbcod.text <> inttostr(tbescCod_prod.asinteger) then
begin
tbescQtent.asinteger := strtoint(dbqtde.text);
tbgiroCod_prod.asinteger := strtoint(dbcod.text);
tbgiroNome.asstring := dbnome.text;
tbgiroModelo.asstring := dbmodel.text;
tbgiroQt_ent.asinteger := strtoint(dbqtde.text);
tbgiroQt_sai.asinteger := 0;
tbgiroQt_tot.asinteger := tbescQtent.asinteger;
tbesc.post;
tbgiro.post;
tbgiro.close;
tbesc.close;
tbgiro.open;
tbesc.open;
end
Notas: 1= Fim é apenas uma procedure que habilita os botões e os Db´s. Eu especifiquei apenas na TBesc a qtde de entrada o restante ele salva automaticamente. Muito obrigado.
Elias Jr
Curtidas 0
Respostas
Luizfernando777
31/10/2003
Desculpe,
não entendi o seu código
e nem o que vc precisa,
mas gostaria de saber pq
vc usa o Close e Open no Final,
vc usa Query?
vc usa Table?
se for Table experimente
usar o
DBISaveChange(Table.handle);
não entendi o seu código
e nem o que vc precisa,
mas gostaria de saber pq
vc usa o Close e Open no Final,
vc usa Query?
vc usa Table?
se for Table experimente
usar o
DBISaveChange(Table.handle);
GOSTEI 0
Elias Jr
31/10/2003
Desculpe,
não entendi o seu código
e nem o que vc precisa,
mas gostaria de saber pq
vc usa o Close e Open no Final,
vc usa Query?
vc usa Table?
se for Table experimente
usar o
DBISaveChange(Table.handle);
Olá Luís, olha eu uso uma table, na verdade, duas. Uma está setada a um datasource que por sua vez esta ligado aos dbedit´s. Esta recebe todos os dados salvos. Uso outra table (giroesc) e é essa que não recebe os dados. Por isso que no código eu pus os fields. No caso do close e open funciona como uma forma de refresh(poderia usar o próprio refresh mas eu tentei com ele antes e não funcionou). Você poderia me ajudar nisso? Como faço para salvar os dados nas duas tables? Olha, quanto aquele meu outro problema eu consegui resolver. Utilizei aquela sua dica do fornecedor. Muito obrigado
GOSTEI 0
Edilcimar
31/10/2003
with table1 do
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
with table2 do
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
end;
end;
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
with table2 do
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
end;
end;
GOSTEI 0
Elias Jr
31/10/2003
with table1 do
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
with table2 do
begin
append ou edit;
fieldbyname(´qualquercoisa´).asstring := edit1.text;
post;
end;
end;
Saudações amigo, estou te enviando o código modificado como vc mostrou para que possa analisá-lo junto comigo. O código faz o seguinte: verifica se existe determinado produto na tabela (tbesc = compraesc) caso negativo, ele grava os dados na tbesc (que está setada aos dbedit´s) e grava também na tabela(giroesc, essa não está gravando). Caso exista, ele gravaos dados na tbesc normalmente e edita a tabela de giro. Qualquer dúvida entre em contato por e-mail, messenger ou icq. Obrigado.
procedure Tfrmcompesc.btconfirmarClick(Sender: TObject);
begin
fim;
if application.messagebox(´Confirma a Atualização?´,´Confirme´, mb_yesno) = idyes then
begin
try
if dbcod.text <> inttostr(tbescCod_prod.asinteger) then
begin
with tbesc do
begin
tbescQtent.asinteger := strtoint(dbqtde.text);
tbesc.post;
tbesc.refresh;
end;
with tbgiro do
begin
tbgiroCod_prod.asinteger := strtoint(dbcod.text);
tbgiroNome.asstring := dbnome.text;
tbgiroModelo.asstring := dbmodel.text;
tbgiroQt_ent.asinteger := strtoint(dbqtde.text);
tbgiroQt_sai.asinteger := 0;
tbgiroQt_tot.asinteger := tbescQtent.asinteger;
tbgiro.post;
tbgiro.refresh;
end
end
else
if dbcod.text = inttostr(tbescCod_prod.asinteger) then
begin
with tbgiro do
begin
tbgiro.edit;
tbgiroQt_ent.asinteger := tbgiroQt_ent.asinteger + strtoint(dbqtde.text);
tbgiroQt_sai.asinteger := tbgiroQt_sai.asinteger;
tbgiroQt_tot.asinteger := tbgiroQt_ent.asinteger - tbgiroQt_sai.asinteger;
tbgiro.post;
tbgiro.refresh;
end;
end;
except begin
MessageDlg (´Não foi possível registrar esta compra´, mtInformation,[mbOk],0);
exit;
end;
end;
end;
end;
GOSTEI 0