Fazer procedimento gravar o registro

Delphi

10/08/2009

Estou com um programa que da baixa no saldo do cliente atraves de um lançamento de credito, porem todo lançamento seja ele DEBITO OU CREDITO possui um valor no campo SALDO_CLIENTE que vai acompanhando o valor do saldo cliente.

Quando gera um lançamento para cobrança ou seja, o campo tipo será DEBITO e o saldo do cliente será

CLIENTES.SALDOCLIENTE:= CLIENTES.SALDOCLIENTE - LANCAMENTO.VALOR

Logo apos
LANCAMENTO.SALDOCLIENTE:= CLIENTES.SALDOCLIENTE


Quando é dado baixa no cliente ou seja, o campo tipo será CREDITO e o saldo do cliente sera

CLIENTES.SALDOCLIENTE := CLIENTES.SALDOCLIENTE +
EDTBAIXA.TEXT

Logo apos
LANCAMENTO.SALDOCLIENTE:= CLIENTES.SALDOCLIENTE

Meu problema é o seguinte:

Quando vai dar baixa o campo SALDOCLIENTE fica em branco ou seja ´nulo´ já tentei
varias coisas e nao grava nada nesse campo. Apenas quando é debito.


dmdados.DsLancamentos.Post;
 dmdados.DsLancamentos.Refresh;
 dmdados.DsLancamentos.Last;
 AtualizaSaldo;


procedure Tfrm_baixas.AtualizaSaldo();
begin
 dmdados.TClientes.Edit;
 dmdados.TClientesSALDOCLIENTE.Value :=
 dmdados.TClientesSALDOCLIENTE.Value + strtofloat(edtbaixa.Text);
 dmdados.TClientes.Post;
 ValorSaldo := dmdados.TClientesSALDOCLIENTE.Value;
 showmessage(floattostr(ValorSaldo));
end


procedure Tfrm_baixas.FormClose(Sender: TObject; var Action: TCloseAction);
begin

   dmdados.DsLancamentos.Edit;
   dmdados.DsLancamentosSALDO_CLIENTE.Value := ValorSaldo;
   dmdados.DsLancamentos.Post;
   dmdados.DsLancamentos.Refresh;

   dmdados.TLancamentos.Close;
   dmdados.TClientes.Close;
   dmdados.TItens.Close;
   dmdados.DsLancamentos.Close;
end;


Por favor, eu gostaria de saber o que está acontecendo.


Crawler

Crawler

Curtidas 0

Respostas

Keron

Keron

10/08/2009

Já tentou verivicar qual valor está chegando nessa parte do código?

procedure Tfrm_baixas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   
   ShowMessage(FloatToStr(ValorSaldo)); // apenas para ver se o erro está acontecendo na gravação ou se está ´valorSaldo´ está chegando zerado.

   dmdados.DsLancamentos.Edit;
   dmdados.DsLancamentosSALDO_CLIENTE.Value := ValorSaldo;
   dmdados.DsLancamentos.Post;
   dmdados.DsLancamentos.Refresh;

   dmdados.TLancamentos.Close;
   dmdados.TClientes.Close;
   dmdados.TItens.Close;
   dmdados.DsLancamentos.Close;
end; 



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

10/08/2009

outra coisa... no seu caso, não use [i:30f27fceaf].Value[/i:30f27fceaf], pois se o valor for nulo, nada será calculado. passe a usar [i:30f27fceaf].AsFloat[/i:30f27fceaf], por exemplo.


GOSTEI 0
Crawler

Crawler

10/08/2009

Eu já fiz essa verificação na caixa de mesagem e esta me retornando o valor correto.

Mas no banco aparece compo nulo.

estou usando delphi7, firebird, paleta interbase/


GOSTEI 0
Crawler

Crawler

10/08/2009

deem uma olhada nesse POST:

http://forum.devmedia.com.br/viewtopic.php?p=91381&sid=5ac553bd5251f54793a466b7a300285f

o cara esta usando dbexpress, tem como fazer uma transação com os componentes do interbase?

ses DBXPress;
Evento OnClick De Um Botão Qualquer(Sender : Tobject);
Var
Transacao : TTransactionDesc;
Begin
Transacao.TransactionID := 1;
Transacao.IsolationLevel := xilREPEATABLEREAD;
SqlConnection.StartTransaction(Transacao);
Try
Tabela.Insert;
Tabela.FieldByName(´teste´).Asstring := ´tudo ok´;
Tabela.Post;
Tabela.ApplayUpdates(0);
SqlConnection.Commit(Transacao);
Except
SqlConnection.Rollback(Transacao);
End;
End; 



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

10/08/2009

o IBX tem o IBTransaction.


GOSTEI 0
Crawler

Crawler

10/08/2009

Deve ser outra coisa pois ele da um ´insert´ no dataset antes e o campo não grava nada no banco.

Será que esse campo tem um problema?

ele sempre fica nulo. O que está acontecendo?


GOSTEI 0
POSTAR