InfoMan Posted March 23, 2012 Report Share Posted March 23, 2012 Boa Noite para Todos! Estou criando um programa que gera vários relatórios (LazReport) a partir de arquivos DBF exportados de um outro programa. Como tenho que lidar obrigatoriamente com DBF uso o componente TDBF do Lazarus. O problema é que preciso filtrar todas as datas que estiverem em branco no banco de dados para então exibir o relatório de todos os registros que estão com a data em branco. Já tentei de todas as formas possíveis que conhecia e pesquisei na internet, mas nada funciona. Consigo filtrar os dados por datas e períodos tranquilamente, mas não consigo filtrar os registros que estão com a data em branco. Por favor, me ajudem, pois se não conseguir fazer isso (e tenho certeza que tem jeito) perderei todo o programa que fiz, pois este relatório é essencial ao sistema. As datas em branco são mostradas como "12:00:00 AM" em outro programa que uso para ler o banco de dados. O componente TDB tem uma propriedade filter que permite usar o filtro desejado. É nela que estou tendo filtrar o banco de dados e não consigo. Estou usando Lazarus 0.9.31 (de 03/03/2012) no Windows 7 de 32 bits. Muito obrigado a todos que responderem. Link to comment Share on other sites More sharing options...
bsccara Posted March 23, 2012 Report Share Posted March 23, 2012 Em Delphi (no qual o Lazarus é baseado) faria isto: procedure TForm1.Tabela1OnFilterRecord(DataSet: TDataSet; var Accept : Boolean) begin Accept := Tabela1CampoData.AsFloat <> 0; { ou } Accept := not Tabela1CampoData.IsNull; end; Tabela1 seria o TDBF e OnFilterRecord é um evento para filtrar registos em código. Basta meter o parâmetro Accept a False para o registo ser ignorado. Link to comment Share on other sites More sharing options...
InfoMan Posted March 23, 2012 Author Report Share Posted March 23, 2012 Muitíssimo obrigado pela ajuda. Deu certo, finalmente. Valeu mesmo. Fiz assim: if not dados.FieldByName('DT_ENCERRA').IsNull then Accept := False; onde dados é o nome do componente DBF e DT_ENCERRA é o nome do campo que precisava testar. Mais uma vez, muito obrigado pela ajuda. Link to comment Share on other sites More sharing options...
nunopicado Posted March 23, 2012 Report Share Posted March 23, 2012 if not dados.FieldByName('DT_ENCERRA').IsNull then Accept := False; Isto é o mesmo que colocar: Accept := dados.FieldByName('DT_ENCERRA').IsNull; "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
InfoMan Posted March 23, 2012 Author Report Share Posted March 23, 2012 OK. Obrigado pela dica. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now