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]OpenRecordset Utilizando uma Consulta

    Compartilhe

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    [Resolvido]OpenRecordset Utilizando uma Consulta

    Mensagem  pengo em Sex 03 Out 2014, 18:18

    Boa Tarde Pessoal,

    A algum tempo o colega Dilson, me ajudou com o código abaixo (http://www.maximoaccess.com/t18664-resolvidoloop-somar-datas-e-preencher-registros-usando)

    Porém, hoje depois de já ter vários registros em meu banco de dados, o formulário que utiliza esse código tem ficado lento, pois o código percorre todos os registros da minha tabela.

    Eu encontrei uma solução mas não estou conseguindo implementar.

    Minha ideia é colocar uma consulta no OpenRecordset, assim, o código iria percorrer somente alguns registros e tornaria o formulário bem mais rápido.

    Bom, em substituição a linha vermelha eu tentei o código abaixo.

    strsql = "SELECT * "
    strsql = strsql & "FROM Cad_Tratamentos "
    strsql = strsql & "WHERE (((Protocolo) = " & Me.Protocolo.Value & "));"
    Set rst = CurrentDb.OpenRecordset(strsql)

    Porém ele me da o erro, 3061 - Parâmetros insuficientes. Eram esperados 1.

    Depois tentei outro código que se não me engano é do amigo JPaulo.

    Set rst = db.OpenRecordset("SELECT * FROM Cad_Tratamentos WHERE Protocolo = '" & Protocolo.Value & "'", dbOpenDynaset, dbSeeChanges)

    Porém esse da o erro 424 - O objeto é obrigatório.

    E eu não estou conseguindo resolver o problema, já tentei varias coisas, mas não está dando certo.

    Alguém poderia me ajudar?




    On Error GoTo TratareiErro
    Me.Recalc
    Dim rSt As DAO.Recordset
    Dim CodRef As Long
    Dim rData As Date
    Dim rDias As Integer
    Set rSt = CurrentDb.OpenRecordset("Cadastro")
    rSt.MoveLast
    rSt.MoveFirst
      Do While Not rSt.EOF
            rDias = Nz(rSt("DIAS"))
            CodRef = Nz(rSt("CodigoRef"))
            rData = Nz(DLookup("DATA_PREVISTA", "tblTemp", _
                                                       "Registro =" & CodRef))
            rSt.Edit
            If CodRef > 0 And rData <> "00:00:00" Then
                rSt("DATA_PREVISTA") = rData + rDias
            End If
            rSt.Update
            rSt.MoveNext
      Loop
    rSt.Close
    Me.Requery
    Exit_TratareiErro:
    Exit Sub
    TratareiErro:
    MsgBox "Aconteceu falha neste processamento." _
         & vbCrLf & "Trata-se do erro n°: " & Err.Number _
         & vbCrLf & "Descrição: " _
         & Err.Description, vbInformation, "Erro inesperado"
    Exit Sub

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]OpenRecordset Utilizando uma Consulta

    Mensagem  Alexandre Neves em Sex 03 Out 2014, 21:20

    Boa noite,
    Veja qual o valor do Me.Protocolo.Value aquando da chamada


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]OpenRecordset Utilizando uma Consulta

    Mensagem  pengo em Sex 03 Out 2014, 21:23

    Boa Tarde Alexandre,

    Por exemplo, o valor está "P", então, eu acredito que ele deveria analisar todos os registros que contenham o valor "P" no campo especificado.

    Obrigado.

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]OpenRecordset Utilizando uma Consulta

    Mensagem  Alexandre Neves em Sex 03 Out 2014, 21:25

    Então, falta as pelicas a envolver a expressão
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM Cad_Tratamentos WHERE Protocolo='" & Me.Protocolo.Value & "';")


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]OpenRecordset Utilizando uma Consulta

    Mensagem  pengo em Sex 03 Out 2014, 21:33

    Amigo Alexandre,

    Era exatamente isso que estava faltando, como pode uma coisa tão pequena passar despercebida.

    Bom, meu formulário ainda continuou lendo, acho que terei que colocar alguma barra de progresso para o usuário não pensar que o aplicativo travou, mas isso é assunto para outro tópico.

    Por enquanto muito obrigado pela sua imensa ajuda.

    Abraços

      Data/hora atual: Dom 04 Dez 2016, 20:17