Ir para conteúdo

POWERED BY:

Arquivado

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

luizsnpjr

ASP + MySQL no IIS

Recommended Posts

Boa tarde galera.

É o seguinte. Eu trabalho para um portal que começou faz 3 meses, só que a quantidade de informações que vamos comerçar a receber não vai dar pra colocar no Access, por isso eu estou tentando passar tudo pro BD MySQL.

A conexão já está feita e está funcionando corretamente (segue o códgio abaixo:)

<%
Set Cn = Server.CreateObject("ADODB.Connection")
set Rs = server.createObject("ADODB.Recordset")
Cn.ConnectionString = "driver=MySQL ODBC 5.1 Driver; DNS=pluguemais; server=localhost; Uid=root; PassWord=marmita; DataBase=mysql;"
Cn.Open

sql = "select * from EMPRESA"  
Rs.Open sql, Cn
Response.Write Rs.Fields("Empresa")
Rs.MoveNext
Response.Write Rs.Fields("Empresa")
%>
Como vocês viram eu já fiz até um SELECT para testa-lo e me retorna o resultado corretamente.

O que acontece é que me disseram que o meu código não mudaria em nada, somente a forma de conexão com isso, eu alterei a minha conexão, importei o BD Access inteirinho para o MySQL através do MySQL-Front e quando abri o site, ele deu um erro no meu sistema de banners rotativos (segue o código baixo)

<%
Function GenRndNum(Total)
	Randomize
	GenRndNum = Int((Rnd * 1) * Cdbl(Total))
End Function

SQL = "SELECT * FROM EMPRESA WHERE Logo = 1"
Rs.Open SQL, Cn, 3, 1

Rs.MoveLast
Tt = Rs.RecordCount
Rs.MoveFirst

Randomize
For I = 1 to 8
	NewRndNum = GenRndNum(Tt)
	Do Until Instr(NumList,CStr(NewRndNum & "|")) = 0
   		NewRndNum =  GenRndNum(Tt)
	Loop
   	IDR = NewRndNum+1
	NumList = NumList & CStr(NewRndNum & "|")
	
	Rs.MoveFirst
	Rs.Move (IDR-1)
		If Rs.Eof = True Then Exit For
	If Rs.Fields("Link") <> "" Then
	 %>
	<a href="<%=Rs.Fields("Link")%>" target="blank">
	 <%
	End If
	%>
<img border="0" src="empresas/<%=Rs.Fields("Id")%>/img.jpg" width="120" height="65" alt="<%=Rs.Fields("Empresa")%>"><br><br></a>
	<%
	Rs.MoveNext
	Next
Rs.Close
%>

Deu um erro na linha do If Rs.Fields("Link"). Para facilitar eu simplesmente exclui o if (do If ao End If) inteirinho pra ver o site rodando legal, só que ai deu um outro erro.

HTTP 500.100 - Servidor interno Erro - erro do ASP

 

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

/novo2/Default.asp

No meu Default.asp, só tem chamadas de Includes, tem um arquivo que ainda utiliza o Access por fora de todos os códigos e mais nada.

 

Eu não sei o que está acontecendo, gostaria de deixar duas perguntas:

1º - Onde está errado?

2º - Realmente, no o MySQL + ASP só vai mudar a minha conexão ou também vai mudar algo nos meus códigos?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez não tenha migrado todos os dados, e como já havia um erro no código, esse erro apareceu agora.

 

Antes de acessar algum campo no banco de dados, utilieza Not nomeDaRecordset.Eof, de preferência utilize com IF. Se for verdadeiro, quer dizer que encontrou registros, então entra no IF, caso contrário deve sair.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá.....o que acontece é o seguinte, os mesmos dados que estão no Access, já se encontram no MySQL. Quando funciona o Access, o portal funciona corretamente sem erro algum. Quando eu coloco a conexão com MySQL ele dá erro dizem o EOF ou BOF, só que os dados já estão no MySQL. O que você tá me dizendo é que possa ter algum que esteja fora é isso?

 

Por favor, se alguém puder conversar comigo online pelo msn ou skype, me add pra facilitar a conversa....posso postar meu msn?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal eu tbm uso asp e MySql e sinceramente acontece muitos desses erros comigo hauhauhahuhauhu, posta o seu skype ai pra gente trocar uma idéia, possivelmente você deve estar com um loop no lugar errado ou usando algum comando q o MySql ñ aceita ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor resolver a sua dúvida aqui no Fórum mesmo, assim outras pessoas podem ver seu problema e tentar lhe ajudar.

 

Esse erro acontece quando não encontra resultado e mesmo assim você tenta acessar o campo.

 

Utilize uma condição (como citei no primeiro post) para verificar se encontrou ou não alguma informação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O hargon tem razão, o melhor é resolver essa dúvida aki pois outros usuários podem ter a mesma dúvida

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz a chamada desse tipo:

<%
Set Cn = Server.CreateObject("ADODB.Connection")
set Rs = server.createObject("ADODB.Recordset")
Cn.ConnectionString = "driver=MySQL ODBC 5.1 Driver; DNS=pluguemais; server=localhost; Uid=root; PassWord=marmita; DataBase=mysql;"
Cn.Open

SQL = "SELECT * FROM EMPRESA WHERE Logo = 1"
Rs.Open SQL, Cn, 3, 1

'response.write Rs.Fields("Empresa")
'response.end()

Rs.Close
%>

E ele me retorna exatamente o que está no BD do MySQL, mas mesmo assim vou utilizar seu código.

O Jow, vou te passar meu Skype e Msn mas por email ok...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já resolveu?

 

Seria algo tipo isso:

SQL = "SELECT * FROM EMPRESA WHERE Logo = 1"
Rs.Open SQL, Cn, 3, 1
If not rs.eof then
'response.write Rs.Fields("Empresa")
'response.end()
End if
Rs.Close

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.