Ir para conteúdo
Fórum Script Brasil
  • 0

Alteração no Campo do Formulário não Funciona Direito...


Jeferson Porto

Pergunta

Fala Galera,

Estou com um problema, acho que não deve ser difícil para vocês me ajudarem. Seguinte: Eu tenho uma consulta que desejo rodar num intervalo de datas. Preparei a consulta Acréscimo, criei um formulário para pessoa escolher um intervalo e depois criei o script para rodar a consulta no loop do intervalo.Ex.: Se a pessoa quiser o intervalo de 25 a 27, o script tem que jogar o dia 25 no campo da data, rodar a consulta, somar 1 ao campo data para alterar para 26 rodar a consulta novamente e assim por diante...

Só que o campo do formulário somente é alterado quando o formulário é fechado. Portanto se no campo estiver o dia 24 e a pessoa digitar o intervalo de 25 a 27, ele irá rodar o dia 24 3Vezes e depois que fechar o formulário ele irá salvar o dia 27 no campo.

Antes de rodar com a consulta, eu botei uma MSGBOX para ver se os campos estavam sendo alterados. A mensagem mostra os campos sendo alterados. Eu tentei fechar o formulário antes da linha da consulta e depois abri-lo novamente mas da erro. Será que alguém pode me ajudar com esse probleminha. Segue script utilizado, desde já agradeço a colaboração. Obrigado.

Private Sub GO_Click()

Dim a, b As String

a = [in]

b = [Fn]

Do Until a > b

[seletor Dia:] = [in]

DoCmd.OpenQuery "OS_Consulta Controle Retorno_Socorro do Dia", acViewNormal

[in] = [in] + 1

a = a + 1

Loop

DoCmd.OpenReport "REINCIDÊNCIAS", acViewPreview

DoCmd.Maximize

End Sub

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Fera é mas fácil você fazer os critérios direto na consulta, supondo que seu formulario tenha o nome de form1 e seus campos de periodo sejam data1 e data2 respectivamente sua instrução para que a consulta traga somente os dados do perio seria esse:

select * from suaTabela where suaData between data1 and data2;

Essa consulta traria somente os dados do periodo a partir dela você pode criar outras consultas que levem a resolução do seu problema, observe que suaTabela deve ser substituido pelo da tabela que você tem na sua aplicação e suaData seria o campo da tabela que guarda a data.

Acho que isso ai adaptado a sua realidade deve resolver, aguardo seu retorno para colocar resolvido no tópico.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá MrMALJ

A consulta que eu faço é para verificar o histórico de defeitos do carro. Ex.: No dia 25 o carro entrou com o defeito de VAZAMENTO DE ÓLEO. Numa consulta eu pego os defeitos do dia (25), em outra eu pego a última vez, antes da data do dia (<25), que este mesmo defeito foi apresentado. Se eu for usar uma data apenas não precisarei do 'Do Until', bastaria usar o script sem o loop. No caso eu estou precisando tirar o relatório de um interválo, se eu colocar direto na consulta a parte em que o relatório pega o último defeito antes da data vai ficar zebrado, por isso eu preciso rodar uma data por vez.

Ex.: CONSULTA SIMPLES

CARRO DATA DEFEITO ULT_DEFEITO

559 25/1 VAZ OLEO 19/01

Ex.: CONSULTA PERIODO

CARRO DATA DEFEITO ULT_DEFEITO

559 25/1 VAZ OLEO 25/01

559 27/1 VAZ OLEO 25/01

Na consulta que eu pego o ULT_DEFEITO eu uso a maior data antes da ocorrência, no exemplo acima mostra o que acontece se eu usar o intervalo direto na consulta, ele irá ignorar a ocorrência do dia 19/01 que é anterior ao dia 25 pois a maior data antes do dia 27 seria o própio dia 25. Por isso eu precisava rodar cada dia por vez, num intervalo de 25 a 27 eu gostaria de rodar o dia 25 e depois acrescentar na tabela o dia 26 e depois o dia 27.

Espero que eu não tenho complicado mais do que explicado. De qualquer forma aguardo reposta do amigo ou de qualquer outra pessoa que puder ajudar. Um abraço, Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu entendi, mas creio que não tenha entendido o que quiz dizer, nesse caso creio que seria interessante você postar seu bd que assim que puder eu faço as alterações que tenho em mente e devolvo.

Link para o comentário
Compartilhar em outros sites

  • 0

Meio confuso o seu problema, mas pelo que vi você precisa dos últimos registros do veículo?

Tenta

SELECT TOP 2 * FROM Tabela ORDER BY Tabela.Data DESC;

com isso você ordena a tabela por data decrescente e busca os 2 primeiros registros, que seriam o mais recente e o anterior a ele, se quiser mais registros muda de TOP2 pra TOP 5 por exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0

acho que você tem que dar um comando repaint ou requery ou refresh pra atualizar o form depois que você altera as propriedades do mesmo.

ou seja, após feitas as alterações via codigo vba, acrescente:

me.refresh

que é pra ter o mesmo efeito de você fechar e abrir o form.

se você quer apenas atualizar as propriedades de um objeto, então use

me.objeto.refresh

Link para o comentário
Compartilhar em outros sites

  • 0

coloca DoEvents que é mais rápido, com repaint da umas piscadas. Uma vez fiz uma splash screen no access que era chamada pelo form principal, daí era algo assim

DoCmd.OpenForm "splash"
DoEvents
DoCmd.Close acForm, "splash"

e no evento de Close do splash ele carregava algumas coisas e aumentava o valor da barra de progresso. Sem o DoEvents a splash ficava parada e sumia, eu não via a barra carregar

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...