Ir para conteúdo
Fórum Script Brasil

renanbg

Membros
  • Total de itens

    67
  • Registro em

  • Última visita

Tudo que renanbg postou

  1. Olá pessoal. Quero dar ao usuario a possibilidade de alterar detalhes da fonte do relatorio como tamanho, cor, negrito, etc. Para isso, estou usando esse codigo no evento beforeprint da banda COLUMNHEADER. Funciona, porém a fonte da SUMMARYBAND também é alterada. Alguém sabe onde posso estar errando? var i : Integer; begin for i:= 0 to ComponentCount - 1 do begin if (Components[i].ClassName = TQrLabel.ClassName) then begin TQrLabel(Components[i]).Font.Style:= [fsbold]; TQrLabel(Components[i]).Font.Name := 'Arial'; TQrLabel(Components[i]).Font.Color:= clRed; end; end; end;
  2. De fato o campo, CEDENTE, que trago via inner join é o problema. Antes eu usava lookup e ao incluir já aparecia, porém eu mantinha uma tabela com 1200 registros aberta só para isso. Agora com o uso do inner join, vou precisar refazer a consulta, após a inclusão, para então aparecer o nome no dbgrid.
  3. Essa é a tela de contas a pagar. Como pode ver eu faço filtros por cedente, vencimento, numero do documento ou nota A SQL base desses filtros é essa: SELECT CP.CODIGO, CP.NF, CP.DATA, CP.NUM_DOC, CP.VALOR, CP.VENCIMENTO, CP.PARCELA, CE.CEDENTE AS NOME_CEDENTE FROM CONTASPAGAR CP INNER JOIN CEDENTES CE ON CE.CODIGO = CP.COD_CEDENTE Eu consigo fazer a baixa, alteração, exclusão sem problemas. A inclusão de um novo registro que é o problema. Ao clicar naquele botão com o simbolo de +, eu abro uma nova tela onde preencho os dados que estão aparecendo no dbgrid. Ao gravar o nome do cedente não aparece no dbgrid. Se fosse um campo lookup apareceria normalmente, mas via inner join vou ter que refazer a consulta a cada inclusão?
  4. Resolvido atualizando o ibx para a versão 7.08 do delphi 7
  5. Nunca recebi esse tipo de erro. Estou usando ibquery + datasetprovider + clientdataset + datasource e o codigo é esse. Da erro no applyupdates with FrmDm.cdsCheques do begin DisableControls; //Desabilita controles First; while not eof do begin if FieldByName('MARCADO').AsString = 'S' then begin Edit; FieldByName('STATUS').AsString := 'B'; FieldByName('OBS').AsString := Edobs.Text; FieldByName('DATA_BAIXA').AsDateTime := Date; Post; end; Next; end; if ApplyUpdates(0) > 0 then Abort; EnableControls; //Habilita controles end;
  6. Então Jhonas. Já uso o updatesql em conjunto com a query e o datasource para editar, gravar e excluir. Agora adicionei uma nova query somente para consultas, mas perdi o controle dos botões alterar e cancelar, que eu fazia no evento de onstatechange do datasource que grava.
  7. Agradeço a ajuda Jhonas, mas isso é um problema no filtro da query clientes que fica ativo, mesmo eu fechando ela. Se eu acessar a tela de contas a receber diretamente, sem passar pela de clientes, tudo da certo. Descobri agora que isso ocorre porque fiz o select usando a propria query de clientes. Seria correto usar uma query para buscas e outra para gravar/editar/excluir?
  8. O select está correto, o problema acontece quando faço a busca de um cliente no cadastro de clientes. Aparentemente, mesmo fechando a query ao sair do formulario, o filtro que fiz permanece ativo. Então ao acessar a tela de contas a receber, a busca traz todas contas que selecionei, porém com o nome do cliente em branco, exceto o nome do cliente pesquisado anteriormente,
  9. Estou usando componentes da paleta interbase. O inner join não atualiza traz os nomes dos clientes no dbgrid. Para que isso ocorra, eu faço esse procedimento Faço a busca de um cliente no cadastro de clientes Select nome, idade from clientes where nome like ed.text Ao sair do formulario de clientes, fecho a query de clientes. Aí, ao acessar a tela de contas a receber, faço esse select Select * from contas a receber cr inner join clientes cl on cl.codigo = cr.cod_cliente order by vencimento Ocorre que todos os nomes saem em branco, exceto aquele ultimo que pesquisei lá no cadastro de clientes. Porque, mesmo dando um close, a pesquisa não traz todos resultados?
  10. Eu já usava dessa forma, perguntando se desejava inserir mais. Acabei fazendo um contador manual e resolveu.
  11. Sim, essa programação vai dentro do botão gravar. Então assim que gravar o primeiro boleto, preciso limpar os campos para incluir o segundo e assim por diante.
  12. Até tentei montar esse for, mas não consegui fazer ele funcionar. Ele segue automatico, sem permitir que eu faça o lançamento do segundo boleto. var i : Integer; begin for i:=1 to strtoint(edparcelas.text) do if i <> strtoint(edparcelas.text) then begin ShowMessage('Gravei'); Edit2.Clear; Edit3.Clear; Edit1.SetFocus; end else ShowMessage('Commitei e vou embora'); //Sai da tela de cadastro end;
  13. O sistema funciona da seguinte forma. Suponha que o usuário tem em mãos 3 boletos do mesmo cliente e precisa cadastrar esses boletos de forma manual. Uma rotina que lê o código de barras extrai valor e vencimento. Então é preciso informar apenas o nome do cliente e nota. Após a inclusão, todos os campos são limpos e o sistema aguarda a leitura do novo boleto. Problema: Ter que buscar novamente o cliente e nota para lançar o segundo boleto Pensei em por um edit para informar o numero de boletos a ser cadastrado. Desta forma ao finalizar a inclusão do primeiro, eu limparia apenas os campos valor e vencimento, mantendo os demais na tela. Minha dificuldade está em atualizar esse contador de parcelas, para sair da tela ao finalizar o cadastro do ultimo boleto
  14. Amigos, vejam a imagem Para acessar o cadastro de usuarios, antes peço a senha. Application.CreateForm(Tfrmsenha, frmsenha); frmsenha.ShowModal; Se a senha for correta, abro o form de usuarios da mesma forma Application.CreateForm(Tfrmusu, frmusu); frmusu.ShowModal; Gostaria de fechar o form da senha assim que chamo o de usuarios, mas o comando close só fecha ele quando eu fechar o form de usuarios. Usar o show não é uma opção, pois se o usuario clicar fora do formulario, ele some.
  15. Hoje uso algo assim: TEdit(Sender).Text := Mascara(TEdit(Sender).Text,'(99) 99999-9999'); TEdit(Sender).SelStart := Length(TEdit(Sender).Text); Então a formatação vai ocorrendo ao digitar. Será que existe uma forma da formatação funcionar tanto para 14 como para 15 caracteres no mesmo campo? A ideia seria poder digitar tanto um fixo, como um celular no mesmo campo. PS: precisa ser no onchange, Onexit não serve.
  16. Obrigado Jhonas, estou em rede sim. Abraço
  17. Tenho todos componentes de conexão ao banco no DataModule. DataBase, Transaction, Query.... Ao sair do sistema estou usando isso: Query.Close; DataBase.Active := False; É uma boa pratica ou desnecessário?
  18. Amigos, acabei de ler um artigo na firebase sobre a forma que seria considerada correta e indicada pela embarcadero, na ligação dos componentes. https://www.firebase.com.br/artigo.php?id=156 no caso IBQuery + DataSetProvider + ClientDataSet + DataSource No artigo se usa um IBTransaction para cada tabela. Hoje eu uso um para todo sistema. Como forma de atualização, o artigo menciona apenas o metodo applyupdates, mas sem dar o commit a rede não vai enxergar as alterações. Quem trabalha dessa forma poderia compartilhar a experiencia? No momento estou querendo deixar de usar CommitRetaining para usar somente Commit, mas estou apanhando por causa do fechamento das tabelas após o comando.
  19. Fiz uso do abort. Assim, independente de onde o erro ocorra, o rollback é acionado.
  20. Sim, de fato terei que fazer isso e ainda usar o bookmark para posicionar o cursor. Achei mais trabalhoso usar commit ao invés de commitretaining. Pensei no seguinte: Nestes forms onde os dados ficam sempre visiveis, usar o commitretaining e nos forms onde não listo os dados, usar o commit. Você acha possivel fazer isso? Neste caso devo configurar o IBTRansaction como TACommit ou TACommitRetaining, lá no object inspector?
  21. No meu caso, tenho os botões que você citou é logo abaixo deles o dbgrid. ao incluir, alterar ou excluir, o dbgrid já é atualizado para o usuário. O problema do commit é que ele vai fechar a tabela e com isso o dbgrid vai ficar vazio pro usuário.
  22. Desculpa as duvidas, mas como sempre usei o commitretaining, estou um pouco perdido. Tenho alguns cadastros, onde ao acessar a tela(oncreate), dou um select e trago um grupo de registros no dbgrid. Ex: Meu cadastro de convenios lista todos os convenios no dbgrid. Daí se eu for inserir/alterar, ao dar o commit, todos registros somem do dbgrid. Nesses casos que eu estou um pouco perdido.
  23. Hoje está configurado assim: Sobre a hora de gravar.. O certo não seria antes iniciar a transação e finalizar com o commit?
  24. Estou pensando em mudar de CommitRetaining para Commit e gostaria de algumas dicas. Hoje mantenho o transaction sempre ativo. Com essa mudança, deverei deixa-lo inativo e fazer a chamada a cada inclusão, alteração e exclusão, mais ou menos assim? if not trFisio.InTransaction then trFisio.StartTransaction; ... ... Post ApplyUpdates(0); Commit; Showmessage('ok');
×
×
  • Criar Novo...