Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesão

Data type mismatch in criteria expression.

Recommended Posts

Seguinte galera.. tenho uma tabela no meu DB (Access) onde varios dos campos dao do tipo Data/Hora e no formato Data Abreviada...

 

quando vou editar alguns desses campos, nao posso deixa-los em branco, o que seria necessario... se deixo algum desses campos em branco dah o erro:

 

Data type mismatch in criteria expression.

 

Gostaria de saber o que fazer para poder editar o registro e deixar alguns desses campos em branco sem dar esse erro...

pois quando eu completo todos os campos com alguma data qualquer (Ex: 02/02/2007) ele aceita e atualiza normalmente...

 

o que faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente gravar "00:00:00". isso equivale a uma data vazia.

ou grave null

cara.. hahaha

eu nao quero gambiarra... e esse negócio de gravar "null" nao entendi...

você diz p eu escrever null ali? pq nao se como gravar com valor nulo e ele aceitar.. alias, esse eh o problema que está dando...

 

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, num é gambiarra nao. '00:00:00' é uma data vazia e o proprio asp entende como uma. você nao tem como gravar '', pq '' é string, o tipo de dado gravado em campo data é completamente diferente

 

realmente gravar como nulo parece melhor, mas isso pode te trazer alguns problemas em selects ja q comparar valores nulos mtas vezes nao retorna True ou False e sim um valor nulo mesmo.

mas se você preferir gravar nulo, pode fazer assim:

sql = "Insert Into Tabela(Data) Values (Null)"
e tb:

sql = "Update Tabela Set Data = Null"

pra saber se o campo é nulo na hora de usar o Where, no Access, use a funcao IsNull().

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, entendi como se grava nulo.. mas tem um problema...o meu formulario possui varios campos onde devo preencher com data... mas alguns deles eu nao quero preencher e outros eu irei preencher.. mas isso será aleatório...como faço p quando eu preencher ele gravar meu conteúdo e quando eu nao preencher ele deixar o campo vazio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser tipo assim:

sql = "Update Tabela Set Campo1 = 'Valor1',"sql = sql & "Campo2 = 'Valor2',"If Request.Form("Data1") = "" Then	 sql = sql & "Data1 = Null,"Else	 sql = sql & "Data1 = '" & Request.Form("Data1") & "',"End IfIf Request.Form("Data2") = "" Then	 sql = sql & "Data2 = Null"Else	 sql = sql & "Data2 = '" & Request.Form("Data2") & "'"End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa cara.. mas dai meu codigo vai ficar enorme veio.. sao varios campos de datas...alguém ai tem uma solução mais simples de gravar valor nulo num campo de data/hora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem pode me ajudar de outra maneira?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem pode me ajudar de outra maneira?

Use o for each no request.form e recupere todos os seu controles do formulario.Padronize o nome dos campos DATA com DT.... e depois faço o if sugerido pelo kuroi.Addim você poderá fazer o teste dinamicamente.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, fiz do jeito que vcs falaram...

 

meu codigo está abaixo, mas está dando o seguinte erro na hora de atualizar...

normalmente esse erro ocorre qdo uma variavel está com um nome proibido (reservado), como o nome DATA por exemplo. mas no caso nao tem nenhum nome assim...

 

o erro eh:

Syntax error in UPDATE statement.

 

meu codigo está assim:

<!--#include file="conn/conexao.asp"--><!--#include file="espiao.asp"--><%id_carro = Request.Form("id_carro")marca = Request.form("marca")modelo = Request.form("modelo")placa = Request.form("placa")entrada = Request.form("entrada")dono = Request.form("dono")cor = Request.form("cor")prazo = Request.form("prazo")obs = Request.form("obs")desmontagens = Request.form("desmontagens")funilaria = Request.form("funilaria")preparacao = Request.form("preparacao")pintura = Request.form("pintura")polimento = Request.form("polimento")lavagem = Request.form("lavagem")entrega = Request.form("entrega")SQL="UPDATE carros SET marca='"&marca&"', modelo='"&modelo&"', placa='"&placa&"', entrada='"&entrada&"', dono='"&dono&"', cor='"&cor&"', prazo='"&prazo&"', obs='"&obs&"',"If desmontagens = "" or isNull(desmontagens) Then	 SQL = SQL & "desmontagens = Null,"Else	 SQL = SQL & "desmontagens = '" & Request.Form("desmontagens") & "',"End IfIf funilaria = "" or isNull(funilaria) Then	 SQL = SQL & "funilaria = Null,"Else	 SQL = SQL & "funilaria = '" & Request.Form("funilaria") & "',"End IfIf preparacao = "" or isNull(preparacao) Then	 SQL = SQL & "preparacao = Null,"Else	 SQL = SQL & "preparacao = '" & Request.Form("preparacao") & "',"End IfIf pintura = "" or isNull(pintura) Then	 SQL = SQL & "pintura = Null,"Else	 SQL = SQL & "pintura = '" & Request.Form("pintura") & "',"End IfIf polimento = "" or isNull(polimento) Then	 SQL = SQL & "polimento = Null,"Else	 SQL = SQL & "polimento = '" & Request.Form("polimento") & "',"End IfIf lavagem = "" or isNull(lavagem) Then	 SQL = SQL & "lavagem = Null,"Else	 SQL = SQL & "lavagem = '" & Request.Form("lavagem") & "',"End IfIf entrega = "" or isNull(entrega) Then	 SQL = SQL & "entrega = Null,"Else	 SQL = SQL & "entrega = '" & Request.Form("entrega") & "',"End Ifconexao.Execute(SQL)'Response.Write(SQL)Response.Redirect "adm_carro.asp" %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima seu SQL na tela e você verá que ele está com uma vírgula no final...o que só se aplica para separação de campos.E ainda, não estaria faltando uma condição (where). Pois da forma que está você irá atualizar toda a tabela com os mesmos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima seu SQL na tela e você verá que ele está com uma vírgula no final...o que só se aplica para separação de campos.E ainda, não estaria faltando uma condição (where). Pois da forma que está você irá atualizar toda a tabela com os mesmos dados.

putz Shison!! Valew mesmo!! sua ajuda foi importante demais aki senao eu iria fazer cagada!!Agora funcionou perfeito!! valew gente!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.