Fórum Problema em ATUALIZAÇÂO NO BD #379500

14/06/2010

0

om galera seguinte, tenho 3 forms e 2 tabelas no BANCO DE DADOS, u forme de LUCRO que liga com a tabela LUCRO e o FORM GASTO que liga com a tabela GASTOS, e o 3 form pega o total de lucro que ta no BD e diminui pelo total de GASTOS , só que quando eu adiciono alguma coisa na tabela LUCRO ou GASTO esta certinho , eu configo no BD e esta adicionando na tabela na mesma hora, o problema é o seguinte , depois que eu adiciono e vou fazer o calculo no form 3 , ele não pega o dado que eu coloquei na hora, eu tenho que feixar o form e abrir pro form 3 identificar o valor que eu coloquei na tabela :S ,

alguem teria uma dica?
Jonatan

Jonatan

Responder

Posts

14/06/2010

Fábio Cruz

está utilizando ClientDataSet?

Se estiver está dando um ApplyUpdates?
Responder

Gostei + 0

14/06/2010

Jonatan

está utilizando ClientDataSet?

Se estiver está dando um ApplyUpdates?


Estou usando ClienteDataSet sim.

não estou dando ApplyUpdates não
Responder

Gostei + 0

14/06/2010

Fábio Cruz

Coloque após o post o applyupdates
Responder

Gostei + 0

14/06/2010

Jonatan

está utilizando ClientDataSet?

Se estiver está dando um ApplyUpdates?


seguinte eu uso este codigo

Query1. para fazer o select do LUCRO
Query2. para fazer o select do gastos
Query3. para fazer a conexão da busca

Código: procedure TForm5.BitBtn1Click(Sender: TObject);
begin
with IBQuery3 do
begin
close;
sql.clear;
sql.add (' select coalesce(sum(l.valor),0)TOTALLUCROS,');
sql.add (' (select coalesce(sum(g.valor),0)                  ');
sql.add(' from gastos g  ');
sql.add(' where g.data between :data1 and :data2) TOTALGASTOS ');
sql.add(' from lucro l ');
sql.add(' where l.data between :data1 and :data2 ');
ParambyName('data1').asDate := strtodate(MaskEdit1.text);
ParambyName('data2').asDate := strtodate(MaskEdit2.text);
open;
end;
txtlucro.text := FormatFloat('0.00',IBQuery3.Fields[0].AsCurrency);
txtgastos.text := FormatFloat('0.00',IBQuery3.Fields[1].AsCurrency);
txtresultado.text := FormatFloat('0.00',IBQuery3.Fields[0].AsCurrency-IBQuery3.Fields[1].AsCurrency);
end;
Responder

Gostei + 0

14/06/2010

Fábio Cruz

Mas vc está dando o ApplyUpdates após a inclusão dos novos valores?

Pq nesse código vc está realizando a busca fisica no BD. Os novos valores qndo são inseridos pelo ClientDataSet, por padrão, ficam em memória, após fechar ou dar o ApplyUpdates que são efetivados no BD.
Responder

Gostei + 0

14/06/2010

Jonatan

Mas vc está dando o ApplyUpdates após a inclusão dos novos valores?

Pq nesse código vc está realizando a busca fisica no BD. Os novos valores qndo são inseridos pelo ClientDataSet, por padrão, ficam em memória, após fechar ou dar o ApplyUpdates que são efetivados no BD.




Assim eu estou dando um COMMIT e não ApplyUpdates.
verifique o codigo aqui


procedure TFormLucro.BitBtn2Click(Sender: TObject);
begin
IBQuery1.close;
IBQuery1.SQL.Text:= ' insert into lucro(descricao,data,valor) values (:p1,:p2,:p3)';
IBQuery1.ParamByName('p1').AsString := Edit1.text;
IBQuery1.ParamByName('p2').AsDate := StrToDate (MaskEdit1.text);
IBQuery1.ParamByName('p3').AsFloat := StrToFloat(Edit3.text);
IbQuery1.execSQL;
IBTransaction1.Commit;
Edit1.Text:= '';
MaskEdit1.Text:= '';
Edit3.Text:= '';
IBQuery2.close;
IBQuery2.Open;
Showmessage('Salvo com Sucesso!!!');

Responder

Gostei + 0

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

Aceitar