Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Tipo De Dados Imcompatível Na Expressão De Critério


Guest --ANDREIA --

Pergunta

Guest --ANDREIA --

Boa noite!

Gostaria de uma ajuda dos amigos programadores mais experientes do que mim.

Tenho uma conexao com BD Access onde um campo da tabela está com o formato data abreviada.

Pois bem, quando realizo uma consulta no proprio Access, ele funciona como data, mas se eu executar uma consulta pelo ASP, aparece a mensagem:

"Tipo de dados imcompatível na expressão de critério"

Pessoal, tenho a convicção de que o campo está como data e não texto!!

Agradeço quem puder me ajudar!!

Grata a todos!!

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Andreia, eu tive um problema bem parecido o que eu fiz foi colocar o campo entre aspas simples ' além de abraçá-lo com # e deu certo... ficou assim '#"& DATA &"#'... mas sabe como é né... sou leigo!!! não confia muito!

o fato de abraçar o campo com sustenido (não sei se é o seu caso) mas até onde eu saiba é a forma de selecionar as datas no access... espero ter ajudado... desulpa aí qualquer inconveniente!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ANDREIA --

então, está assim no ASP:

<%
Dim busca
Dim busca_numRows

Set busca = Server.CreateObject("ADODB.Recordset")
busca.ActiveConnection = MM_Estudos_Projetos_STRING
busca.Source = "SELECT *  FROM CIGFK_CONSULTA  WHERE DT_ACAT >= '" + Replace(busca__input_data, "'", "''") + "'"
busca.CursorType = 0
busca.CursorLocation = 2
busca.LockType = 1
busca.Open()

busca_numRows = 0
%>

No Access está assim:

*********************************

Nome do Campo Tipo de Dados

DT_ACAT Data/Hora

*********************************

Formato:Data Abreviada;

Máscara de Entrada:99/99/99;

*********************************

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ANDREIA --
faca assim:

busca.Source = "SELECT *  FROM CIGFK_CONSULTA  WHERE DT_ACAT >= #" & Replace(busca__input_data, "'", "''") & "#"
kuroi, fiz exatamente isso,mas apareceu o erro:
Script error detected at line 31. 
Source line: busca.Open() 
Description: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na data na expressão de consulta 'DT_ACAT >= #1#'.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ANDREIA --
esse campo DT_ACAT é do tipo data ne??

porque olha, o busca__input_data ta trazendo o numero 1:

'DT_ACAT >= #1#'

e ai ele da erro porque ele so vai aceitar datas.

então, na página de busca existe um <input type=text> onde o usuário entraria com a data. Testei exatamente com uma entrada de data:99/99/9999 e deu o erro.

Devo mudar o quê?

Link para o comentário
Compartilhar em outros sites

  • 0

99/99/9999 não é data. não existe dia 99 muito menos mes 99, você tem q digitar uma data de verdade, tipo 24/08/2007.

e pra evitar de dar erro, testa antes se a data digitada não é valida. tipo assim:

<%
If IsDate(busca__input_data) Then
    Dim busca
    Dim busca_numRows

    Set busca = Server.CreateObject("ADODB.Recordset")
    busca.ActiveConnection = MM_Estudos_Projetos_STRING
    busca.Source = "SELECT *  FROM CIGFK_CONSULTA  WHERE DT_ACAT >= #" + Replace(busca__input_data, "'", "''") + "#"
    busca.CursorType = 0
    busca.CursorLocation = 2
    busca.LockType = 1
    busca.Open()

    busca_numRows = 0
Else
    Response.Write "Data Inválida"
End If
%>[/code]

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ANDREIA --

Tudo bem, me referi a data com "99" como uma máscara, mas eu não tentei com 99, quis dizer que testei com várias datas no formato 24/8/2007; 25/8/2007,etc. Inclui o IF mas ele continua retornando que o valor digitado não é uma data válida.

Se 24/8/2007 não é do tipo data, realmente não sei o que fazer!

Tem uma luz aí?

Link para o comentário
Compartilhar em outros sites

  • 0

hum... pelo q parece, o q acontece é q o busca__input_data ta recebendo o valor errado. ele não ta recebedno o q esta sendo digitado, no reponse.write não devia aparecer #1# nem #2#, e sim a data q você digitou.

faz o seguinte, tenta usar aquele codigo q eu falei:

<%
If IsDate(busca__input_data) Then
    Dim busca
    Dim busca_numRows

    Set busca = Server.CreateObject("ADODB.Recordset")
    busca.ActiveConnection = MM_Estudos_Projetos_STRING
    busca.Source = "SELECT *  FROM CIGFK_CONSULTA  WHERE DT_ACAT >= #" + Replace(busca__input_data, "'", "''") + "#"
    busca.CursorType = 0
    busca.CursorLocation = 2
    busca.LockType = 1
    busca.Open()

    busca_numRows = 0
Else
    Response.Write "Data Inválida"
End If
%>[/code]

se você digitar uma data valida, mas aparecer a mensagem "Data Inválida", siginfica q a data esta sendo passado errada mesmo. nesse caso, posta pra gente o codigo onde você passa o valor do textbox para a variavel busca__input_data, pra gente ver se encontra o problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah bão... realmente... nesse caso, pode estar aparecendo de outra forma no script do formulário que utliza este outro script acima para inclusão no banco, certo?

Daí neste caso, no formulário deverá haver um script parecido com

FormatDate Time(Data[,Formato_do_Nome]) é isso? no caso o formato_do_nome seria = vbshortdate e Data o nome do campo...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ANDREIA --

Haja paciência com iniciantes hein? Ainda bem que vocês tiveram... e muita comigo!!

Enfim, Graças a todos consegui, o Kuroi tinha razão, chequei se a variável que repassava o valor do textbox estava certa, foi aí que substitui busca__input_data = Request.Querystring("DT_ACAT") por busca__input_data = Request.Form("DT_ACAT") aí foi só alegria; vejam o código final:

<%
Dim busca__input_data
busca__input_data = Request.Form("DT_ACAT")
%>
<%
If isdate(busca__input_data) Then
    Dim busca
    Dim busca_numRows

    Set busca = Server.CreateObject("ADODB.Recordset")
    busca.ActiveConnection = MM_Estudos_Projetos_STRING
    busca.Source = "SELECT *  FROM CIGFK_CONSULTA  WHERE DT_ACAT >= #" + Replace(busca__input_data, "'", "''") + "#"
    busca.CursorType = 0
    busca.CursorLocation = 2
    busca.LockType = 1
    busca.Open()
    data = busca.Fields.Item("DT_ACAT").Value
    busca_numRows = 0
    busca.Close()
    
Set busca = Nothing
Else
       Response.Write "Data Inválida"
    data_invalida = Request.Form("DT_ACAT")
    End If
%>

Muito Obrigada a todos !! bjs[:)]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...