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]Erro no transporte de valores entre formulários e na montagem de SQL

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL Empty [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL

    Mensagem  rgondim 11/11/2012, 19:51

    Tenho um problema é relacionado (pelo menos acho) a sobreposição de procedimentos.

    No formulário frmFFerias tenho um subform (frmFFerias_Sub), de parte um procedimento para abrir um segundo formulário.

    Código:
     
      DoCmd.OpenForm "frmEv_Selec", , , , , , Nz(Me.CodEvento1, 0)
      Forms!frmEv_Selec!TipoFolha = Parent!TipoFolha '(integer)
      Forms!frmEv_Selec!Contrato = Parent.Contrato '(integer)

    Ao carregar o formulário frmEv_Selec, os valores nos campos devem ser aplicados.
    No evento NoAtual deste formulário, executo, o seguinte código para montar o RecordSource do subform. frmEv_SSub:

    Código:
        'Contrato
        If Me.Contrato = 1 Or Me.Contrato = 3 Then
            strWhere1 = "CodEvento Not In (12)"
        ElseIf Me.Contrato = 2 Then 'Horista
            strWhere1 = "CodEvento Not In (10)"
        Else 'Comissionista
            strWhere1 = "CodEvento Not In (10,12)"
        End If
        'Tipo de Folha
        Select Case Me.TipoFolha
            Case 1 'Folha Mensal
                strWhere2 = "AND Mensal = True"
            Case 2 'Aviso de Férias
                strWhere2 = "AND Ferias = True"
            Case 3 '13º Salário
                strWhere2 = "AND DTerSal = True"
        End Select
       
        strSQL = "SELECT CodEvento,Evento,IIf([Tipo]=True,'C','D') AS CD FROM tblEventos " & _
                  "WHERE " & strWhere1 & strWhere1 & " ORDER BY CodEvento"
        Forms!frmEv_Selec!frmEv_SSub.Form.RecordSource = strSQL

    O procedimento está gerando erro na montagem do SQL porque, primeiro, o mesmo é executado antes que os valores sejam importados para os campos TipoFolha e Contrato e, segundo, impede essa mesma importação (os dois campos ficam vazios).

    Pensei em utilizar OpenArgs, mas são três valores e pelo que vi a propriedade transporta um valor único.


    Última edição por rgondim em 11/11/2012, 20:53, editado 1 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL Empty Re: [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL

    Mensagem  Cláudio Más 11/11/2012, 20:12

    Sim, mas esse valor único pode ser uma string concatenando vários dados separados por um delimitador (";" por exemplo).

    Depois, use a função Split() para separar as partes da string.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL Empty Re: [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL

    Mensagem  rgondim 11/11/2012, 20:50

    Claudio Mas,

    consegui assim:

    Ao abrir o formulário, a propriedade OpenArgs carrega três valores:
    DoCmd.OpenForm "frmEv_Selec", , , , , , intFolha & Parent.Contrato & Nz(Me.CodEvento1, 0)

    Então, usei Left e Mid para separar o valores:
    1º: Left(Me.OpenArgs, 1)
    2º: Mid(Me.OpenArgs, 2, 1)
    3º: Mid(Me.OpenArgs, 3, 4)

    Neste caso, foi mais simples isso que usar Split porque:
    intFolha e Parent.Contrato possuem, cada um, sempre um número apenas. Sendo que CodEvento1 é o único que possui número de caracteres variável.

    Caso o número de caracteres fosse variáveis para os três campos, então a melhor solução passaria pela sua dica.

    Obrigado pela ajuda.

    Conteúdo patrocinado


    [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL Empty Re: [Resolvido]Erro no transporte de valores entre formulários e na montagem de SQL

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 15:39