Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>
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.
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?
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 ...
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.
O hargon tem razão, o melhor é resolver essa dúvida aki pois outros usuários podem ter a mesma dúvida
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...
Hargon...só uma pergunta...como eu uso aquele código? rsrsrs....eu sempre uso o
If Rs.Eof = False Then
da o mesmo resultado?
Galera....muito obrigado pela ajuda, principalmente meu amigo Jow...gente fina....
valeu mesmo imasters.
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
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.