Fórum Fazer procedimento gravar o registro #373338

10/08/2009

0

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

Responder

Posts

11/08/2009

Keron

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; 



Responder

Gostei + 0

11/08/2009

Emerson Nascimento

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.


Responder

Gostei + 0

11/08/2009

Crawler

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/


Responder

Gostei + 0

11/08/2009

Crawler

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; 



Responder

Gostei + 0

11/08/2009

Emerson Nascimento

o IBX tem o IBTransaction.


Responder

Gostei + 0

11/08/2009

Crawler

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?


Responder

Gostei + 0

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

Aceitar