Fórum Moviemnto e Saldo em conta DBGrid #525805

14/07/2015

0

Boa tarde!
sou novo no delphi ja fiz pessquisar mais nao consigo chega a soluciona um pegeno preblema tenho quero pega contas Recebida e Contas Paga e criar um saldo no DBGrind.
igual ao exemplo da foto.
[img]http://arquivo.devmedia.com.br/forum/imagem/425467-20150714-183300.png[/img]

Minha tabela em MySQL
Klissmann Rodrigues

Klissmann Rodrigues

Responder

Post mais votado

16/07/2015

nao entendi o pq somar o valor das vendas...


quando vce faz uma venda nao registra onde foi recebido (banco, caixa)?

basicamnete vc tem a tabelas de tipos de contas que vc ta chamando de BANCO e tem a tabela de movimentacao vc chama de CONTA.

a tabela de vendas é um registro das vendas que deve alimentar a tabela de movimentacao informando que conta foi creditado o valor.

Dorivan Sousa

Dorivan Sousa
Responder

Gostei + 1

Mais Posts

15/07/2015

Dorivan Sousa

como é a sua extrutura do banco de dados?

voce tem uma tabela de movimento por contas? ou vc tem uma tabela de contas a receber e outra de contas a pagar?
Responder

Gostei + 0

15/07/2015

Klissmann Rodrigues

tenho um MySQL
BANCO pra o nome da conta do banco.
CONTA pra conta ARECEBIDA e CONTA APAGA
VENDA pra cadastra os valores vendido
Responder

Gostei + 0

15/07/2015

Klissmann Rodrigues

[img]http://arquivo.devmedia.com.br/forum/imagem/425467-20150715-135057.png[/img]

procedure TForm1.CDSBancoCalcFields(DataSet: TDataSet);
  var
  Con: TDBXConnection;
  Cmd: TDBXCommand;
  Reader: TDBXReader;
  SQL : TStringList;

begin
  Con := TDBXConnectionFactory.GetConnectionFactory.GetConnection ('krtecnologia', 'krtecnologia', '12345');
  Cmd := Con.CreateCommand;
  SQL := TStringList.Create;
  SQL.Add('SELECT sum(CASE WHEN CATEGORIA = ');
  SQL.Add(QuotedStr('ARECEBER'));
  SQL.Add(' THEN VPAGO END) as valor_credito, ');
  SQL.Add('sum(CASE WHEN CATEGORIA = ');
  SQL.Add(QuotedStr('APAGAR'));
  SQL.Add(' THEN VPAGO END) as valor_debito ');
  SQL.Add('FROM CONTA WHERE STATU="PAGO" AND CONTA= ');
  SQL.Add(QuotedStr(CDSBancoNOME.AsString));
  Cmd.Text := SQL.Text;
  Reader := Cmd.ExecuteQuery;

    if Reader.Next then
  begin
    CDSBancovTOTAL.AsString := FormatCurr('R$ ###,###,##0.00', CDSBancoSNICIAL.AsCurrency + Reader.Value[0].AsDouble - Reader.Value[1].AsDouble);
  end;

end;


como este codigo de cima conseguer soma valo de saldo incial + contas recebidas - contas paga;

esta fatando somas os vaores das vendas do MySQL Venda.
Responder

Gostei + 0

16/07/2015

Klissmann Rodrigues

descreva com devo fazer. por favor!
Responder

Gostei + 0

16/07/2015

Dorivan Sousa

eu tenho as minhas tabelas de contas a receber, contas a pagar, vendas isso são as movimentacoes que o sistema permite.

agora o controle de saldo de banco, caixa eu tenho a tabela de gerencia, onde eu separo por contas caixas.

nessa tabela de gerencia tem o campo pra informar qual a movimentacao (receber, pagar, vendas, etc) e qual a conta que movimentou (banco ou caixa)

por exemplo quando eu faço um recebimento eu atualizo o status da conta como recebida e registro na tabela de gerencia a data, o usuario, a movimentacao q gerou (receber), a conta pra onde foi o dinheiro (banco, caixa), o valor e um historico (referente ao recebimento do cliente fulano de tal com a fatura tal), e se foi credito ou debito (nesse caso credito)

o mesmo se repete pra qualquer outra movimentacao... pagar, vendas, ou outra q vc criar depois como devolucao de vendas, ou pagamento de funcionario.

n sei se me expliquei bem... mas uma coisa sao as movimentacoes que vc tem no sistema, outra é a tabela q unifica essas movimentacoes (gerenia), ate pq vc pode fazer uma venda hoje e cancelar amanha entao cada operacao acorre na sua data e gera o seu registro na tabela de gerencia.

e tem coisas que vc precisa lancar que nao sao movimentacoes a taxa de manutencao da conta, tarifas bancarias, se vc pegar um emprestmo tem q creditar e gerar contas a pagar....
Responder

Gostei + 1

16/07/2015

Klissmann Rodrigues

se não for pede muito posta um código por gentileza.

qual é melhor TDBXConnection ou sqlquery?
Responder

Gostei + 0

17/07/2015

Dorivan Sousa

ai vc tem q desenvolver sua ideia, eu nao tenho como postar o codigo pq isso q eu falei é apenas parte da minha aplicação...

começa a fazer q eu vou tentar ajudar no q puder.
Responder

Gostei + 0

17/07/2015

Klissmann Rodrigues

fiz desta forma deu certo o saldo em conta!

procedure TForm1.CDSBancoCalcFields(DataSet: TDataSet);
  var
  Con: TDBXConnection;
  Cmd: TDBXCommand;
  Reader: TDBXReader;
  SQL: TStringList;

begin
  Con := TDBXConnectionFactory.GetConnectionFactory.GetConnection ('krtecnologia', 'krtecnologia', '12345');
  Cmd := Con.CreateCommand;
  SQL := TStringList.Create;
  SQL.Add(' SELECT sum(CASE WHEN TIPO = "CREDITO" ');
  SQL.Add(' AND STATU = ');
  SQL.Add(QuotedStr('PAGO'));
  SQL.Add(' THEN VALOR END) as valor_credito, ');
  SQL.Add(' sum(CASE WHEN TIPO = "DEBITO" ');
  SQL.Add(' AND STATU = ');
  SQL.Add(QuotedStr('PAGO'));
  SQL.Add(' THEN VALOR END) as valor_debito, ');
  SQL.Add(' sum(CASE WHEN VENDA = "APRAZO" ');
  SQL.Add(' AND STATU = ');
  SQL.Add(QuotedStr('PEDENTE'));
  SQL.Add(' THEN VALOR END) as valor_prazo ');
  SQL.Add(' FROM MOVIMENTO WHERE CONTA = ');
  SQL.Add(QuotedStr(CDSBancoNOME.AsString));
  Cmd.Text := SQL.Text;
  Reader := Cmd.ExecuteQuery;

  if Reader.Next then

  begin
    CDSBancovTOTAL.AsString := FormatCurr('###,###,##0.00', (CDSBancoSINICIAL.AsCurrency + Reader.Value[0].AsDouble) - (Reader.Value[1].AsDouble + Reader.Value[2].AsDouble));
  end


[img]http://arquivo.devmedia.com.br/forum/imagem/425467-20150717-155445.jpg[/img]
Responder

Gostei + 0

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

Aceitar