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

    [Resolvido]Calendario Único

    avatar
    zcarloslopes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 393
    Registrado : 28/10/2010

     [Resolvido]Calendario Único Empty [Resolvido]Calendario Único

    Mensagem  zcarloslopes 21/7/2018, 14:57

    Boa tarde a todos,

    Depois de muitas tentativas em vão, venho aqui pedir vossa ajuda.

    Sempre que existe um campo "data" numa DB, tráz sempre associado o problema dos erros de introdução.
    Para evitar esse transtorno costumo usar um formulário calendário para introdução de datas.

    Funciona da seguinte forma:

    Nome do form calendário: frm_CalendarioUniversal
    Nome do campo data: dataescolhida

    Para qualquer form onde quero inserir uma data chamo o form calendário com o seguinte código:

    If Me.Dirty Then Me.Dirty = False

    DoCmd.OpenForm "frm_CalendarioUniversal", OpenArgs:="frm_Teste|" & "DataTeste" --> Nome do Form e nome do campo para inserir data


    Ao validar a data no cmd click do form calendário uso o seguinte procedimento:

       Dim intPos As Integer
       Dim NomeForm As String
       Dim NomeTexto As String
       
       If Len(Me.OpenArgs) > 0 Then
         
               intPos = InStr(Me.OpenArgs, "|")

               If intPos > 0 Then

               
               NomeForm = Left$(Me.OpenArgs, intPos - 1)

             
               NomeTexto = Mid$(Me.OpenArgs, intPos + 1)

            End If
       End If
         

       Forms(NomeForm).Controls(NomeTexto) = Forms![frm_CalendarioUniversal]![dataescolhida]


    Este procedimento sempre funcionou bem durante muito tempo.

    Atualmente preciso fazer o mesmo procedimento, mas desta vez para o subFormTeste.

    Pelo facto de ser um SubForm não estou tendo sucesso.

    Alguém pode me ajudar?

    Obrigado a todos


    Última edição por zcarloslopes em 23/7/2018, 12:53, editado 1 vez(es)
    avatar
    delsonk
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 26/11/2013

     [Resolvido]Calendario Único Empty Re: [Resolvido]Calendario Único

    Mensagem  delsonk 23/7/2018, 12:47

    Bom dia.

    Para referenciar objeto ou controle em um Subform.

    Exemplo

    Os próximos dois exemplos mostram como você poderia se referir a um controle chamado NewData em um subformulário ctlSubForm contido no formulário chamado OrderForm:

    Forms!OrderForm.ctlSubForm.Form!Controls.NewData

    Forms!OrderForm.ctlSubForm!NewData

    Extraído do site da Microsoft.

    Att, Delson
    avatar
    zcarloslopes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 393
    Registrado : 28/10/2010

     [Resolvido]Calendario Único Empty Re: [Resolvido]Calendario Único

    Mensagem  zcarloslopes 23/7/2018, 19:34

    Obrigado Delson,

    O problema é passar os parâmetros do subformulário para o formulário e vice-versa.

    Eu resolvi o problema e deixo aqui a solução para quem precisar:

    Chamo o formulário frm_CalendarioUniversal e passo os parâmetros por OpenArgs:

    If Me.Dirty Then Me.Dirty = False

    DoCmd.OpenForm "frm_CalendarioUniversal", OpenArgs:="frm_teste|" & "frm_teste_Subform|" & "DataTeste"   ---> 'NomeDoForm, SubForm e NomeDoCampo



    No cmd click do formulário frm_CalendarioUniversal passo a data para o subform com o seguinte código:

         
       Dim intPos As Integer
       Dim NomeForm As String
       Dim NomeSubForm As String
       Dim NomeTexto As String
       
           
       If Len(Me.OpenArgs) > 0 Then
           ' Position of the pipe
               intPos = InStr(Me.OpenArgs, "|")

               If intPos > 0 Then

               'Retrieve MainForm Name from the string
               NomeForm = Left$(Me.OpenArgs, intPos - 1)
                                             
               'Retrieve SubForm Name from the string
               NomeSubForm = Left$(Mid$(Me.OpenArgs, intPos + 1), intPos - 0)
               
               'Retrieve Control Name from the string
               NomeTexto = Mid$(Mid$(Me.OpenArgs, intPos + 1), intPos + 2)
               

           End If
       End If
       
       Forms(NomeForm)(NomeSubForm).Form(NomeTexto) = Forms![frm_CalendarioUniversal]![dataescolhida]
             
       'fecha o form
       DoCmd.Close acForm, "frm_CalendarioUniversalSub"

    Obrigado

    Conteúdo patrocinado


     [Resolvido]Calendario Único Empty Re: [Resolvido]Calendario Único

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 08:52