Pesquisa não funfa em ADO=Access
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.
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
Curtidas 0
Respostas
Micheus
07/09/2006
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.
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.
GOSTEI 0
Renato
07/09/2006
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.
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.
GOSTEI 0
Paullsoftware
07/09/2006
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:
GOSTEI 0