[resolvido] Referencia a Formulário

Moderador: Avelino Sampaio

Avatar do usuário
Moglynho
Mensagens: 31
Registrado em: 01 Mai 2016, 22:24

[resolvido] Referencia a Formulário

Mensagempor Moglynho » 07 Jul 2016, 19:37

Tenho um caso em que alguns campos são capturados de acordo com cada formulário visivel
Os formulários que mudam são: "Linha 01" e "Linha 02"
O formulário "Passageiros" será sempre o mesmo.

Tentei o seguinte:

Código:
Private Sub Quantidade_AfterUpdate()
On Error GoTo Sair
If Forms![Linha 01].Visible=True Then
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 01]![Texto2]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
Else
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 02]![Texto2]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
Sair:
End If
End Sub


Sendo assim, eu esperava que, se fosse formulário da linha 01 executaria o procedimento para a linha 01,
Se fosse o formulário da linha 02 executaria o procedimento para a linha 02.

Não deu certo. :x Onde está o erro???

Mais uma coisinha:
Olha o tamanho disso:

Código: Selecionar todos

DoCmd.OpenForm "Passageiros", acNormal, "", "[Tel1id]=[Forms]![Formulário1]![TextIndice1] Or [Tel2id]=[Forms]![Formulário1]![TextIndice1] Or [Tel3id]=[Forms]![Formulário1]![TextIndice1] Or [Tel4id]=[Forms]![Formulário1]![TextIndice1] Or [Tel5id]=[Forms]![Formulário1]![TextIndice1]", , acNormal


COmo faço para quebrar essas linhas sempre após o "Or"?

Obrigado. :shock:

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Moglynho
Mensagens: 31
Registrado em: 01 Mai 2016, 22:24

Re: Referencia a Formulário

Mensagempor Moglynho » 08 Jul 2016, 03:46

Acho que eu consegui depois de várias tentativas.

Fiz o seguinte:

Código:
Private Sub Quantidade_AfterUpdate()
On Error GoTo Linha2
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 01]![Texto2]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
Linha2:
Resume Next
On Error GoTo Sair
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 02]![Texto2]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
Sair:
End Sub


Assim, quando o formulário da linha 01 for o ativo será executado até a linha2, e quando for o formulário da linha 02 que estiver ativo executa a partir da linha2 e quando nenhum dos dois estiverem ativos, nada será feito.
Se alguém tiver uma sugestão melhor e que atenda a minha necessidade eu agradeço.

Só falta eu conseguir as quebras de linhas de modo correto que ainda não consegui direito.
Obrigado. :)

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Referencia a Formulário

Mensagempor Avelino Sampaio » 08 Jul 2016, 08:09

Moglinho,

existe um comando no Access para verificar se o formulário está aberto. A dúvida é se os campos Nome e Unidade devem ser preenchidos, independente dos formulários estarem ou não abertos. Considerando que devam ser preechidos, segue a dica:

Código:
Private Sub Quantidade_AfterUpdate()
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
If currentproject.AllForms("Linha 1").IsLoaded Then
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 01]![Texto2]
Elseif currentproject.AllForms("Linha 2").IsLoaded then
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 02]![Texto2]
end if
End Sub


Quanto a quebra de linhas, pode usar uma variável:

Código:
Dim strFiltro as string
strFiltro ="[Tel1id]=[Forms]![Formulário1]![TextIndice1]"
strFiltro = strFiltro & " Or [Tel2id]=[Forms]![Formulário1]![TextIndice1]"
strFiltro = strFiltro & " Or [Tel3id]=[Forms]![Formulário1]![TextIndice1]"
strFiltro = strFiltro & " Or [Tel4id]=[Forms]![Formulário1]![TextIndice1]"
strFiltro = strFiltro & " Or [Tel5id]=[Forms]![Formulário1]![TextIndice1]"
DoCmd.OpenForm "Passageiros", acNormal, "", strFiltro, , acNormal


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Moglynho
Mensagens: 31
Registrado em: 01 Mai 2016, 22:24

Re: Referencia a Formulário

Mensagempor Moglynho » 08 Jul 2016, 21:48

Ficou beeeeem mais profissional agora.
Antes eu estava me aproveitando dos erros nas ações para executar a linha pretendida. Dessa forma a coisa ficou mais correta.
Fiz alguns adendos conforme a lógica percebida porque em alguns casos o formulário "passageiros" deve aparecer sozinho em cada ocasião o fomulário linha 01 ou linha 02 podem estar ativos (Conforme segue explicação no vídeo) o código ficou assim:

Código:
Private Sub Quantidade_AfterUpdate()
If CurrentProject.AllForms("Linha 01").IsLoaded Then
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 01]![Texto2]
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
ElseIf CurrentProject.AllForms("Linha 02").IsLoaded Then
If IsNull(Me.Telefone) Then Me.Telefone = Forms![Linha 02]![Texto2]
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
ElseIf CurrentProject.AllForms("Passageiros").IsLoaded Then
If IsNull(Me.Nome) Then Me.Nome = Forms![Passageiros]![Nome]
If IsNull(Me.Unidade) Then Me.Unidade = Forms![Passageiros]![PontoEmbarque]
End If
End Sub


Funcionou direitinho e as quebras de linha também.
Muito agradecido. :D

Segue o vídeo:

Obs: Corrigido o Áudio do video. :D

https://www.youtube.com/watch?v=d3YP292HpiI&feature=youtu.be

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Formulários”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 2 visitantes