MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Ajuda com uma instrução

    leoni_dias
    leoni_dias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ajuda com uma instrução Empty [Resolvido]Ajuda com uma instrução

    Mensagem  leoni_dias 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.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  CassioFabre 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
    leoni_dias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  leoni_dias 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.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 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
    leoni_dias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  leoni_dias 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.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 17/5/2024, 07:07