É Possível contar os argumentos de uma função? Exemplo ao passar os parâmetros para um função, gostaria de uma maneira de testar esses parâmetros em um laço condicional, mas para isso preciso de uma função que conte e identifique cada parâmetro que a função recebeu e percorrer-los, para não ficar com vários IFs, e seria mais dinâmico. Alguém tem uma sugestão?
2 participantes
[Resolvido]Contar argumentos numa função
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº1
[Resolvido]Contar argumentos numa função
Alvaro Teixeira- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7996
Registrado : 15/03/2013
- Mensagem nº2
Re: [Resolvido]Contar argumentos numa função
Olá,
Talvez passar os parâmetros apenas num único (parâmetro) com um indicador de separação tipo |
Depois usar o split do separador para uma array talvez se consiga obter o pretendido.
O que parece?
Abraço
Talvez passar os parâmetros apenas num único (parâmetro) com um indicador de separação tipo |
Depois usar o split do separador para uma array talvez se consiga obter o pretendido.
O que parece?
Abraço
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº3
Re: [Resolvido]Contar argumentos numa função
Eu já utilizei uma Array, funcionou, testei um Msgbox (Arg(0), 1, 2, 3 [...]) e retorna o valor da Array, que é justamente o valor da variável. Porém eu gostaria também que no laço, fosse exibido o nome do campo que está nulo ou vazio exemplo:
For i = 0 To 7 ( PS: 7 Argumentos, por exemplo )
If IsNull(Arg(i)) Or IsEmpty(Arg(i)) Then
Msgbox ("O Campo " & NOME DO ARGUMENTO & " é nulo ou vazio, por favor, preencha-o.")
End If
Next
Endenteu? E Gostaria de uma outra estrutura condicional para que após o término do laço para que quando não exisitir mas nenhum campo vazio ou nulo, ele insere as informações, através de um INSERT.
Meu código está atualmente assim:
Public Sub MovPessoa(PessID, DocID, Vencimento, Parcela, Tipo, Descricao, Modalidade, Valor, Estado)
If IsNull(PessID) Or IsNull(Vencimento) Or IsNull(Parcela) Or IsNull(Tipo) Or IsNull(Descricao) Or IsNull(Modalidade) Or IsNull(Valor) Or IsNull(Estado) Then
MsgBox ("Preencha os campos")
Else
MsgBox ("Sucesso")
End If
End Sub
Porém, ele não detecta quando todos os campos estiverem completos para inserir, e nem mostra o campo que está vazio, caso eu fizesse tudo isso no If, ficaria muito grande, então procuro fazer isto da maneira que citei acima.
For i = 0 To 7 ( PS: 7 Argumentos, por exemplo )
If IsNull(Arg(i)) Or IsEmpty(Arg(i)) Then
Msgbox ("O Campo " & NOME DO ARGUMENTO & " é nulo ou vazio, por favor, preencha-o.")
End If
Next
Endenteu? E Gostaria de uma outra estrutura condicional para que após o término do laço para que quando não exisitir mas nenhum campo vazio ou nulo, ele insere as informações, através de um INSERT.
Meu código está atualmente assim:
Public Sub MovPessoa(PessID, DocID, Vencimento, Parcela, Tipo, Descricao, Modalidade, Valor, Estado)
If IsNull(PessID) Or IsNull(Vencimento) Or IsNull(Parcela) Or IsNull(Tipo) Or IsNull(Descricao) Or IsNull(Modalidade) Or IsNull(Valor) Or IsNull(Estado) Then
MsgBox ("Preencha os campos")
Else
MsgBox ("Sucesso")
End If
End Sub
Porém, ele não detecta quando todos os campos estiverem completos para inserir, e nem mostra o campo que está vazio, caso eu fizesse tudo isso no If, ficaria muito grande, então procuro fazer isto da maneira que citei acima.
Alvaro Teixeira- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7996
Registrado : 15/03/2013
- Mensagem nº4
Re: [Resolvido]Contar argumentos numa função
Olá Iuri,
Para o que pretende, talvez seja melhor de outra forma, veja:
https://www.maximoaccess.com/t102-resolvidovalidar-campos-com-preench-obrigatorio-pela-tag
Abraço
Para o que pretende, talvez seja melhor de outra forma, veja:
https://www.maximoaccess.com/t102-resolvidovalidar-campos-com-preench-obrigatorio-pela-tag
Abraço
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº5
Re: [Resolvido]Contar argumentos numa função
Olá, Grato pelos esforços.
Resolveria, mas se a função fosse direta no form. Acontece é que eu tenho vários "forms" que só fazem a chamada da função contida num módulo, tipo rotina. O Que eu queria basicamente era que os argumentos fossem testados dentro da função, verificando se cada argumento não é nulo, dentro dela, e retornar uma mensagem caso esteja nulo, caso contrário ela insere. Exemplo:
Na Biblioteca de Rotina/Módulo
Private Sub InsereComissao(PessoaID, Vencimento, Comissao) Then
Testar se os três parametros estão preenchidos.
Caso não estejam: Msgbox ("Preencha o campo/parametro " & Parametro)
Caso esteja: Insere as informações através de um Insert e envia mensagem: Msgbox("Comissao gerada com sucesso!")
End Sub
Resolveria, mas se a função fosse direta no form. Acontece é que eu tenho vários "forms" que só fazem a chamada da função contida num módulo, tipo rotina. O Que eu queria basicamente era que os argumentos fossem testados dentro da função, verificando se cada argumento não é nulo, dentro dela, e retornar uma mensagem caso esteja nulo, caso contrário ela insere. Exemplo:
Na Biblioteca de Rotina/Módulo
Private Sub InsereComissao(PessoaID, Vencimento, Comissao) Then
Testar se os três parametros estão preenchidos.
Caso não estejam: Msgbox ("Preencha o campo/parametro " & Parametro)
Caso esteja: Insere as informações através de um Insert e envia mensagem: Msgbox("Comissao gerada com sucesso!")
End Sub
Alvaro Teixeira- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7996
Registrado : 15/03/2013
- Mensagem nº6
Re: [Resolvido]Contar argumentos numa função
Olá Iuri,
Compreendo, mas mesmo sendo num Modulo a chamada é efetuada do form que está em uso.
Ora, poderia validar os campos antes da chamada.
Talvez seja melhor montar um pequeno exemplo do que pretende para se testar.
Abraço
Compreendo, mas mesmo sendo num Modulo a chamada é efetuada do form que está em uso.
Ora, poderia validar os campos antes da chamada.
Talvez seja melhor montar um pequeno exemplo do que pretende para se testar.
Abraço
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº7
Re: [Resolvido]Contar argumentos numa função
Muito Obrigado!
Terei de fazer a verificação do campo antes da chamada mesmo. Estava pensando em fazer direto na função para economizar linha nos forms, mas é impossível percorrer argumento por argumento, da forma que se pode percorrer controle por controle do form. Acho melhor deixar do jeito tradicional como você disse mesmo rsrs
Obrigado!
Terei de fazer a verificação do campo antes da chamada mesmo. Estava pensando em fazer direto na função para economizar linha nos forms, mas é impossível percorrer argumento por argumento, da forma que se pode percorrer controle por controle do form. Acho melhor deixar do jeito tradicional como você disse mesmo rsrs
Obrigado!
Alvaro Teixeira- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7996
Registrado : 15/03/2013
- Mensagem nº8
Re: [Resolvido]Contar argumentos numa função
Olá Iuri,
Sim, acho que vai ficar bem com a dica da mensagem nº 4.
Se ficou esclarecido, não se esqueça de dar o tópico como Resolvido, veja como fazer:
https://www.maximoaccess.com/t860-resolucao-de-topicos
Abraço
Sim, acho que vai ficar bem com a dica da mensagem nº 4.
Se ficou esclarecido, não se esqueça de dar o tópico como Resolvido, veja como fazer:
https://www.maximoaccess.com/t860-resolucao-de-topicos
Abraço
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº9
Re: [Resolvido]Contar argumentos numa função
Esqueci de marcar como Resolvido rs
Alvaro Teixeira- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7996
Registrado : 15/03/2013
- Mensagem nº10