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


2 participantes

    Alteração de status (VBA)

    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 17:46

    Boa Tarde

    Tenho BD com controle de atividades e gostaria de inserir um código quando o campo "Previsão" estiver com a data vencida, o campo do "status" alterasse automaticamente para "Vencido".

    Obs 1. No campo de status eu coloquei "caixa de combinação" com a seguinte linha: "Não iniciado"; "Em andamento"; "Concluído".  Porem não queria inserir a linha "Vencido", gostaria que ele aparecesse apenas em situações que a data estivesse expirada, e quando eu alterasse a "previsão" para uma data vigente, voltasse para o status de origem "Não Iniciado/Em andamento".

    Obs 2. Quando o status da atividade estiver "Concluído" ele não alterasse para "Vencido", tendo em vista que já foi resolvido.

    Obs 3. Utilizei a expressão "SeImed" e deu certo , mas o campo de status que preciso mudar ele trava. Acredito que codigo VBA seria a alternativa.

    Desde já eu agradeço
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 18:17

    Boas amigo,
    Utilize consultas atualização:

    Campo: Previsão

    Atualizar para: "Vencido"

    Criterio: < N o w ( ) 'esta dando algum erro aqui mas é tudo junto

    Ou: "Não iniciado"

    Nos demais casos utilize como criterio como <> "Concluido" (diferente de concluido) para não atualizar campos concluidos.

    para chamar as funções utilize um codigo em algum formulario:

    DoCmd.SetWarnings False 'não exibe a mensagem padrão de pergunta do access
    DoCmd.OpenQuery"suaconsulta"
    DoCmd.SetWarnings True 'retorna a exibir as mensagens do access
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 18:55

    Obrigado Biligo pelo retorno!

    Criei a consulta atualização conforme orientação, e chamei a função conforme o código, porem ele atualiza todos os registros com status "Vencido", mesmo quando a data não esta vencida. Em anexo segue a consulta atualização inserida e abaixo segue o código de chamada para a consulta de atualização em formulario.

    Private Sub Form_Load()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "ConsTAbertasAtualizacao"
    DoCmd.SetWarnings True
    End Sub
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 19:11

    Desculpe amigo,
    Ser auxiliado por novato da nisso erro meu.

    utilize o critério < Agora() no seu campo que tiver a data referente a tarefa no caso seria previsão
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 19:44

    Obrigado novamente.

    Agora deu certo!

    Porem conforme Obs 1. gostaria que ele aparecesse apenas em situações que a data estivesse expirada, e quando eu alterasse a "previsão" para uma data vigente, voltasse para o status de origem "Não Iniciado/Em andamento".

    Existe esta possibilidade?

    Desde já eu agradeço
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 20:42

    No caso então você devera implementar o seguinte conceito a sua consulta

    adicione na sua consulta1 como criterio para o campo inicio (crio eu que este é o campo que contem a data verdadeira): "" 'o campo sera vazio

    E então no evento após atualizar (no formulario) do seu campo que contem os valos de inicio:

    If Me.Inicio > Data() Then 'Se o inicio for menor que a data atual
    Me.Status.value = "Não Iniciado" ' atualizar para não iniciado
    ElseIf Me.Inicio = Data() Then 'Se for igual a data atual
    Me.Status.Value = "Em andamento" 'atualizar para não iniciado
    Else Me.Inicio < Data() 'acho que não pode ocorrer isto no seu caso então
    MsgBox "Algo esta errado esta tarefa não pode ter sido conlcuida"
    End If

    Desse modo seu Status voltara a ser "não iniciado ou em andamento" e não podera ser atualizado pela consulta pois havera valores no campo inicio

    Se houver algo errado explique melhor o que seria " situações que a data estivesse expirada(Qual data), e quando eu alterasse(como é alterado) a "previsão" para uma data vigente"
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 21:35

    Mais uma vez obrigado Biligo!

    Inseri os códigos e expressão conforme orientado, ele retorna apenas para o status "Não iniciado", porem esta atividade estava com o status "Em andamento"

    Biligo, o que eu preciso é quando a data de "Previsão" (Data estimada de conclusão da atividade) quando alterada, o campo "Status" retorne para o status de origem (Em andamento/Não iniciado).

    Supondo que data de hoje seria 29/11/14 e foi:

    - (Registrada em 01/11/14) Atividade 1 - Inicio: 01/11/14 - Previsão: 28/11/14 - Status: Em andamento  
    - (Antes de alterar em 30/11/14) Atividade 1  - Inicio: 01/11/14 - Previsão: 28/11/14 - Status: Vencido
    - (Após alterar em 30/11/14) Atividade 1  - Inicio: 01/11/14 - Previsão: 01/12/14 - Status: Em andamento

    Ou

    - (Registrado em 01/11/14) Atividade 2  - Inicio: 01/11/14 - Previsão: 28/11/14 - Status: Não Iniciado  
    - (Antes de alterar em 30/11/14) Atividade 2  - Inicio: 01/11/14 - Previsão: 28/11/14 - Status: Vencido
    - (Após alterar em 30/11/14) Atividade 2  - Inicio: 01/11/14 - Previsão: 01/12/14 - Status: Não Iniciado
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 22:14

    Amigo desculpe mais uma vez,
    Não entendia que a data Inicio e Previsão eram junções, não supus que Previsão seria como "final" lhe entregando algo totalmente erronio.

    Antes de lhe aconselhar novamente gostaria de saber algumas coisas:
    Se você criar uma tarefa hoje 30/11/2014

    (registrado em 30/11/2014) A data inicio sera obrigatoriamente 30/11/2014?
    o campo previsao pode ser alterado diversas vezes?
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 22:28

    Antes de tudo agradeço pela ajuda e disposição. Você esta me ensinando muito!

    A data de inicio não será obrigatoriamente hoje (30/11/14) a pessoa poderá definir uma data de inicio para frente/para traz (Ex: 15/12/14, 01/11/14...), porém ao cadastrar a tarefa a pessoa não terá direito mais em definir a data de inicio ou não poderá mais alterar.

    O campo "Previsão" poderá ser alterado (postergado) mais 3 vezes após o cadastro, caso ultrapasse este limite o campo "Previsão" ficará inativo e impossibilitado para alteração.


    Desde já eu agradeço
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 22:59

    Então se a pessoa criar uma tarefa hoje 30/11/2014 com inicio em 30/11/2014 o status sera "Em andamento" e se criado com inicio em 01/12/2014 o status sera "Não iniciado"? já esta funcionando esta parte?
    e qual o nome do campo que controla a quantidade de vezes que podem ser alteradas as "previsoes"? é um campo de valor numérico? 3, 2, 1, 0?
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 23:11

    Quando é criado a tarefa, ela inicia com o status "Não iniciado", o usuário após a criação tem a opção de definir o status "Em andamento", "Concluído" ou manter "Não iniciado", esta parte esta funcionado muito bem!

    O campo que controla a quantidade eu denomino como "revisao", e este campo esta com o tipo de dados "Número".

    Ressalto que as expressões para controle das alterações já estão implantadas vide o tópico: [Resolvido]Limitar alterações em um registro

    Desde já eu agardeço
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 30/11/2014, 23:23

    Boas,
    Não sou experiente em access mas tento ajudar da melhor forma possível no que conheço, os amigos que certamente futurante podem sanar minhas duvidas.

    Consultas atualização sempre que chamadas iram percorrer todos os campos solicitados de uma tabela ou mais podendo deixar seu banco de dados lento na efetuação dependendo da quantidade de dados. por isto é bom chamá-las apenas em determinados momentos como na abertura do banco de dados ou em um formulário que mostre todos os dados referentes a consulta.

    A seguir lhe apresentarei a forma com que eu faria não sei se os mestres que estão a observar este post (se puderem opinar para nos ajudar agradeço) saberiam outras formas de minimizar o custo em espaço.


    ConsultaAtualizaparaNaoIniciado
    Campo:..............Status.................Inicio.............Previsao
    Atualizar para: ...Não Iniciado  
    Critério:............<> "Concluido"..... >Data() ....... >Data()

    ConsultaAtualizaparaEmAndamento
    Campo:..............Status.......................................Inicio........Previsao
    Atualizar para:....Em andamento    
    Critério:............"Não Iniciado" Ou "Vencido"...... < Data() .... > Data()

    ConsultaAtualizaparaVencido
    Campo:.............Status...............................................Inicio.............Previsao
    Atualizar para:...Vencido  
    Critério:.........."Não Iniciado" Ou "Em andamento".......... < Data() ..... < Data()

    Deste modo Creio eu que ira ser efetuada todas as suas possibilidades, não lhe aconselho criar uma consulta atualização para o status de concluído pois como disse pode ser alteados os registros mesmo após a previsao mas é aconselhável altera-los pois as consultas iram sempre buscar campos que não tenham como status "Concluido" minimizando lentidão no processo.
    Se ainda houver erro por favor retorne.
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 30/11/2014, 23:59

    Criei a consulta atualização conforme orientação, porém não surtiu efeito, segue os passos que realizei:

    1º criei as 3 atualizações conforme orientação;
    2º chamei as funções no formulário conforme os códigos abaixo:

    Private Sub Form_AfterUpdate()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "ConsultaAtualizaparaEmAndamento"
    DoCmd.OpenQuery "ConsultaAtualizaparaNaoIniciado"
    DoCmd.OpenQuery "ConsultaAtualizaparaVencido"
    DoCmd.SetWarnings True
    End Sub

    O que eu fiz de errado?
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 1/12/2014, 00:12

    Boa noite,

    tentou chamas individualmente, sem a utilização do vba? apenas clicando nelas?
    o que ocorre? não são atualizados os campos?
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 1/12/2014, 20:45

    clicando na consulta? eu gostaria de automatizar ao invés de ser manual.
    Não deu certo.

    Em anexo segue a consulta conforme orientação e o modelo de formulario.
    Anexos
    Alteração de status (VBA) AttachmentAlteração de status - orientação biligo.pdf
    Você não tem permissão para fazer download dos arquivos anexados.
    (227 Kb) Baixado 7 vez(es)
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 1/12/2014, 21:03

    Boas,

    Sei que o objetivo é automatizar, gostaria que testa-se apenas para ver se elas estão funcionando ou não.

    Para testar remova do vba as seguintes linhas:

    DoCmd.SetWarnings False

    DoCmd.SetWarnings True

    Pelo que mandou deveria estar funcionando normalmente, caso persista o erro tente utilizar o '<;>'Agora() ao invez de '<;>'Data()
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 1/12/2014, 21:24

    Removi VBA conforme orientado.

    Alterei  para '<;>'Agora()

    Quando abri o formulário todos as tarefas ficaram com os status "Vencido" (vide anexo)
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 1/12/2014, 21:28

    Amigo, estarei criando um bd exemplo.
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 1/12/2014, 22:24

    Realmente vi que havia alguns erros,
    estarei lhe enviando um exemplo básico e rápido que fiz, sem colocar em pratica tantas consultas realmente ficaria meio difícil.

    Exemplo BD

    Qualquer erro que ainda estiver havendo por favor retorne.
    Wellington PG
    Wellington PG
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 17/02/2013

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Wellington PG 1/12/2014, 23:41

    Boa Noite Biligo,

    Estamos quase la meu amigo, o exemplo enviado por você e ajustado a realidade pretendida deu certo.

    Porem, quando eu altero o status para concluído, ele retorna para o status "Em andamento".

    Tentei criar consulta de atualização concluído, ele atualiza todos os registros para concluído ao invés do registro selecionado.

    O que estou fazendo de errado?
    biligo
    biligo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 228
    Registrado : 10/04/2014

    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  biligo 2/12/2014, 00:35

    Boas,

    Aqui não me ocorre este erro, o que ocorre é de não mostrar na hora que é pressionado o botão do meu formulário, pois não adicionei um comando de atualização.
    no seu botão de atualizar adicione o vba: DoCmd.Requery ou DoCmd.RefreshRecord, mas não esta voltando para "Em andamento".
    E não sera possível criar uma consulta atualização para o status de concluído, pois você disse que é possivel mesmo após estar vencido pode-se voltar a não iniciado ou em andamento.
    A não ser que seja criada uma consulta utilizando o campo "revisao" criterio = 0 atualizar para concluido, mas sera necessário editá-lo 3 vezes segundo seus parâmetros para atualizá-lo automaticamente.

    Conteúdo patrocinado


    Alteração de status (VBA) Empty Re: Alteração de status (VBA)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/5/2024, 01:11