Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

MetalFatigue

SQL com Data

Mensagens Recomendadas

MetalFatigue    1
MetalFatigue

Estou a tentar fazer uma query através VBA que necessita de procurar se determinadas datas existem. Mas o Access dá me "erro de conversão Tipo de dados incorrecto na expressão de critérios. (Erro 3464)".

Isto deve ser algo bastante simples, mas ainda não consegui descobrir. O array matrix contém strings. Já tentei colocar ## antes e depois de cada variável e até tentar converter para cdate().

Set rstProc = db.OpenRecordset("SELECT * FROM [CAMPANHA] WHERE CAMPANHA='" & matrix(iLinha, enCampanha) & _
"' AND DATA_INICIO='" & matrix(iLinha, enDataInicio) & "' AND DATA_FIM='" & matrix(iLinha, enDataFim) & "';")

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MetalFatigue    1
MetalFatigue

Já está formatado dessa forma, num tratamento que faço antes deste passo. Cheguei até ao ponto de meter cstr(cdate(matrix(iLinha,iColuna))) nesse tratamento.

Por outro lado quero ver se existe um registo em que os campos CAMPANHA AND DATA_INICIO AND DATA_FIM igual ao que estão no array. Se existir não insiro um novo registo a partir do array. O problema está mesmo na conversão para data dos valores no array. deve faltar fazer algo naqela linha para dizer que aqueles valores tratam-se de uma data.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MetalFatigue    1
MetalFatigue

Sim, mas isso é quando só existe 1 campo data. Eu tenho 2 na tabela e quero comparar contra os 2 também 2 datas diferentes.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MetalFatigue    1
MetalFatigue

Pois assim de repente não posso...lol

Isso tá só no PC do trabalho. Amanhã exprimento, assim que possivel. Darei notícias.

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MetalFatigue    1
MetalFatigue

Ok, depois de aqui uma grande confusão e com o auxilio do contructor de sql do access, lá achei a solução.

Parece que o VBA é um bocado chato a tratar de datas em sql.

Tinhas razão no teu 1º post (no último deste a solução do standard para nós portugueses) , MM/DD/YYYY. Depois faltava-me certos pormenores, as peliculas (' ') nas datas não podem lá estar, e tem de se envolver as variáveis com ##, ou seja no meu código inicial, bastava substituir as peliculas por ##

Set rstProc = db.OpenRecordset("SELECT * FROM CAMPANHA WHERE CAMPANHA.CAMPANHA='" + matrix(iLinha, enCampanha) + "' AND DATA_INICIO=#" + matrix(iLinha, enDataInicio) + "# AND CAMPANHA.DATA_FIM=#" + matrix(iLinha, enDataFim) + "#;")

Como sempre, um obrigado pela ajuda e dísponibilidade Paulino.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade