um relatorio de aniversariantes diferente dos outros

12/08/2004

0

estou precisando fazer um relatorio com os aniversariantes, esta pronto com a consulta sql funcionando, mas so esta indexando pelo ano e quero que o indice seja pelo dia, no inicio estava saindo certo porem neste mês mudou sozinho sem mexer no programa, não quero aquelas consultas sql que tem dia incial do mes e final, alguem sabe fazer um deste
outro caso, preciso passar o conteurdo de um Memo para o relatorio, não estou conseguindo, se alguem puder ajudar com um exemplo ficaria legal
Obrigado


Dpinho

Dpinho

Responder

Posts

12/08/2004

Macario

Olá Programador, boa tarde.

Poste o seu codigo, e diga qual banco usa, e o tipo do campo!


Responder

16/08/2004

Dpinho

Olá Programador, boa tarde. Poste o seu codigo, e diga qual banco usa, e o tipo do campo!


Esta é a consulta:
procedure TfmAniversariantes.SpeedButton1Click(Sender: TObject);
var
Ano,Mes,Dia:word;
begin
Application.CreateForm(TfmRelDatAniver,fmRelDatAniver);
with fmRelDatAniver do
begin
DecodeDate(Date,ano,mes,dia);
QConsulta.Close;
QConsulta.Params.ParamValues[´DataInicial´] := strtoint(Edit1.Text);
QConsulta.Open;
//Texto:= Memo1.Text;
fmRelDatAniver.QuickRep1.Preview;
end;
end;

Aqui Retornar para o Relatorio:
procedure TfmRelDatAniver.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
VAR
Ano,Mes,Dia:word;
begin

DecodeDate(QConsulta.FieldByName(´DtNasc´).AsFloat,ano,mes,dia);
IF mes = 1 then QRLabel7.caption := ´GENNAIO´;
if mes = 2 then QRLabel7.Caption := ´FEBBRAIO´;
if mes = 3 then QRLabel7.Caption := ´MARZO´;
if mes = 4 then QRLabel7.Caption := ´APRILE´;
if mes = 5 then QRLabel7.Caption := ´MAGGIO´;
if mes = 6 then QRLabel7.Caption := ´GIUGNO´;
if mes = 7 then QRLabel7.Caption := ´LUGLIO´;
if mes = 8 then QRLabel7.Caption := ´AGOSTO´;
if mes = 9 then QRLabel7.Caption := ´SETTEMBRE´;
if mes = 10 then QRLabel7.Caption := ´OTTOBRE´;
if mes = 11 then QRLabel7.Caption := ´NOVEMBRE´;
if mes = 12 then QRLabel7.Caption := ´DICEMBRE´;

// QRLabel4.caption := FormatDateTime(´dd/mm´,QConsulta.FieldByName(´DtNasc´).AsFloat);
// QRMemo1.Caption := fmAniversariantes.Memo1.Text;

end;

Esta funcionando bem, porem esta saindo com dias fora da ordem exemplo dia primeiro do mês sai no final depende do ano

Meu banco é Paradox em delphi 7


Responder

17/08/2004

Macario

1)- Verifique o formato da data, que vc esta trabalhando.

2-) Isto não está correto:

[b:32ee0aa648][color=red:32ee0aa648]QConsulta.Params.ParamValues[´DataInicial´] := strtoint(Edit1.Text);[/color:32ee0aa648][/b:32ee0aa648]


se o seu campo na tabela for tipo data e estiver no formato DD/MM/AAAA
use assim:

[b:32ee0aa648][color=green:32ee0aa648]QConsulta.Params.ParamValues[´DataInicial´] := strtoDate(Edit1.Text);[/color:32ee0aa648][/b:32ee0aa648]

Espero ter ajudado.


Responder

17/08/2004

Dpinho

1)- Verifique o formato da data, que vc esta trabalhando. 2-) Isto não está correto: [b:31b97a66a8][color=red:31b97a66a8]QConsulta.Params.ParamValues[´DataInicial´] := strtoint(Edit1.Text);[/color:31b97a66a8][/b:31b97a66a8] se o seu campo na tabela for tipo data e estiver no formato DD/MM/AAAA use assim: [b:31b97a66a8][color=green:31b97a66a8]QConsulta.Params.ParamValues[´DataInicial´] := strtoDate(Edit1.Text);[/color:31b97a66a8][/b:31b97a66a8] Espero ter ajudado.


utilizo a função strtoint porque tenho que passar o numero do mês e não a data


Responder

17/08/2004

Jdteichert

Faça assim:

- No SELECT coloque o seu campo data desta forma:

EXTRACT( DAY FROM Tabela.DataNasc ) DiaNasc,
EXTRACT( MONTH FROM Tabela.DataNasc ) MesNasc

- Se precisar filtrar o mês na cláusula WHERE:
EXTRACT( MONTH FROM Tabela.DataNasc ) = :MesAniver

- Para ordenar:
ORDER BY DiaNasc, MesNasc

- Nos parâmetros:
ParamByName(´MesAniver´).AsInteger := iMesAniver


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar