[resolvido] - Recordset com nome do campo em matriz

Moderador: Avelino Sampaio

Mauricio.Santos
Mensagens: 44
Registrado em: 13 Ago 2015, 14:59
Localização: São Paulo

[resolvido] - Recordset com nome do campo em matriz

Mensagempor Mauricio.Santos » 16 Jun 2016, 13:44

Olá!

Tenho o seguinte código:

Código: Selecionar todos

    strSql = "SELECT * from myTable WHERE MyField like '" & dtaDataImport & "%" & "'"
    Set Rst = New ADODB.Recordset
    Rst.CursorLocation = adUseClient
    Rst.Open strSql, conexaoSQL, adOpenDynamic, adLockOptimistic
   
    ' Variável string convertida em matriz que contém os nomes de campos que existem  no recordset aberto anteriormente
    varListaCampos = Split(varListaCampos, ",")
   
    For i = 0 To UBound(varListaCampos)
   
        Debug.Print Rst!varListaCampos(i) '-> Comando de teste
       
       
    Next i


No código dentro do for/next ocorre o erro "3265 - O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado", porém o nome do campo está correto e ele consta no recordset.

Como fazer para que o comando dentro do for/next funcione???

Obrigado a todos.
Última edição por Mauricio.Santos em 20 Jun 2016, 15:30, editado 2 vezes no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Recordset com nome do campo em matriz

Mensagempor Avelino Sampaio » 16 Jun 2016, 14:19

Mauricio,

coloque um ponto de interrupção na linha:

varListaCampos = Split(varListaCampos, ",")

Abra a janela Verificação Imediata e analise o conteúdo da variável, se não tem alguma inconsistência:

? varListaCampos <enter>

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Mauricio.Santos
Mensagens: 44
Registrado em: 13 Ago 2015, 14:59
Localização: São Paulo

Re: Recordset com nome do campo em matriz

Mensagempor Mauricio.Santos » 16 Jun 2016, 16:31

Olá Avelino!

Na variável não tenho nenhum problema, ela mostra toda a lista de campos. O erro ocorre logo no primeiro item da matriz.
Se, na janela de verificação imediata, eu pegar o nome do campo ? varListaCampos(0) (que resulta em MyField_0 ) e utilizar o ? Rst!MyField_0, ele mostra o conteúdo do campo normalmente.

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Recordset com nome do campo em matriz

Mensagempor Avelino Sampaio » 16 Jun 2016, 16:52

Mauricio,

testei aqui e funcionou assim:

...
Debug.Print rst(varListaCampos(i))
...

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Mauricio.Santos
Mensagens: 44
Registrado em: 13 Ago 2015, 14:59
Localização: São Paulo

Re: Recordset com nome do campo em matriz

Mensagempor Mauricio.Santos » 16 Jun 2016, 17:32

Avelino,

O erro persiste....
Mais algumas informações....
Utilizo Access 2016 e estou trabalhando com BD desvinculado, utilizando a string de conexão:

cnSQL.Open "Provider=SQLOLEDB; Data Source=" & strBDSqlSrvH & "; Initial Catalog=" & strBDSqlDBH & "; User ID=" & strBDSqlUserH & "; Password=" & strBDSqlPassH & ""

Tem alguma referência prá isso funcionar corretamente?

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Recordset com nome do campo em matriz

Mensagempor Avelino Sampaio » 16 Jun 2016, 18:41

Eu não tenho o sql

veja se ajuda:- fiz o teste com este código:

Código:
Dim rs As DAO.Recordset
Dim varListaCampos, i%
varListaCampos = "id,Nomepaciente,nomeMae,dta"
varListaCampos = Split(varListaCampos, ",")
Set rs = CurrentDb.OpenRecordset("tblTeste")
For i = 0 To UBound(varListaCampos)
Debug.Print rs(varListaCampos(i))
Next
rs.Close
Set rs = Nothing


Funcionou mas quando eu troquei por uma tabela inexistente no OpenRecordSet deu o erro 3265. Percorra alguns registros da sua tabela com o Do WHILE e veja se retorna registros.

Crie um BD com uma tabela qualquer e teste o código acima se funciona. Espero que isso forneça alguma informação útil.

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Mauricio.Santos
Mensagens: 44
Registrado em: 13 Ago 2015, 14:59
Localização: São Paulo

Re: Recordset com nome do campo em matriz

Mensagempor Mauricio.Santos » 16 Jun 2016, 19:05

Avelino....

Realizei testes substituindo o conteúdo da matriz (varListaCampos(i)) pelo nome do campo e retornou dos dados presentes nos campos.
Vou ver se consigo resolver esse problema e posto o resultado aqui.

Obrigado pela ajuda.

Sucesso!!!

Mauricio.Santos
Mensagens: 44
Registrado em: 13 Ago 2015, 14:59
Localização: São Paulo

Re: Recordset com nome do campo em matriz

Mensagempor Mauricio.Santos » 20 Jun 2016, 15:28

Olá!

Nas minhas pesquisas verifiquei que em BD desvinculado meu código não vai funcionar como desejo.
Vou ter que encontrar outra forma de resolver meu problema.

Obrigado pela ajuda.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Access x Outros”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante