Guest --ANDREIA -- Postado Agosto 23, 2007 Denunciar Share Postado Agosto 23, 2007 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!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Agosto 23, 2007 Denunciar Share Postado Agosto 23, 2007 posta seu cofigo ae, fica mais facil da gente te ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 .Andreia. Postado Agosto 23, 2007 Denunciar Share Postado Agosto 23, 2007 xará voce tem que ver como está no teu banco de dados e como você está tratando no teu código Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Notax Postado Agosto 23, 2007 Denunciar Share Postado Agosto 23, 2007 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --ANDREIA -- Postado Agosto 23, 2007 Denunciar Share Postado Agosto 23, 2007 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 DadosDT_ACAT Data/Hora*********************************Formato:Data Abreviada;Máscara de Entrada:99/99/99;********************************* Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 24, 2007 Denunciar Share Postado Agosto 24, 2007 faca assim:busca.Source = "SELECT * FROM CIGFK_CONSULTA WHERE DT_ACAT >= #" & Replace(busca__input_data, "'", "''") & "#" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --ANDREIA -- Postado Agosto 24, 2007 Denunciar Share Postado Agosto 24, 2007 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#'. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 24, 2007 Denunciar Share Postado Agosto 24, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --ANDREIA -- Postado Agosto 24, 2007 Denunciar Share Postado Agosto 24, 2007 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ê? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 24, 2007 Denunciar Share Postado Agosto 24, 2007 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 = 0Else Response.Write "Data Inválida"End If%>[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --ANDREIA -- Postado Agosto 27, 2007 Denunciar Share Postado Agosto 27, 2007 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í? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --notax -- Postado Agosto 27, 2007 Denunciar Share Postado Agosto 27, 2007 eu só não entendo por que retorna o numero #1#, visto que o número para datas abrev. é #2#, não? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 27, 2007 Denunciar Share Postado Agosto 27, 2007 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 = 0Else 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Notax Postado Agosto 27, 2007 Denunciar Share Postado Agosto 27, 2007 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 comFormatDate Time(Data[,Formato_do_Nome]) é isso? no caso o formato_do_nome seria = vbshortdate e Data o nome do campo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --ANDREIA -- Postado Agosto 27, 2007 Denunciar Share Postado Agosto 27, 2007 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[:)] Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.