info.desenvolvimento,

primeiro, meu nome é Andrei e não André, mas não te preocupa, tu não é o
primeiro nem o último que erra meu nome hehehe.

Segundo, você está passando os seus parâmetros com .value, ou seja, pode ser
qualquer tipo de dado, aí você tem que alterar o DataType como você está
fazendo. Eu utilizo como já te falei antes, .asInteger, .asString, .asDate,
dessa forma, você já diz qual é o tipo do parâmetro que está passando. Nunca
mexi  em tempo de execução no DataType e no ParamType. Sempre fiz assim e
nunca tive problemas. Pode referenciar os parametros pelo nome como te
mostrei em e-mails anteriores. Eu acho + prático e o código fica + legível.

Meu código seria algo do tipo:

 SQL_ANIVERFALEC.CLOSE;
SQL_ANIVERFALEC.SQL.CLEAR;
 SQL_ANIVERFALEC.SQL.ADD('SELECT EXTRACT(DAY FROM IRMA.DTFALECIM) AS DIA,
EXTRACT(MONTH FROM IRMA.DTFALECIM) AS MES,');
 SQL_ANIVERFALEC.SQL.ADD('IRMA.CDRELIG, IRMA.NMOPCAO, IRMA.SOBRENOME,
IRMA.NMCIVIL, IRMA.DTNASC, IRMA.DTFALECIM');
 SQL_ANIVERFALEC.SQL.ADD('FROM');
 SQL_ANIVERFALEC.SQL.ADD('IRMA');
 SQL_ANIVERFALEC.SQL.ADD('WHERE');
 SQL_ANIVERFALEC.SQL.ADD('IRMA.CDSITUAC = ''FALEC'' ');
 SQL_ANIVERFALEC.SQL.ADD('AND');
 SQL_ANIVERFALEC.SQL.ADD('EXTRACT(MONTH FROM IRMA.DTFALECIM) BETWEEN :pMES
and :pMES2');
 SQL_ANIVERFALEC.ParamByName['pMes'].asInteger:= 0;
 SQL_ANIVERFALEC.ParamByName['pMes2'].asInteger:= 0;

 SQL_ANIVERFALEC.SQL.ADD('AND');
 SQL_ANIVERFALEC.SQL.ADD('IRMA.IRMA.DTFALECIM BETWEEN :pDTFALEC AND
:pDTFALEC2');
 SQL_ANIVERFALEC.ParamByName['pDTFALEC'].asDateTime:= '00:00:00';  // aqui
estou chutando, nunca mexi com horas,
 SQL_ANIVERFALEC.ParamByName['pDTFALEC2']].asDateTime:= '00:00:00'; //
poderia trocar por .asDate se o parâmetro for uma data

[]
Andrei








Em 30/03/06, info.desenvolvimento <[EMAIL PROTECTED]> escreveu:
>
> Aos Cuidados de André LuIS E rUbem Nascimento Rocha que me deram uma LUZ
> nesse problema.
> Olha só o que eu tive que fazer no meu SQL em tempo de execução.
>
> REL_ANIVERFALEC.SQL_ANIVERFALEC.CLOSE;
> REL_ANIVERFALEC.SQL_ANIVERFALEC.SQL.CLEAR;
> SQL_ANIVERFALEC.SQL.ADD('SELECT EXTRACT(DAY FROM IRMA.DTFALECIM) AS DIA,
> EXTRACT(MONTH FROM IRMA.DTFALECIM) AS MES,');
> SQL_ANIVERFALEC.SQL.ADD('IRMA.CDRELIG, IRMA.NMOPCAO, IRMA.SOBRENOME,
> IRMA.NMCIVIL, IRMA.DTNASC, IRMA.DTFALECIM');
> SQL_ANIVERFALEC.SQL.ADD('FROM');
> SQL_ANIVERFALEC.SQL.ADD('IRMA');
> SQL_ANIVERFALEC.SQL.ADD('WHERE');
> SQL_ANIVERFALEC.SQL.ADD('IRMA.CDSITUAC = ''FALEC'' ');
> SQL_ANIVERFALEC.SQL.ADD('AND');
> SQL_ANIVERFALEC.SQL.ADD('EXTRACT(MONTH FROM IRMA.DTFALECIM) BETWEEN :pMES
> and :pMES2');
> SQL_ANIVERFALEC.Params[0].DataType:= ftInteger;
> SQL_ANIVERFALEC.Params[0].ParamType:= ptInputOutput;
> SQL_ANIVERFALEC.Params[0].value:= 0;
> SQL_ANIVERFALEC.Params[1].DataType:= ftInteger;
> SQL_ANIVERFALEC.Params[1].ParamType:= ptInputOutput;
> SQL_ANIVERFALEC.Params[1].value:= 0;
> SQL_ANIVERFALEC.SQL.ADD('AND');
> SQL_ANIVERFALEC.SQL.ADD('IRMA.IRMA.DTFALECIM BETWEEN :pDTFALEC AND
> :pDTFALEC2');
> SQL_ANIVERFALEC.Params[2].DataType:= ftDateTime;
> SQL_ANIVERFALEC.Params[2].ParamType:= ptInputOutput;
> SQL_ANIVERFALEC.Params[2].value:= '00:00:00';
> SQL_ANIVERFALEC.Params[3].DataType:= ftDateTime;
> SQL_ANIVERFALEC.Params[3].ParamType:= ptInputOutput;
> SQL_ANIVERFALEC.Params[3].value:= '00:00:00';
>
>


[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a