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]Chamar função

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Chamar função

    Mensagem  Krauss 2/12/2012, 18:06

    Boa tarde!

    Alguém sabe me dizer como chamar uma função salva em um módulo.

    Ex: Criei a função 'ativarFuncionario' num módulo chamado 'modAtivarFuncionario' e gostaria que ao clicar no botão 'Ativar' no formulário, ele chamasse a função.

    Já tentei usando Call ativarFuncionario mas não funfou..

    Lembrando que a função foi criada em um módulo e não dentro do formulário..

    Abraços!!!


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 18:14

    Por que não funfou? Apareceu alguma mensagem de erro? A função possui algum parâmetro? Se tiver alguma variável ou algo assim entre os parênteses que vem depois do nome da função, significa que você deve fornecer algum parâmetro ao chamar a função. Exemplo:

    Public Function NomeFun(vNome As String)
    ...

    Call NomeFun(Me.txtNome)


    Ela está com o Public antes do nome Function conforme coloquei aqui?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 2/12/2012, 18:16

    Olá criquio...

    A função está assim:

    Function ativarFuncionario(cmdAtiva)
    ...
    ...
    ... (as condições)
    ...
    ...

    End Function


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 18:20

    Então, cmdAtiva é o parâmetro que deve ser colocado entre parêntese ao chamar a função.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 2/12/2012, 18:25

    Assim?


    Private Sub cmdAtiva_Click()
    Call ativarFuncionario(cmdAtiva)
    End Sub


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 18:28

    Não. cmdAtiva é o nome da variável. Você deve colocar o nome de um campo do formulário aonde está o dado que essa variável está representando ou algum texto ou número dependendo da função. Tambem precisa colocar o Public antes do nome da função para poder usá-la fora do local aonde ela foi criada. Observe o exemplo que eu coloquei no post anterior.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 2/12/2012, 18:36

    Rs vc pode ajustar conforme deve ser feito por favor.. não estou conseguindo..




    Public Function NomeFun(ativarFuncionario)

    If IsNull(Me.[nomeFuncionario]) = True Then
    MsgBox "Informe o nome do funcionário!", vbExclamation, " Sispac"
    Me.[nomeFuncionario].SetFocus
    ElseIf IsNull(Me.[sobrenomeFuncionario]) = True Then
    MsgBox "Informe o sobrenome do funcionário!", vbExclamation, " Sispac"
    Me.[sobrenomeFuncionario].SetFocus
    ElseIf IsNull(Me.[dataNascimento]) = True Then
    MsgBox "Informe a data de nascimento!", vbExclamation, " Sispac"
    Me.[dataNascimento].SetFocus
    ElseIf IsNull(Me.[sexo]) = True Then
    MsgBox "Selecione o sexo!", vbExclamation, " Sispac"
    Me.[sexo].SetFocus
    ElseIf IsNull(Me.[estadoCivil]) = True Then
    MsgBox "Selecione o estado civil!", vbExclamation, " Sispac"
    Me.[estadoCivil].SetFocus
    ElseIf IsNull(Me.[cidadeNatural]) = True Then
    MsgBox "Informe a cidade natural!", vbExclamation, " Sispac"
    Me.[cidade natural].SetFocus
    ElseIf IsNull(Me.[estadoNatural]) = True Then
    MsgBox "Selecione o estado natural!", vbExclamation, " Sispac"
    Me.[estadoNatural].SetFocus
    ElseIf IsNull(Me.[nomeMae]) = True Then
    MsgBox "Informe o nome da mãe!", vbExclamation, " Sispac"
    Me.[nomeMae].SetFocus
    ElseIf IsNull(Me.[nomePai]) = True Then
    MsgBox "Informe o nome do pai!", vbExclamation, " Sispac"
    Me.[nomePai].SetFocus
    ElseIf IsNull(Me.[telCelular]) = True Then
    MsgBox "Informe o número do celular!", vbExclamation, " Sispac"
    Me.[telCelular].SetFocus
    ElseIf IsNull(Me.[temFilhos]) = True Then
    MsgBox "Selecione se a pessoa possui filhos!", vbExclamation, " Sispac"
    Me.[temFilhos].SetFocus
    ElseIf IsNull(Me.[nroCEP]) = True Then
    MsgBox "Informe o CEP!", vbExclamation, " Sispac"
    Me.[nroCEP].SetFocus
    ElseIf IsNull(Me.[nroEndereco]) = True Then
    MsgBox "Informe o número residencial!", vbExclamation, " Sispac"
    Me.[nroEndereco].SetFocus
    ElseIf IsNull(Me.[nroCPF]) = True Then
    MsgBox "Informe os números do CPF!", vbExclamation, " Sispac"
    Me.[nroCPF].SetFocus
    ElseIf IsNull(Me.[nroRG]) = True Then
    MsgBox "Informe os números/letras do RG!", vbExclamation, " Sispac"
    Me.[nroRG].SetFocus
    ElseIf IsNull(Me.[orgaoEmissorRG]) = True Then
    MsgBox "Selecione o órgão emissor do RG!", vbExclamation, " Sispac"
    Me.[orgaoEmissorRG].SetFocus
    ElseIf IsNull(Me.[estadoEmissorRG]) = True Then
    MsgBox "Informe o estado emissor do RG!", vbExclamation, " Sispac"
    Me.[estadoEmissorRG].SetFocus
    ElseIf IsNull(Me.[dataExpedicaoRG]) = True Then
    MsgBox "Informe a data de expedição do RG!", vbExclamation, " Sispac"
    Me.[dataExpedicaoRG].SetFocus
    ElseIf IsNull(Me.[nroCTPS]) = True Then
    MsgBox "Informe o número da carteira de trabalho!", vbExclamation, " Sispac"
    Me.[nroCTPS].SetFocus
    ElseIf IsNull(Me.[serieCTPS]) = True Then
    MsgBox "Informe a série da carteira de trabalho!", vbExclamation, " Sispac"
    Me.[serieCTPS].SetFocus
    ElseIf IsNull(Me.[nroPIS]) = True Then
    MsgBox "Informe o número do PIS!", vbExclamation, " Sispac"
    Me.[nroPIS].SetFocus
    ElseIf IsNull(Me.[nroTituloEleitor]) = True Then
    MsgBox "Informe o número do título de eleitor!", vbExclamation, " Sispac"
    Me.[nroTituloEleitor].SetFocus
    ElseIf IsNull(Me.[zonaVotacao]) = True Then
    MsgBox "Informe a zona de votação!", vbExclamation, " Sispac"
    Me.[zonaVotacao].SetFocus
    ElseIf IsNull(Me.[secaoVotacao]) = True Then
    MsgBox "Informe a seção de votação!", vbExclamation, " Sispac"
    Me.[secaoVotacao].SetFocus
    ElseIf IsNull(Me.[estabelecimento]) = True Then
    MsgBox "Selecione o estabelecimento!", vbExclamation, " Sispac"
    Me.[estabelecimento].SetFocus
    ElseIf IsNull(Me.[cargo]) = True Then
    MsgBox "Selecione o cargo!", vbExclamation, " Sispac"
    Me.[cargo].SetFocus
    ElseIf IsNull(Me.[funcao]) = True Then
    MsgBox "Informe a função a ser exercida!", vbExclamation, " Sispac"
    Me.[funcao].SetFocus
    ElseIf IsNull(Me.[setor]) = True Then
    MsgBox "Informe o setor!", vbExclamation, " Sispac"
    Me.[setor].SetFocus
    ElseIf IsNull(Me.[salarioBase]) = True Then
    MsgBox "Informe o salário base!", vbExclamation, " Sispac"
    Me.[salarioBase].SetFocus
    ElseIf IsNull(Me.[dataAdmissao]) = True Then
    MsgBox "Informe a data de admissão!", vbExclamation, " Sispac"
    Me.[dataAdmissao].SetFocus

    Else
    Me.Refresh
    MsgBox "Cadastro ativado!", vbInformation, " Sispac"
    Me.statusFuncionario = "Ativo"
    End If


    End Function


    -----------------------------------------------------------------

    Esta é a função que criei em um módulo separado do form.. daí eu gostaria que ao clicar no botão 'Ativar' do form.. o access chamasse a função..


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 19:41

    Por que você criou uma função fora do formulário para isso? Uma função em módulo tem que ser uma função pública, a menos que seja função auxiliar de uma função pública. E em uma função dentro de um módulo não se passa nomes de controles de formulários ou relatório, pois quando se utiliza algo como Me.NomeDoCampo, o Me está dizendo "em mim". Assim sendo, se esse código estiver em um formulário, o Me.txtNome por exemplo está dizendo "o campo txtNome que está em mim". Em um módulo você não tem controles para serem referenciados. É nesse caso que utilizamos os parâmetros quando queremos criar uma função para ser usada com qualquer campo de qualquer formulário por exemplo. Seja a função cujo início seja algo assim:

    Public Function AlterarInicial(nForm As Form, nCampo As Control)

    Eu estou criando uma função para converter a inicial de nomes em maiúsculo por exemplo. Em cada formulário eu vou passar o nome desse formulário no lugar de nForm e vou passar o nome do controle no lugar de nCampo. Quando chamamos essa função em um evento de um controle, podemos fazer algo assim:

    AlterarInicial(Me.Name, ActiveControl.Name)

    No caso dessa sua função, ela pode ser passada direto no evento "Antes de atualizar" dos campos ou então você precisa mudar ela conforme exemplo que passei acima.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 2/12/2012, 19:58

    Entendi...

    criquio, há algum tempo postei sobre um código para validar tel fixo..

    hj estou atualizando meu BD e como todos sabem é obrigatório inclusão do dígito 9 em todos os tel com DDD 11.

    Gostaria de um código que validasse: caso o DDD seja 11 a pessoa deverá colocar o 9 antes do número de cel.. ex 11 97199-0000.


    Ou seja, quando a pessoa preencher o num do cel com DDD 11 e esquecer de colocar o dígito 9, o sistema emite uma mensagem de aviso. caso não seja DDD 11 o sistema aceita normalmente.


    Código para validar telefone fixo


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 20:15

    O sistema pode acrescentar o 9 automaticamente. Se o DDD é digitado em um campo separado, pode fazer assim no "Após atualizar" do campo do telefone:

    Código:
    Dim Numero As String
    Numero  = Me.CampoDoTelefone

    If Me.CampoDDD = 11 Then
        If Left(Numero, 1) <> "9" Then
            Me.CampoDoTelefone = "9" & Numero
        End If
    End If


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 2/12/2012, 20:20

    Perfeito!!!

    Mas tbm é possível se o DDD estiver no mesmo campo?


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  criquio 2/12/2012, 20:30

    Sim, é só trocar Me.CampoDDD por Left(Me.CampoDoTelefone, 2), que quer dizer os dois números da esquerda.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Krauss
    Krauss
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 254
    Registrado : 23/12/2011

    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Krauss 7/12/2012, 14:06

    ok

    Gracias!!!


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"

    Conteúdo patrocinado


    [Resolvido]Chamar função Empty Re: [Resolvido]Chamar função

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 21:47