Ir para conteúdo
Fórum Script Brasil

alemoraes

Membros
  • Total de itens

    33
  • Registro em

  • Última visita

Sobre alemoraes

alemoraes's Achievements

0

Reputação

  1. Leonardo, boa noite Testei aqui seu código que me passou e está funcionando perfeitamente. Tu é o cara camarada. Muito obrigado mesmo. Abraços Tópico RESOLVIDO
  2. Olá vou descrever as tabelas que uso P_CON_CODIGO referencia o campo CON_CODIGO (chave estrangeira ) tabela CONTAS CON_CODIGO (PK) CON_NUMERODACONTA CON_AGENCIA CON_SALDO_INICIAL CON_DATAINCLUSAO tabela MOVIMENTACAOBANCARIA MOV_CODIGO (PK) CON_CODIGO (FK) MOV_DATADOLANCAMENTO MOV_SALDOANTERIOR MOV_CREDITO MOV_DEBITO MOV_SALDOATUAL MOV_DESCRICAO
  3. Leonardo, perfeito Inverti a ordem e está funcionando perfeitamente. Muito obrigado. A propósito, gostaria de perguntar mais uma dúvida que tenho neste mesmo stored procedure. o campo COD_CONTA é uma chave estrangeira na tabela MovimentacaoBancaria, e no cadastro de cada conta tem um campo com saldo inicial CON_SALDO_INICIAL. Tem como trazer esse valor do saldo inicial no primeiro lançamento na variável v_saldo_anterior (em vez do 0 - zero). Gostaria de uma ajuda sua, agradecendo antecipadamente.
  4. Leonardo boa tarde Obrigado pela ajuda segue o código SET TERM ^ ; CREATE PROCEDURE MOVIMENTACAOBANCARIA_INS ( P_CON_CODIGO Integer, P_MOV_CREDITO Numeric(15,2), P_MOV_DEBITO Numeric(15,2), P_MOV_DESCRICAO Varchar(40) ) AS DECLARE VARIABLE v_saldo_anterior numeric(15,2); DECLARE VARIABLE v_saldo_atual numeric(15,2); DECLARE VARIABLE v_lancamento_anterior integer; BEGIN select max(MOV_CODIGO) From movimentacaobancaria where CON_CODIGO =:p_con_codigo into v_lancamento_anterior; if (v_lancamento_anterior is null) then begin v_saldo_anterior = 0; end else begin select MOV_SALDOATUAL from movimentacaobancaria where MOV_CODIGO = :v_lancamento_anterior into v_saldo_anterior; v_saldo_anterior = coalesce(:v_saldo_anterior, 0); v_saldo_atual = :v_saldo_anterior + :p_mov_credito - :p_mov_debito; end insert into movimentacaobancaria ( con_codigo, mov_datadolancamento, mov_saldoanterior, mov_credito, mov_debito, mov_saldoatual, mov_descricao) values ( :p_con_codigo, 'now', :v_saldo_anterior, :p_mov_credito, :p_mov_debito, :v_saldo_atual, :p_mov_descricao); END^ SET TERM ; ^ GRANT EXECUTE ON PROCEDURE MOVIMENTACAOBANCARIA_INS TO SYSDBA;
  5. Boa Noite Estou fazendo um pequeno programa para movimento de conta corrente mas a stored procedure que fiz no Firebird 2.5 apresenta um detalhe que não consigo resolver. Quando realizo o primeiro lançamento o saldo atual aparece null. A partir do segundo lançamento a procedure calcula o saldo atual normalmente. Exemplo: Saldo Ant. Crédito Débito Saldo Atual 0.00 200.00 0.00 0.00 Primeiro lançamento 200.00 100.00 0.00 300.00 Segundo lançamento ... Gostaria da ajuda de vocês. Abraços
  6. Bom dia, Tenho um formulário de conta corrente diário que trabalha com duas tabelas mestre detalhe TBCAIXA e TBCONTAS. Faço os lançamentos todos os dias, com data, escolho a conta, histórico e digito os valores. Eu queria fazer um relatório tipo Croostab com uma caixa de diálogo em que eu pudesse filtrar por ano para que as contas aparecessem uma por uma no relatório somadas por mês de janeiro a dezembro. Gostaria muito de uma ajuda pois nunca fiz Relatório Croostab no FastReport. Utilizo Delphi XE7, Firedac (FDQuerys) e banco de dados Firebird 2.5 Obrigado.
  7. Jhonas, obrigado pela ajuda. Apesar dos testes, ainda sim continua a execução do código mesmo tratando com a exception. Os seus exemplos estão perfeitos. Pode ter dado algum Bug no Delphi, não sei dizer. O que eu fiz foi alterar no banco de dados Firebird, ou seja, primeiro deletei todos os registros envolvendo as duas tabelas master / detail , depois fui na tabela Filha e alterei na FK_LOCALIZACAO_ITENS_PATRIMONIO para On Delete Cascade. Está funcionando nesta questão do foreign key. Resolvido.
  8. Jhonas boa tarde peço sua ajuda não consegui resolver. Criei uma variável global tipo boolean o registro continua sendo executado. Veja como eu fiz procedure TfrmPatrimonio.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if vRetorno = true then begin if pos('violation of FOREIGN KEY constraint',e.Message) <> 0 then begin Showmessage('ERRO: Este Patrimônio encontra-se em USO!. Exclua-o no Cadastro de Localização primeiro!'); end; Abort; end; end;
  9. Coloquei um componente Application Events para tratar um erro de violação de chave estrangeira, mas apesar da mensagem aparecer e dar um OK o código é executado mesmo assim: segue o código no Application Events: procedure TfrmPatrimonio.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if pos('violation of FOREIGN KEY constraint "FK_LOCALIZACAO_ITENS_PATRIMONIO" on table "LOCALIZACAO_ITENS"',e.Message) > 0 then begin Showmessage('ERRO: Este Patrimônio encontra-se em USO!. Exclua-o no Cadastro de Localização primeiro!'); Exit; end; end;
  10. Jhonas obrigado pela dica Eu tentei mas não tive sucesso. Consegui resolver alterando uma linha da função acima em vez de: WHERE B.LOC_CODIGO = '''+ IntToStr(DBGrid1.SelectedRows.Count) + ''' alterei para: WHERE B.LOC_CODIGO = '''+ DBGrid1.DataSource.DataSet.FieldByName('LOC_CODIGO').AsString +''' e funcionou. No evento OnCellClick do DBGrid ficou: procedure TfrmLocalizacao.DBGrid1CellClick(Column: TColumn); begin if dmDados.tblLocalizacao.State in [dsBrowse] then begin FDQuerySomaColuna.Open; lblTotal.Caption:= FormatCurr('R$ #,0.00', SomaLocalizacaoGrid); end; end; Esquecí: Resolvido Esquecí: Resolvido
  11. Boa tarde Tenho 02 tabelas LOCALIZACAO e LOCALIZACAO_ITENS (Master-Detail) funcionando perfeitamente. Apesar de pesquisar no Forum não consegui encontrar o que eu queria fazer: é o seguinte: Quando clico em um registro no DBGridMaster da tabela Pai ele mostra os registros no DBGridDetail da tabela Filha, mas quero trazer a soma Total para aparecer no Label (lblTotal). Seguem os códigos que fiz: function TfrmLocalizacao.SomaLocalizacaoGrid: Currency; begin with FDQuerySomaColuna do begin Close; Active:= true; SQL.Clear; SQL.Text:= 'SELECT SUM(A.QUANT * A.VALOR_UNITARIO) As Total, B.LOC_CODIGO FROM LOCALIZACAO_ITENS A INNER JOIN LOCALIZACAO B ON (A.LOC_CODIGO = B.LOC_CODIGO) WHERE B.LOC_CODIGO = '''+ IntToStr(DBGrid1.SelectedRows.Count) + ''' GROUP BY B.LOC_CODIGO'; Open; Result := FieldByName('Total').AsCurrency; end; end; No evento On CellClick procedure TfrmLocalizacao.DBGrid1CellClick(Column: TColumn); begin if dmDados.tblLocalizacao.State in [dsBrowse] then lblTotal.Caption:= FormatCurr('R$ #,0.00', SomaLocalizacaoGrid); end;
  12. Jhonas obrigado pelos posts Eu compreendi o que você me passou sobre gravar o caminho da foto, pois é bem mais prático e rápido e senão me engano o componente OpenDialog tem a propriedade InitialDir onde pode deixar como default o caminho da pasta para escolher a foto, e escolhendo a foto pelo OpenDialog, o endereço da foto fica gravado em um DBEditFoto por exemplo. (Resolvido)
  13. Jhonas, desculpe a demora, agora que retornei ao projeto. Estou usando o componente EDBImage Banco Firebird 2.5 // BOTÃO PARA INSERIR FOTO procedure TfrmPatrimonio.BitBtn2Click(Sender: TObject); var vJpg: TJpegImage; begin if odImagem.Execute then begin vJpg:= TJpegImage.Create; vJpg.LoadFromFile(odImagem.FileName); Clipboard.Assign(vJpg); EDBImageFoto.PasteFromClipboard; vJpg.Free; end; end; // BOTÃO GRAVAR procedure TfrmPatrimonio.btnGravarClick(Sender: TObject); begin if dmDados.FDQueryPatrimonioPAT_DESCRICAO.AsString = '' then begin Showmessage('Descrição do Patrimônio deve ser informado!'); DBEditDescricao.SetFocus; Abort; end; if dmDados.FDQueryPatrimonioPAT_FOTO.AsString then begin Showmessage('Inclua uma foto para o Patrimônio.'); //EDBImageFoto.SetFocus; BitBtn2.SetFocus; Abort; end; if dmDados.dsPatrimonio.State in [dsInsert, dsEdit] then begin dmDados.tblPatrimonio.Post; dmDados.tblPatrimonio.Refresh; lblTotal.Caption:= FormatCurr('R$ #,0.00', SomaColuna); // atualiza soma na coluna valor total end; // restaura; desabilita; DBLookupComboBox1.SetFocus; end;
  14. Boa noite Preciso fazer uma validação do campo PAT_FOTO (campo blob no Firebird para Imagem) antes de Salvar, ou seja, se não escolheu a Foto e tentar salvar aparece a mensagem de aviso. Só que mesmo selecionando a foto e tentar salvar, a mensagem de aviso aparece e não deixar gravar no banco. Estou usando FDQuery (Firedac) e não achei a instrução AsBlob para o campo Segue o código: (Coloquei este código no botão de Gravar antes de dar o Post) if dmDados.FDQueryPatrimonioPAT_FOTO.AsString = ‘’ then begin Showmessage('Inclua uma foto para o Patrimônio.'); BitBtn2.SetFocus; Abort; end;
  15. Funcionou assim procedure TfrmPatrimonio.btnNovoClick(Sender: TObject); begin if not (dmDados.tblPatrimonio.State in [dsInsert, dsEdit]) then dmDados.tblPatrimonio.Insert; end; Obrigado Jhonas RESOLVIDO
×
×
  • Criar Novo...