Ir para conteúdo

Arquivado

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

Agente Linhares

Campo Numérico e de data

Recommended Posts

a pouco tava tendo problemas na hora de mexer com um campo sim/não..

 

aí acabei descobrindo que o problema tav ano campo tipo numérico..

e data/hora

 

 

pq acontece o seguinte: tento adicionar algunas dados, deixando ou um campo tipo numérico ou um data/hora sem receber dados..

 

aí, mesmo eu tendo marcado a opção no access não p/ que ele não seja requerido, ele ainda teima em não querer ficar sem dados..

 

o normal seria, caso ele não tenha dados, fica em brando, mas dá erro e so dá certo se ele tiver algum valor..

 

isso vale p/ o campo numérico e tb p/ o data/hora, já que o mesmo não tem nem a opção de permitir comprimento zero..

 

alguém sabe o q pode tar acontecendo?

 

e como resolver isso?

 

o erro qu edá é esse:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][Driver ODBC para Microsoft Access] Data type mismatch in criteria expression.

 

/pasta/pg.asp, line 41

 

a linha 41 é apenas a linha onde tá especificado o conexao.execute

 

mas o lance eu sei que é com o bd..ja´fiz váriso testes qt a isso..se eu preencher estes 2 campos, dá td ok.. já se um deles ficar vazio, da esse msm erro..

 

 

 

 

- lembrando que precisaria de uma maneira, mas sme ser com tratamento deste dados com ifs, else, etc... ach oque o lance é com o bd msm.

 

- e já tentei usando valores padroes pra esses campos e nada.

 

se alguém soube d e algo?

 

pra ajuda, to tentando solucionar aqui tb: http://forum.wmonline.com.br/index.php?showtopic=87560

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok. ta aqui toda a page de inseção de dados:

 

ASP [/tr][tr]<%

Set Conexao = Server.CreateObject("Adodb.Connection")

Conexao.ConnectionString = "DBQ=" & Server.MapPath("bd.mdb") & ";"

Conexao.ConnectionString = Conexao.ConnectionString & "Driver={Microsoft Access Driver (*.mdb)};"

Conexao.Open

 

icq = Request.Form("icq")

data_nascimento = Request.Form("data_nascimento")

Recebe = Request.Form("receber_newsletters")

 

If Recebe = "" Then

Recebe = "0"

End If

 

sql = "INSERT INTO tabela (icq,data_nascimento,receber_newsletters) VALUES('" & icq & "','" & data_nascimento & "', " & Recebe & ")"

conexao.execute(sql)

 

response.Write("<script language=""JavaScript"">"&_

"alert('Cadastro efetuado com sucesso!');"&_

"document.location.href='form.html';"&_

"</script>")

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok. ta aqui toda a page de inseção de dados:

 

ASP [/tr][tr]<%

Set Conexao = Server.CreateObject("Adodb.Connection")

Conexao.ConnectionString = "DBQ=" & Server.MapPath("bd.mdb") & ";"

Conexao.ConnectionString = Conexao.ConnectionString & "Driver={Microsoft Access Driver (*.mdb)};"

Conexao.Open

 

icq = Request.Form("icq")

data_nascimento = Request.Form("data_nascimento")

Recebe = Request.Form("receber_newsletters")

 

If Recebe = "" Then

Recebe = "0"

End If

 

sql = "INSERT INTO tabela (icq,data_nascimento,receber_newsletters) VALUES('" & icq & "','" & data_nascimento & "', " & Recebe & ")"

conexao.execute(sql)

 

response.Write("<script language=""JavaScript"">"&_

"alert('Cadastro efetuado com sucesso!');"&_

"document.location.href='form.html';"&_

"</script>")

%>

[/tr]
ICQ é varchar? poderia ser numerico apenas..

data_nascimento é oq? varchar?

 

recebe é campo Yes/No ou INt?

 

 

você pode dexar o recebe como INT e controlar entre 1 (yes) e 0 (no) (como parece que você fez)

 

Para dar Mismatch vocÊ deve ter colocado algum valor de tipo diferente para campo diferente

 

Esse insert:

 

ASP [/tr][tr]sql = "INSERT INTO tabela (icq,data_nascimento,receber_newsletters) VALUES('" & icq & "','" & data_nascimento & "', " & Recebe & ")"

conexao.execute(sql)

[/tr]

 

Sugiro rever os campos

Lembrar sempre que ' ' é valor VARCHAR, Char , Text, etc....date acho que não é assim '' não...nunca usei, todos os DATE eu controlo por VARCHAR depois na hora de usar eles eu coloco Cdate() ....

 

Você para analizar essa Query, pode colocar um

 

ASP [/tr][tr]response.write SQL

response.end

[/tr]

antes do Conexao.execute(SQL) para ver oq se passa na QUERY.

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.