ERRO MYSQL 3265
Pessoal,
Após está conectado e tudo mais, quando faço um select em uma tabela consigo manipular os resultados sem problemas, agora se preciso fazer um segundo select em outra tabela com outro recordset, baseado em informações do primeiro select, o mysql até abre como se tudo funcionasse bem mais não traz nenhum resultado da consulta, e ainda, não dá erro nenhum durante a execução só mostrando o mesmo quando uso o debug do VB6, então quando verifico se retornou algum registro é mostrado a mensagem abaixo:
Run-Time error: 3265
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado
Como utilizo o mysql recentemente e não tenho muita experiência e ainda não tenho nenhuma noção de como possa resolver isto, alguém saberia?
O que percebo é que se eu fizer com consulta em uma tabela com o resultado dela, se eu precisar usar outro select de outra tabela o mysql não está permitindo, ou seja, seria por exemplo se eu consultasse uma tabela de cliente(ai ele mostra normalmente todos os registros) e dentre os campos dos clientes tivesse o campo banco(numerico) e agencia(numerico) e precisasse, baseado nestes campos selecionar em outra tabela chamada banco através de outra consulta e ai está acontecendo o relatado acima. Para exemplificar melhor abaixo segue o código que está acontecendo:
Codigo abaixo usa dois record set um é RSmSQL(tabela arquivos) e outro RSmSQL_tmp(tabela usuarios):
Do While Not RSmSQL.EOF
ListView2.ForeColor = 3
Set lst = ListView2.ListItems.Add
On Error Resume Next
With lst
.Text = RSmSQL([Ô]Id[Ô])
.SubItems(1) = RSmSQL([Ô]Nome[Ô])
ListView2.ListItems(ListView2.ListItems.Count).ListSubItems(1).ForeColor = vbBlue
.SubItems(2) = RSmSQL([Ô]Descricao[Ô])
mySqlIP = [Ô]000.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usu[Ô] [ô] identificacao
pass = [Ô]senha[Ô] [ô] senha
strDataBaseName = [Ô]BD[Ô]
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
[ô]usamos um cursor do lado do cliente pois os dados
[ô]serao acessados na maquina do cliente e nao de um servidor
Set RSmSQL_tmp = New ADODB.Recordset
[ô]Prepara o recordset
RSmSQL_tmp.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSmSQL_tmp.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSmSQL_tmp.LockType = adLockPessimistic
[ô]Ist garente que o registros que esta sendo editado
[ô]pode ser salvo
RSmSQL_tmp.Source = [Ô]Select * From usuarios where Id_Usuario = [Ô] & Val(RSmSQL([Ô]Id_Origem[Ô]))
RSmSQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao e
RSmSQL_tmp.Open
[ô]abre o recordset com isto o evento MoveComplete sera disparado
If Not RSmSQL_tmp.EOF Then <--- O ERRO OCORRE AQUI OU SEJA, NÃO TRAZ REGISTROS!!
.SubItems(3) = RSmSQL_tmp([Ô]Usu_Nome[Ô]) <--- CADA RESULTADO DO CAMPO CONTéM O ERRO ACIMA
Else
.SubItems(3) = [Ô]Não Existe[Ô]
End If
.SubItems(4) = Format(RSmSQL([Ô]Data[Ô]), [Ô]DD/MM/YYYY[Ô])
.SubItems(5) = RSmSQL_tmp([Ô]Usu_Cod_Banco[Ô])
.SubItems(6) = RSmSQL_tmp([Ô]Usu_Cod_Agencia[Ô])
End With
RSmSQL.MoveNext
Loop
Será que algém poderia me ajudar? Uma observação isto está acontecendo depois que mudei os parametros para a Base de Dados do Servidor, pois, de forma local está funcionando 100%, que raio de Banco de Dados é este que só funciona local? O que devo fazer? Será que alguém teria uma solução? O que ocorre é que você passa meses desenvolvendo quando acaba e tudo está aparentemente perfeito começar o calvário, será que é tão difÃcil assim sobreviver neste mundo VB? Desculpem mais estou ficando decepcionado por não poder resolver e nem ter ajuda..
Após está conectado e tudo mais, quando faço um select em uma tabela consigo manipular os resultados sem problemas, agora se preciso fazer um segundo select em outra tabela com outro recordset, baseado em informações do primeiro select, o mysql até abre como se tudo funcionasse bem mais não traz nenhum resultado da consulta, e ainda, não dá erro nenhum durante a execução só mostrando o mesmo quando uso o debug do VB6, então quando verifico se retornou algum registro é mostrado a mensagem abaixo:
Run-Time error: 3265
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado
Como utilizo o mysql recentemente e não tenho muita experiência e ainda não tenho nenhuma noção de como possa resolver isto, alguém saberia?
O que percebo é que se eu fizer com consulta em uma tabela com o resultado dela, se eu precisar usar outro select de outra tabela o mysql não está permitindo, ou seja, seria por exemplo se eu consultasse uma tabela de cliente(ai ele mostra normalmente todos os registros) e dentre os campos dos clientes tivesse o campo banco(numerico) e agencia(numerico) e precisasse, baseado nestes campos selecionar em outra tabela chamada banco através de outra consulta e ai está acontecendo o relatado acima. Para exemplificar melhor abaixo segue o código que está acontecendo:
Codigo abaixo usa dois record set um é RSmSQL(tabela arquivos) e outro RSmSQL_tmp(tabela usuarios):
Do While Not RSmSQL.EOF
ListView2.ForeColor = 3
Set lst = ListView2.ListItems.Add
On Error Resume Next
With lst
.Text = RSmSQL([Ô]Id[Ô])
.SubItems(1) = RSmSQL([Ô]Nome[Ô])
ListView2.ListItems(ListView2.ListItems.Count).ListSubItems(1).ForeColor = vbBlue
.SubItems(2) = RSmSQL([Ô]Descricao[Ô])
mySqlIP = [Ô]000.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usu[Ô] [ô] identificacao
pass = [Ô]senha[Ô] [ô] senha
strDataBaseName = [Ô]BD[Ô]
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
[ô]usamos um cursor do lado do cliente pois os dados
[ô]serao acessados na maquina do cliente e nao de um servidor
Set RSmSQL_tmp = New ADODB.Recordset
[ô]Prepara o recordset
RSmSQL_tmp.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSmSQL_tmp.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSmSQL_tmp.LockType = adLockPessimistic
[ô]Ist garente que o registros que esta sendo editado
[ô]pode ser salvo
RSmSQL_tmp.Source = [Ô]Select * From usuarios where Id_Usuario = [Ô] & Val(RSmSQL([Ô]Id_Origem[Ô]))
RSmSQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao e
RSmSQL_tmp.Open
[ô]abre o recordset com isto o evento MoveComplete sera disparado
If Not RSmSQL_tmp.EOF Then <--- O ERRO OCORRE AQUI OU SEJA, NÃO TRAZ REGISTROS!!
.SubItems(3) = RSmSQL_tmp([Ô]Usu_Nome[Ô]) <--- CADA RESULTADO DO CAMPO CONTéM O ERRO ACIMA
Else
.SubItems(3) = [Ô]Não Existe[Ô]
End If
.SubItems(4) = Format(RSmSQL([Ô]Data[Ô]), [Ô]DD/MM/YYYY[Ô])
.SubItems(5) = RSmSQL_tmp([Ô]Usu_Cod_Banco[Ô])
.SubItems(6) = RSmSQL_tmp([Ô]Usu_Cod_Agencia[Ô])
End With
RSmSQL.MoveNext
Loop
Será que algém poderia me ajudar? Uma observação isto está acontecendo depois que mudei os parametros para a Base de Dados do Servidor, pois, de forma local está funcionando 100%, que raio de Banco de Dados é este que só funciona local? O que devo fazer? Será que alguém teria uma solução? O que ocorre é que você passa meses desenvolvendo quando acaba e tudo está aparentemente perfeito começar o calvário, será que é tão difÃcil assim sobreviver neste mundo VB? Desculpem mais estou ficando decepcionado por não poder resolver e nem ter ajuda..
Você tentou rodar trecho a trecho da sua consutla? O problema pode estar ocorrendo na consulta que alimenta o RecordSet RSmSQL;
A minha suspeita inicial pode ser uma falha na consulta acima que gera o comando SQL do Recordset RSmSQL_tmp errado e provocando esta falha.
A minha suspeita inicial pode ser uma falha na consulta acima que gera o comando SQL do Recordset RSmSQL_tmp errado e provocando esta falha.
amigo, veja bem, erro 3265 é quando não existe o campo na tabela, exemplo, vc esta buscando os dados da tabela1, vamos supor que tem um campo la .. NOMEUSER, entao vc colocou na query esse campo NOMEUSER, so que nao existe o campo, entao apresenta o erro 3265, entao .. falta de campos na tabela ou no rs. ok
onde tens
If Not RSmSQL_tmp.EOF Then
coloca
If Not RSmSQL_tmp.EOF or RSmSQL_tmp.BOF Then
If Not RSmSQL_tmp.EOF Then
coloca
If Not RSmSQL_tmp.EOF or RSmSQL_tmp.BOF Then
Tópico encerrado , respostas não são mais permitidas