ERRO MYSQL 3265

ADELMOMELO 16/09/2010 23:58:52
#353178
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..
NETMANIA 17/09/2010 08:32:07
#353187
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.
XXXANGELSXXX 18/09/2010 12:02:35
#353295
Resposta escolhida
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
SMZTODOPODEROSO 18/09/2010 12:08:04
#353298
onde tens
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