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]Ajuda com uma instrução

    Compartilhe

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 125
    Registrado : 14/08/2011

    [Resolvido]Ajuda com uma instrução

    Mensagem  leoni_dias em 20/6/2018, 19:11

    Boa tarde,

    Espero estar colocando o tópico no local correto.

    Eu escrevi essa instrução de consulta e não funciona de forma alguma, trava o programa, e como acho que estou numa fase equina até para procurar na net (pois já procurei mas é como eu não entendesse o que está escrito, peço a compreensão e ajuda.

    se resume nisso:

    Private Sub AtualizaRetorno()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String

    Set db = CurrentDb

    strSQL = "SELECT * FROM FUNCIONÁRIOS WHERE FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] > 1 And FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] < 6 And FUNCIONÁRIOS.RETORNO < Date"
    (Não funciona. Trava o módulo)

    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
    (em conjunto com a primeira não funciona. Trava o módulo)


    Set rs = db.OpenRecordset("FUNCIONÁRIOS", dbOpenDynaset)
    (usando esse código e não os dois de cima, tudo funciona perfeitamente)


    If rs.RecordCount = 0 Then Exit Sub

    rs.MoveFirst

    Do While Not rs.EOF
    If rs.Fields("SITUAÇÃO NA UNIDADE") > 1 And rs.Fields("SITUAÇÃO NA UNIDADE") < 6 And rs.Fields("RETORNO") < Date Then
    rs.Edit
    rs.Fields("SITUAÇÃO NA UNIDADE") = 1
    rs.Update
    End If
    rs.MoveNext
    Loop


    rs.Close
    Set rs = Nothing
    Set db = Nothing

    End Sub

    Sei que o nível aqui é bem elevado, mas perdoem o equino.
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: [Resolvido]Ajuda com uma instrução

    Mensagem  CassioFabre em 20/6/2018, 21:08

    Boa tarde,

    Voce quer saber exatamente o que? O porque de estar travando o código?

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 125
    Registrado : 14/08/2011

    Re: [Resolvido]Ajuda com uma instrução

    Mensagem  leoni_dias em 20/6/2018, 21:41

    Boa tarde.

    Exatamente.

    Usando a tabela FUNCIONÁRIOS:
    Set rs = db.OpenRecordset("FUNCIONÁRIOS", dbOpenDynaset)
    funciona perfeitamente.


    Usando a consulta:
    strSQL = "SELECT * FROM FUNCIONÁRIOS WHERE FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] > 1 And FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] < 6 And FUNCIONÁRIOS.RETORNO < Date"
    além de não funccionar, para tudo ao tentar sair do programa.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Ajuda com uma instrução

    Mensagem  Alexandre Neves em 21/6/2018, 08:50

    Bom dia
    tente
    strSQL = "SELECT * FROM FUNCIONÁRIOS WHERE [SITUAÇÃO NA UNIDADE] > 1 And [SITUAÇÃO NA UNIDADE] < 6 And RETORNO < Date()"


    .................................................................................
    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

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 125
    Registrado : 14/08/2011

    Re: [Resolvido]Ajuda com uma instrução

    Mensagem  leoni_dias em 21/6/2018, 20:07

    Boa tarde.

    Obrigado pelas ajudas, mas depois de pesquisas, o que resolveu foi deixar a instrução da forma abaixo:

    strSQL = "SELECT * FROM FUNCIONÁRIOS WHERE FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] > '" & 1 & "' And FUNCIONÁRIOS.[SITUAÇÃO NA UNIDADE] < '" & 6 & "' And FUNCIONÁRIOS.[RETORNO] < #" & Date & "#"

    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)


    Só uma pergunta qos senhores para finalizar:

    É melhor usar instrução SQL acima ou diretamente usando a tabela como abaixo?

    Set rs = db.OpenRecordset("FUNCIONÁRIOS", dbOpenDynaset)

    Obrigado mais uma vez.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Ajuda com uma instrução

    Mensagem  Alexandre Neves em 22/6/2018, 14:42

    Boa tarde,
    A diferença está que a 1ª carrega dados filtrados pelas condições enquanto a 2ª carrega a tabela toda


    .................................................................................
    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

      Data/hora atual: 25/9/2018, 04:50