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]Dúvida com comando recordset.find

    Compartilhe
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 23/01/2017

    [Resolvido]Dúvida com comando recordset.find

    Mensagem  thiagomcosta em Sex 09 Jun 2017, 18:12

    Olá!

    Estou com uma dúvida na utilização do método find no Excel.
    Estou tentando ler uma tabela do Access de dentro do Excel (versão 2010)

    A seguinte linha está dando erro:
    Código:
    rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 1"

    Porém se eu colocar apenas 1 critério não há erro:
    Código:
    rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "'"
    rs_Cronograma.Find "NumEtapa_Cronograma = 1"

    Abaixo o código completo:
    Código:
    Sub Importa_Dados()
    Dim vSQL_Clientes As String, vSQL_Cronograma As String, vSQL_IDs As String
    Dim rs_Clientes As ADODB.Recordset, cn_Clientes As ADODB.Connection
    Dim rs_Cronograma As ADODB.Recordset, cn_Cronograma As ADODB.Connection
    Dim rs_IDs As ADODB.Recordset, cn_IDs As ADODB.Connection
    Dim vLinha As Integer, vLinhaMax As Integer
    Dim vID As String

    'Abre a tabela cronograma e lança na planilha
    vSQL_Cronograma = "SELECT tb_Cronograma.ID_Cronograma, tb_Cronograma.Etapa_Cronograma, tb_Cronograma.NumEtapa_Cronograma, tb_Cronograma.Previsto_Cronograma, tb_Cronograma.Executado_Cronograma "
    vSQL_Cronograma = vSQL_Cronograma & "FROM tb_Cronograma;"
        
    Set cn_Cronograma = New ADODB.Connection
    cn_Cronograma.CursorLocation = adUseClient
    cn_Cronograma.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Z:\Publico\Gestão Ideés\IdeesGestao_be.accdb;Persist Security Info=False"
        
    Set rs_Cronograma = New ADODB.Recordset

    rs_Cronograma.Open vSQL_Cronograma, cn_Cronograma
        
    For vLinha = 2 To vLinhaMax
        vID = Worksheets("Cadastro das Turmas").Cells(vLinha, 2).Value
        rs_Cronograma.MoveFirst
    '>> NA LINHA ABAIXO QUE DÁ O ERRO <<
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 1"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 11).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 13).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 2"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 40).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 21).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 3"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 41).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 22).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 4"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 42).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 23).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 5"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 43).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 24).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 6"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 44).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 25).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 7"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 45).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 26).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 8"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 46).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 28).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 9"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 47).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 29).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 10"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 48).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 31).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 11"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 49).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 32).Value = rs_Cronograma!Executado_Cronograma
            rs_Cronograma.MoveFirst
        rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 12"
            Worksheets("Cadastro das Turmas").Cells(vLinha, 8).Value = rs_Cronograma!Previsto_Cronograma
            Worksheets("Cadastro das Turmas").Cells(vLinha, 35).Value = rs_Cronograma!Executado_Cronograma
    Next

    'Fecha as tabelas
    rs_IDs.Close
    Set rs_IDs = Nothing
    cn_IDs.Close
    Set cn_IDs = Nothing

    rs_Clientes.Close
    Set rs_Clientes = Nothing
    cn_Clientes.Close
    Set cn_Clientes = Nothing

    rs_Cronograma.Close
    Set rs_Cronograma = Nothing
    cn_Cronograma.Close
    Set cn_Cronograma = Nothing

    End Sub


    O erro que dá é o seguinte:
    Erro em tempo de execução '3001':
    Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.


    Última edição por thiagomcosta em Qua 14 Jun 2017, 14:07, editado 1 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4297
    Registrado : 15/03/2013

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  ahteixeira em Sab 10 Jun 2017, 12:55

    Olá Thiago Costa,
    Este fórum é de Access.
    Tópico movido para OffTopic.
    Abraço
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 23/01/2017

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  thiagomcosta em Seg 12 Jun 2017, 12:34

    Pedrão pela gafe.
    Obrigado!

    Na verdade eu tenho a planilha pronta, mas os dados estão duplicados. Tenho a informação no Access e depois é cadastrado novamente no Excel. Queria aproveitar toda a estrutra do Excel, com as tabelas filtradas, os gráficos, e outros recursos mais que não teria no Access. Mas também deixar de ter um cadastro paralelo. Ter as informações em apenas um local, no caso, o aAccess.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4297
    Registrado : 15/03/2013

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  ahteixeira em Ter 13 Jun 2017, 08:18

    Olá,
    Quais são os recursos que lhe estão a faltar no Access?
    Pode enumerar?
    Abraço
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 23/01/2017

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  thiagomcosta em Ter 13 Jun 2017, 17:34

    Primeira parte são os gráficos, que já estão prontos na planilha que tenho. Ganharia tempo e faria isso somente daqui uns meses.

    Outra parte é uma barra que indica a etapa do processo que se encontra o cliente. A medida que as datas são lançadas a barra é atualizada automaticamente. Clicando sobre a etapa é possível atualizar a data de realização. Sei que é possível fazer no access, mas, novamente, não quero perder tempo HOJE com algo que já está pronto.

    Estou ainda no meio da programação de todo o sistema e o que já existe e funciona não queria trabalhar agora. Só o fato da duplicação dos dados que está sendo um problema.


    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4297
    Registrado : 15/03/2013

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  ahteixeira em Ter 13 Jun 2017, 17:39

    Olá Thiago Costa,
    Sim, creio ser tudo possivel em Access.
    Face à urgencia, não lhe resta outra alternetive se não procurar um forum de Excel.

    Qualquer coisa de Access ja sabe Máximo Access Wink
    Abraço
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 23/01/2017

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  thiagomcosta em Qua 14 Jun 2017, 13:15

    Aqui já me ajuda bastante a alguns anos... hehe...

    Consegui resolver puxando campo por campo ao invés de uma consulta em SQL com todos os campos. Ficou um pouco demorado para abrir a planilha, mas de imediato atende o que eu necessito.

    Valeu, grande abraço!
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4297
    Registrado : 15/03/2013

    Re: [Resolvido]Dúvida com comando recordset.find

    Mensagem  ahteixeira em Qua 14 Jun 2017, 14:46

    Olá Thiago Costa,
    Obrigado pelo retorno.
    Abraço

      Data/hora atual: Qui 24 Ago 2017, 11:31