Jump to content
Fórum Script Brasil
  • 0

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


Guest --ANDREIA --
 Share

Question

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 to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...