MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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, 14: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.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  FabioPaes em Sab 18 Jun 2016, 04: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, 12: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 23 Out 2017, 05:23