Página 1 de 1

[RESOLVIDO] Erro Where conexão AdoDB

Enviado: Seg Abr 15, 2019 9:45 am
por alantykhe
Bom dia, pessoal!

Preciso de ajuda, tenho uma consulta ADO que faz a leitura de um CSV e filtra a data de acordo com o dia atual, porém os dados retornados não correspondem a intervalo que solicitei. Por exemplo: Where data >= #01/01/2019#, porém o recordset traz registros diversos de anos anteriores.

Obs.: para ler o CSV eu crio diariamente um Schema.ini (abaixo)
[20190415_061201_EmailseTelefonemas.csv]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=100
DateTimeFormat=DD/MM/YYYY hh:nn:ss
Col1="Data de Criacao" DateTime
Col2="Data de Inicio" DateTime
Col3="Tipo de Atividade" Text
Col4="Status da Atividade" Text
Col5="Referente a" Text
Col6="Proprietario" Text
Col7="Unidade de Negocios (Usuario Proprietario)" Text
Col8="Codigo do Colaborador (Usuario Proprietario)" Long
Col9="Criada por" Text
Col10="Unidade de Negocios (Criada por)" Text
Col11="Codigo do Colaborador (Criada por)" Long
Col12="CNPJ/CPF (Referente a Lead)" Text
Col13="CNPJ/CPF (Referente a Conta)" Text
Col14="CNPJ/CPF (Referente a Oportunidade)" Text
Col15="CNPJ/CPF (Referente a Proposta)" Text
Col16="CNPJ/CPF (Referente a Contrato)" Text
Col17="Codigo Centro Decisao (Referente a)" Long
Abaixo parte do código variável de data e open recordset.
  
 DataFiltro = Date - 90
 DataFiltro = CDate(DataFiltro)

With rs
            .ActiveConnection = cn
            .LockType = adLockOptimistic
            .CursorType = adOpenKeyset
      
            Sql = "Select [data de criacao], [Status da Atividade], [Data de Inicio]  " _ &
           "FROM Interacoes Where [data de criacao] > #" & DataFiltro & "# " _ &
           "and [Tipo de Atividade] Like 'Email'"
            .Open Sql
End with
No CSV os dados do campo [data de criacao] constam como exemplo abaixo:
Data de Criacao;
31/12/2018 23:58:11;
Alguem já passou por isso? Conseguiu resolver?

Abraço

Re: Erro Where conexão AdoDB

Enviado: Seg Abr 15, 2019 10:46 am
por Reinaldo
Posso estar enganado, mas pelo exposto, creio que o campo data é considerado como texto;então experimente algo +/- assim:
De:

Código: Selecionar todos

FROM Interacoes Where [data de criacao] > #" & DataFiltro
Para

Código: Selecionar todos

FROM Interacoes Where cdata(left([data de criacao],10) > #" & DataFiltro

Re: Erro Where conexão AdoDB

Enviado: Seg Abr 15, 2019 1:12 pm
por alantykhe
Reinaldo escreveu:
Seg Abr 15, 2019 10:46 am
Posso estar enganado, mas pelo exposto, creio que o campo data é considerado como texto;então experimente algo +/- assim:
De:

Código: Selecionar todos

FROM Interacoes Where [data de criacao] > #" & DataFiltro
Para

Código: Selecionar todos

FROM Interacoes Where cdata(left([data de criacao],10) > #" & DataFiltro
Ola, Reinaldo. Tentei isso também, mas continua trazendo valores incompatível com os critérios da consulta. :/

Re: Erro Where conexão AdoDB

Enviado: Seg Abr 15, 2019 2:14 pm
por alantykhe
Resolvido, o erro foi de lógica (um erro amador rs), esqueci de separar entre parênteses os operadores lógicos:

Antes:

Código: Selecionar todos

Where [data de criacao] > #" & DataFiltro & "#  and [Tipo de Atividade]
  Like 'Email' or [Tipo de Atividade] like 'Compromisso' or [Tipo de Atividade] 
  like 'Telefonema'"
Depois de corrigido:

Código: Selecionar todos

Where ([data de criacao] > #" & DataFiltro & "#)  and ([Tipo de Atividade] 
Like 'Email' or [Tipo de Atividade] like 'Compromisso' or [Tipo de Atividade] 
like 'Telefonema')"
Abraço