Fórum Pesquisa não funfa em ADO=Access #328846

07/09/2006

0

Bom dia pessoal, estou fazendo esta query (ADO+ Access 2000+ Delphi 6) mas não ta funcionando, em Paradox + BDE funcionava.

qryCnAt.sql.Text := ´Select Distinct Rec_Contra,Rec_Nome,Rec_End,Cobrador,Count(Rec_Parcel) as NumParc From REC_PLAN Where Rec_Vencim >= :Inicio and Rec_Vencim <= :Fim ´

ESTA PARTE ABAIXO É A CULPADA

+´and Rec_Contra NOT in(Select Ctr_Cont from CONTRATO Where Ctr_Status <> :Situacao)´

depois passo todos os parametros necessários

qryCnAt.Parameters.ParamByName(´Situacao´).value := Statu;
qryCnAt.Parameters.ParamByName(´Inicio´).Value := datetostr(Data1.Date);
qryCnAt.Parameters.ParamByName(´Fim´).value := datetostr(Data2.Date);
qryCnAt.open;

DA O ERRO ´ Tipo de dados imcompatível na expressão de criterio ´

Alguém pode me ajudar.


Renato

Renato

Responder

Posts

07/09/2006

Micheus

Seu campo Rec_Vencim é tipo data ou string? Pegunto isto porque vc está passando o parâmetro como string: qryCnAt.Parameters.ParamByName(´Inicio´).Value := datetostr(Data1.Date);

Se for tipo data seria melhor vc utilizar: qryCnAt.Parameters.ParamByName(´Inicio´).AsDate := Data1.Date;

Porque se vc montar sua query com a data no formato string, deve levar em conta que o Acces utiliza como delimitador o sustenido (#) e não aspa (´). Também o formato, se não estou enganado, é mm-dd-yyyy.


Responder

Gostei + 0

07/09/2006

Renato

Obrigado pela intenção de ajudar Micheus, o campo é data, se por como vc falou
qryCnAt.Parameters.ParamByName(´Inicio´).AsDate := Data1.Date;
da erro ( em ADO+Access ).
tem que ser :
qryCnAt.Parameters.ParamByName(´Inicio´).Value := Datetostr(Data1.Date);
RESOLVI ASSIM :

qryCnAt.sql.Add(´and Rec_Contra NOT IN(Select Ctr_Cont from CONTRATO Where Ctr_Status = ´+#34+´D´+34´)´);

Espero ajudar alguém.


Responder

Gostei + 0

07/09/2006

Paullsoftware

Obrigado pela intenção de ajudar Micheus, o campo é data, se por como vc falou qryCnAt.Parameters.ParamByName(´Inicio´).AsDate := Data1.Date; da erro ( em ADO+Access ). tem que ser : qryCnAt.Parameters.ParamByName(´Inicio´).Value := Datetostr(Data1.Date); RESOLVI ASSIM : qryCnAt.sql.Add(´and Rec_Contra NOT IN(Select Ctr_Cont from CONTRATO Where Ctr_Status = ´+#34+´D´+34´)´); Espero ajudar alguém.


Creio que se vc usasse assim:
qryCnAt.sql.Text := ´Select Distinct Rec_Contra,Rec_Nome,Rec_End,Cobrador,Count(Rec_Parcel) as NumParc From REC_PLAN Where Rec_Vencim between :Inicio and Rec_Vencim :Fim ´

qryCnAt.Parameters.ParamByName(´Inicio´).Value := Data1.Date; 
qryCnAt.Parameters.ParamByName(´Fim´).value := Data2.Date; 


funcionaria perfeitamente... :wink:


Responder

Gostei + 0

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

Aceitar