Ir para conteúdo

POWERED BY:

Arquivado

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

marvi

[Resolvido] Tipo de dados imcompatível na expressão de critério

Recommended Posts

Olá pessoal, estou unsando um insert e não funciona no meu Access:

 

Banco:

Estado = texto

id_pais = Número

 

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.

/psi/painel/profissionais/inserirprofissional.asp, line 34

 

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', '"& varpaisselect &"')"


linha 34: Set rsestado=Conexao.Execute(sqlestados)

Já usei a variavel assim "& varpaisselect &"' e assim '& varpaisselect &'

O que deve ser? Obrigado!

 

Marcelo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', "& cLng(varpaisselect) &")"
Se der errado, logo abaixo do SQL faça assim e poste o resultado:

response.write sqlestados
response.end

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Hargon!

 

Deu o seguinte erro:

 

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Não é possível adicionar ou alterar registros, pois é necessário que eles tenham um registro relacionado na tabela 'paises'.

/psi/painel/profissionais/inserirprofissional.asp, line 34

 

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', "& cLng(varpaisselect) &")"

linha 34: Set rsestado=Conexao.Execute(sqlestados)

Fiz o response.write

 

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', "& cLng(varpaisselect) &")"
response.write(sqlestados)
response.end

e deu:

 

INSERT INTO estados (estado, id_pais) VALUES ('Venus', 0)

 

codigo completo:

varpais = request.form("pais")
varestado = request.form("estado")
varcidade = request.form("cidade")
varprofissao = request.form("profissao")



pais= "INSERT INTO paises (pais) VALUES ('"& varpais &"')"

paisselect= "select * from paises where pais = '" & varpais & "'"

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', "& cLng(varpaisselect) &")"

estadoselect= "select * from estados where estado = '" & varestado & "' ORDER BY estado DESC"

cidade = "INSERT INTO cidades (cidade, id_estado) VALUES ('"& varcidade &"',"& varestadoselect &")"

cidadeselect= "select * from cidades where cidade = '" & varcidade & "' ORDER BY cidade DESC"

profissionais = "INSERT INTO profissionais (profissional, id_cidade) VALUES ('"& varprofissao &"','& varcidadeselect &')"

Call abre_conexao


Set rspais=Conexao.Execute(pais)

Set rspaisselect=Conexao.Execute(paisselect)
varpaisselect=rspaisselect("id_pais")

Set rsestado=Conexao.Execute(sqlestados)


Set rsestadoselect=Conexao.Execute(estadoselect)
varestadoselect=rsestadoselect("id_estado")

Set rscidade=Conexao.Execute(cidade)

Set rscidadeselect=Conexao.Execute(cidadeselect)
varcidadeselect=rscidadeselect("id_cidade")

Set rsprofissionais=Conexao.Execute(profissionais)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja que varpaisselect está com 0. Existe algum registro com 0? Provavelmente não exista e como suas tabelas estão relacionadas, daí a mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se faço isso:

pais= "INSERT INTO paises (pais) VALUES ('"& varpais &"')"

paisselect= "select * from paises where pais = '" & varpais & "'"

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', '" & varpaisselect &"')"


Set rspaisselect=Conexao.Execute(paisselect)
varpaisselect= rspaisselect("id_pais")

response.write(varpaisselect)
response.end

Set rsestado=Conexao.Execute(sqlestados)

Ele imprimi o valor 75, no caso... Veja que esse response.write imprimi a variavel que tem valor e que vai ser inserida na sqlestados... Como pode ficar 0?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém consegue entender porque isso?

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', '" & varpaisselect &"')"

Set rspaisselect=Conexao.Execute(paisselect)
varpaisselect= rspaisselect("id_pais")

response.write(sqlestados) ' veja que coloquei para imprimir a SQL e que tem a variavel varpaisselect e ela retorna essa variavel vazia, "", porque?
response.end

Como pode retornar vazia se ela, varpaisselect, está abaixo da set rspaisselect pegando o valor do select...

 

Veja que o response mostra: INSERT INTO estados (estado, id_pais) VALUES ('Lisboa', '')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargon,

 

Pode deixar, resolvir!

 

Coloquei a SQL depois das variaveis:

 

Set rspaisselect=Conexao.Execute(paisselect)

varpaisselect= rspaisselect("id_pais")

 

sqlestados= "INSERT INTO estados (estado, id_pais) VALUES ('"& varestado &"', '" & varpaisselect &"')"

Set rsestado=Conexao.Execute(sqlestados)

 

Obrigado!

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.