MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Recordset com nome do campo em matriz

    Compartilhe

    Mauricio.Santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 15/02/2016

    [Resolvido]Recordset com nome do campo em matriz

    Mensagem  Mauricio.Santos em Sex 17 Jun 2016, 10:50

    Olá!

    Tenho o seguinte código:

    Código:

        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.

    Já tentei também Rst(varListaCampos(i)) sem sucesso.

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

    Obrigado a todos.

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2304
    Registrado : 14/08/2013

    Re: [Resolvido]Recordset com nome do campo em matriz

    Mensagem  FabioPaes em Sab 18 Jun 2016, 00:06

    Amigo, qual o Objetivo desse Codigo???

    Dica: Coloque para exibir a lista de Campos atraves de uma MsgBox, assim sabera se realmente esta capturando os Nomes dos Campos...

    Ex

    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, ",")

    msgbox varListaCampos
    Msgbox UBound(varListaCampos)

    For i = 0 To UBound(varListaCampos)

    Debug.Print Rst!varListaCampos(i) '-> Comando de teste


    Next i



    Assim sabera se esta tudo ok com os dados ou nao...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Mauricio.Santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 15/02/2016

    Re: [Resolvido]Recordset com nome do campo em matriz

    Mensagem  Mauricio.Santos em Seg 20 Jun 2016, 08:05

    Olá FabioPaes.

    Utilizo Access 2016 e estou trabalhando com ADODB, BD desvinculado e utilizando a string de conexão:

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

    Se eu utilizar BD vinculado as seguintes linhas de código funcionam normalmente:

    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

    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.

      Data/hora atual: Seg 05 Dez 2016, 01:21