Ir para conteúdo

POWERED BY:

Arquivado

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

Obr_Sandro

Consulta ASP em banco MySQL retornando ERRO

Recommended Posts


Amigos, postei esta dúvida na categoria de MYSQL mas me aconselharam a postar aqui.

 

A página web esta desenvolvida em ASP, estou migrando o BD de ACCES para MYSQL, pois é mais estável, porém agora no MYSQL está dando erro em uma consulta ao BD que anteriormente em MDB não dava.

 

Página com uso do BD em MYSQL com o erro.
http://www.ondistrib...&id_produto=449

 

Mesma Página (mesmo código) utilizando o BD ACCES
http://www.ondistrib...&id_produto=449

 

Código de consulta de ambas as páginas

SQLString = "SELECT Produto.*, Produto.ID_Fabricante, Produto.Foto_rec1, Produto.Foto_rec2, Produto.Foto_rec3, Produto.Preco, Caracteristica, Produto.Recomendacao1, Produto.Recomendacao2, Produto.Recomendacao3, Produto.Descricao, Fabricante.ID, Fabricante.Nome, Produto.Foto, Produto.Nome, Produto.ID, Produto.ID_categoria FROM Fabricante INNER JOIN Produto ON Fabricante.ID = Produto.ID_Fabricante WHERE (((Fabricante.ID)=[ID_Fabricante])) AND Produto.ID = " & vID_produto

 

Onde estaria o ERRO se em ACCES funciona com o mesmo código?

Obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o número do erro e linha ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o número do erro, pois na página não esta exibindo ( e isso agiliza mais o suporte, ao invés de entrar na sua página....)lembrando que , alguns comandos em Access são ser diferentes no MySQL.

 

Sem-t%C3%ADtulo-3.fw_.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK.

<!-- #Include file="-conexoes.asp" -->
<!-- #Include file="funcoes.asp" -->
<%
  Response.Expires = 0
	Server.ScriptTimeout = 6000
	
   Dim vMT_Item(100,5)
   for vConta_Linha = 1 to 100
     For vConta_Coluna = 1 to 5
         vMT_Item(vConta_Linha,vConta_Coluna) = ""
     next
   next
   
   for vConta_Linha = 1 to 100
     For vConta_Coluna = 1 to 5
         vMT_Item(vConta_Linha,vConta_Coluna) = Request("vItem_" & vConta_Linha & "_" & vConta_Coluna)
     next
   next   

	Set DatabaseConnection = Server.CreateObject("ADODB.Connection") 
  DatabaseConnection.Open  Get_ConexaoDados2
  Set UserRecordset = Server.CreateObject("ADODB.Recordset")
	
	vID_Produto = GM_StrToNumber(Request("ID_Produto"))
	vID_categoria = GM_StrToNumber(Request("ID_categoria"))
	
		'dados do produto
	SQLString = "SELECT Produto.*, Produto.ID_Fabricante, Produto.Foto_rec1, Produto.Foto_rec2, Produto.Foto_rec3, Produto.Preco, Caracteristica, Produto.Recomendacao1, Produto.Recomendacao2, Produto.Recomendacao3, Produto.Descricao, Fabricante.ID, Fabricante.Nome, Produto.Foto, Produto.Nome, Produto.ID, Produto.ID_categoria FROM Fabricante INNER JOIN Produto ON Fabricante.ID = Produto.ID_Fabricante WHERE (((Fabricante.ID)=[ID_Fabricante])) AND Produto.ID = " & vID_produto
	
	
	UserRecordset.Open SQLString, DatabaseConnection

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro gerado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu disse antes (http://forum.imasters.com.br/topic/510625-consulta-mysql-retornando-erro/?p=2021597),

o MySQL não aceita esses parênteses e chaves:

 

(((Fabricante.ID)=[iD_Fabricante]))

 

(veja a mensagem de erro)

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero saber se ele te dá algum número de erro ?

 

e tente assim:

 


varID_Fabricante=ID_Fabricante
SQL="SELECT Produto.ID_Fabricante, Produto.Foto_rec1, Produto.Foto_rec2, Produto.Foto_rec3, Produto.Preco, Caracteristica, Produto.Recomendacao1, Produto.Recomendacao2, Produto.Recomendacao3, Produto.Descricao, Fabricante.ID, Fabricante.Nome, Produto.Foto, Produto.Nome, Produto.ID, Produto.ID_categoria FROM Fabricante INNER JOIN Produto ON Fabricante.ID = Produto.ID_Fabricante WHERE Fabricante.ID=varID_Fabricante AND Produto.ID = " & vID_produto&""

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos

 

Erro gerado:

 

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

[MySQL][ODBC 5.1 Driver][mysqld-5.1.70-rel14.7-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[iD_Fabricante])) AND Produto.ID = 449' at line 1

/sql_produtos_detalhe.asp, line 31

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. e também veja se os tipos de dados estão corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entaum parceiro, sabe o que é mais estranho, fiz essa aplicação em ACCES e o mesmo código está perfeitamente funcional veja: http://www.ondistribuidora.com.br/produtos_detalhe.asp?menu=2&ID_Categoria=8&id_produto=449

é a mesma sintaxe só o que está mudando é o BD, estou com um BD muito grande em ACCES e qualquer momento vai parar por isso estou migrando para o MYSQL, as colunas, dados e tipos são exatamente as mesmas, coloquei sua dica de alteraçao no código o ERRO mudou veja:

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/sql_produtos_detalhe.asp, line 34

 

é uma consulta simples com INNER JOIN, sempre fiz isso, não consigo entender porque não funciona, se precisar dou acesso ao BD do MYSQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, consegui descobrir algo aqui, coloquei um Response.Write SQLString e vi que a consulta esta sendo feita com sucesso, o problema está sendo nos APELIDOS das tabelas. Colocando o SELECT acima diretamente no PHPMYADMIN verifiquei que o resultado esta vindo porém sem os devidos apelidos, se estou fazendo um INNER JOIN isto está me matando, pois esta vindo duas tabelas com o mesmo titulo NOME, sendo que eu preciso mais abaixo ao usar o recordset discrimina-las com apelidos ou seja, haverá momentos em que eu preciso do campo NOME da tabela A e outros momentos preciso do campo NOME da tabela B. Em ACCES aceitava o APELIDO com o (.) Produto.Nome, agora em MYSQL não esta aceitando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO.

 

Amigos consegui, segue código abaixo

SQLString = "SELECT Produto.*, Produto.ID_Fabricante AS Produto_ID_Fabricante, Produto.Foto_rec1 AS Produto_Foto_rec1, Produto.Foto_rec2 AS Produto_Foto_rec2, Produto.Foto_rec3 AS Produto_Foto_rec3, Produto.Preco AS Produto_Preco, Produto.Caracteristica AS Produto_Caracteristica, Produto.Recomendacao1 AS Produto_Recomendacao1, Produto.Recomendacao2 AS Produto_Recomendacao2, Produto.Recomendacao3 AS Produto_Recomendacao3, Produto.Descricao AS Produto_Descricao, Fabricante.ID AS Fabricante_ID, Fabricante.Nome AS Fabricante_Nome, Produto.Foto AS Produto_Foto, Produto.Nome AS Produto_Nome, Produto.ID, Produto.ID_categoria  FROM Fabricante INNER JOIN Produto ON Fabricante.ID = Produto.ID_Fabricante  WHERE Fabricante.ID = ID_Fabricante AND Produto.ID = " & vID_produto

Muito Obrigado pelas Dicas

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza... alguns comando são diferentes de Access para MySQL

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.