none
RecordCount = tipos incompatíveis RRS feed

  • Pergunta

  • Pessoal, estou com um problema. Estou tentando utilizar o RecordSet, mas está retornando erro de tipos incompatíveis no meu  RecordCount. Onde será que estou errando?? =/


    Set cn = New ADODB.Connection
    cn.ConnectionString = "DADOS DE CONEXÃO"
    cn.Open
    'define um novo objeto recordset
    Set rs = New ADODB.Recordset
    sql = "SELECT * FROM " & txt_tb
    'gera o recordset para o sql sobre a conexao definida
    rs.Open sql, cn
    'define o cabeçalho das células no excel
    'Range("A1").Value = "Codigo do Cliente"
    'Range("B1").Value = "Quantidade Total"
    'Range("C1").Value = "Valor total dos Pedidos"

    'Definições RS
    rs.MoveFirst

    qtdeCol = rs.Fields.Count
    qtdeLin = rs.RecordCount
    i = 0

    Do While i > qtdeLin
        Do While i > qtdeCol
        qtdeCol = qtdeCol + 1
        Loop
        qtdeLin = qtdeLin + 1
    Loop
    i = 2
    If Not rs.EOF Then
         Do While Not rs.EOF
            
            ActiveSheet.Cells(l, c).Value = rs.Fields(c).Value
            'Range("A" & i).Value = rs(0)
            'Range("B" & i).Value = rs(1)
            'Range("C" & i).Value = rs(2)
            'Range("D" & i).Value = rs(3)
            'Range("E" & i).Value = rs(4)

            rs.MoveNext
            i = i + 1
        Loop
    End If

    cn.Close

    End Sub

    quarta-feira, 7 de março de 2018 19:21

Todas as Respostas

  • Qual versao do Excel voce esta usando? Existia um bug em versoes antigas que para resolver voce tinha que aplicar um hotfix, mas poderia usar essa soluçao de contorno tambem:

    rst = SomeRecordset
    dim rstCount as Long
    rstCount = CLng(rst.RecordCount)

    Aqui esta a página do hotfix:

    https://support.microsoft.com/en-us/help/983246/type-mismatch-error-message-when-you-run-a-vba-macro-in-a-64-bit-versi


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 7 de março de 2018 19:54
  • Experimente alterar seu código substituindo pela linha abaixo.

    rs.Open sql, cn, adOpenKeyset, adLockOptimistic


    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    quarta-feira, 7 de março de 2018 21:47
  • Transfira os dados do seu recordset para uma array.

        dados = rs.getRows

    Agora você pode utilizar as propriedade ubound(dados) e ubound(dados,2) 

    O ideal seria evitar o loop para não perder o desempenho do código.

        dados = Application.Transpose(dados)

        range("A1").resize(ubound(dados),ubound(dados,2)).value = dados

    quinta-feira, 8 de março de 2018 16:56