FUNCTION CHAMANDO OUTRA FUNCTION

LUIZPEREIRABA 09/09/2014 23:28:48
#441107

Pessoal preciso de um Help

Estou tentando chamar uma function dentro de outra function porém não esta funcionando.
Esta dando erro [Ô]28[Ô] Out of Stack Space. Alguem sabe o que pode ser.?

Public Function VerificaIdade() As Boolean


If IdadeCliente.Text < [Ô]18[Ô] And IdadeCliente.Text = [Ô][Ô] Then
NomeRespMenor.SetFocus

Exit Function

ElseIf NomeRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o Nome do Responsável pelo Menor ![Ô], vbExclamation, [Ô]Atenção[Ô]
NomeRespMenor.SetFocus
Exit Function

ElseIf CpfRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o CPF do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
CpfRespMenor.SetFocus
Exit Function

ElseIf RgRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o RG do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
RgRespMenor.SetFocus
Exit Function

ElseIf ProfissaoRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe a Profissão do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
ProfissaoRespMenor.SetFocus
Exit Function

ElseIf ParentescoRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o grau de parentesco do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
ParentescoRespMenor.SetFocus
Exit Function

ElseIf EnderecoRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o Endereço do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
EnderecoRespMenor.SetFocus
Exit Function

ElseIf CepRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o CEP do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
CepRespMenor.SetFocus
Exit Function

ElseIf BairroRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o Bairro que reside o Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
BairroRespMenor.SetFocus
Exit Function

ElseIf CidadeRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe a Cidade que reside o Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
CidadeRespMenor.SetFocus
Exit Function

ElseIf UfRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe a UF que reside o Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
UfRespMenor.SetFocus
Exit Function

ElseIf TelefoneRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o Telefone do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
TelefoneRespMenor.SetFocus
Exit Function


ElseIf CelularRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o Celular do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
CelularRespMenor.SetFocus
Exit Function


ElseIf EmailRespMenor.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o EMAIL do Responsável pelo menor![Ô], vbExclamation, [Ô]Atenção[Ô]
EmailRespMenor.SetFocus
Exit Function

End If

Call DadosClienteTudoOk
VerificaIdade = True
End Function


Public Function DadosClienteTudoOk() As Boolean

If cmbStatusCliente.Text = [Ô]SELECIONE[Ô] Then
MsgBox [Ô]Informe o Status vÁLIDO ![Ô], vbExclamation, [Ô]Atenção[Ô]
cmbStatusCliente.SetFocus
Exit Function

ElseIf CmbSexoCliente.Text = [Ô]SELECIONE[Ô] Then
MsgBox [Ô]Informe o Sexo do Cliente![Ô], vbExclamation, [Ô]Atenção[Ô]
CmbSexoCliente.SetFocus
Exit Function

ElseIf CpfCliente.Text = [Ô][Ô] Then
MsgBox [Ô]Informe o CPF do Cliente![Ô], vbExclamation, [Ô]Atenção[Ô]
CpfCliente.SetFocus
Exit Function

ElseIf IdadeCliente.Text <= [Ô]18[Ô] Then
VerificaIdade
Exit Function

End If
DadosClienteTudoOk = True

End Function
MARIOZNETO 12/09/2014 14:58:35
#441171
Em que parte do seu código está dando o erro ??
FILMAN 12/09/2014 20:10:03
#441180
O problema que eu encontrei foi no IF que valida a idade menor ou igual a 18 anos.
Você esta comparando uma string com expressão numérica mude para a sintaxe abaixo.

If Val(IdadeCliente.Text) <= 18 Then

Acho que isso já vai resolver o seu problema!
MARCELO.TREZE 13/09/2014 15:50:56
#441190
eu já vi um outro erro que é aqui:

If IdadeCliente.Text < [Ô]18[Ô] [txt-color=#e80000]And[/txt-color] IdadeCliente.Text = [Ô][Ô] Then


não é possivel a idade ser menor que 18 e igual nada ao mesmo tempo

outra coisa ta trabalhando com numero, então não use aspas

If CInt(IdadeCliente.Text) < 18 [txt-color=#0000f0]Or[/txt-color] IdadeCliente.Text = [Ô][Ô] Then




LUIZPEREIRABA 14/09/2014 21:09:19
#441202
obrigado!!!!
FILMAN 14/09/2014 23:15:55
#441204
Se a sua dúvida foi solucionada encerre o tópico!
FFCOUTO 15/09/2014 09:17:04
#441210
Resposta escolhida
Pessoal o erro 28 diz que a pilha foi sobrecarregada. Isso se deve ao fato de uma rotina chamar a outra em loop infinito.
Observando o código postado, de fato, o loop existe. Vejam o trecho:

Public Function VerificaIdade() As Boolean
[ô] comandos

Call DadosClienteTudoOk [txt-color=#e80000]<=== Aqui chama a rotina que diz está tudo OK.[/txt-color]
VerificaIdade = True
End Function


Agora veja o trecho
Public Function DadosClienteTudoOk() As Boolean
[ô]Comandos
ElseIf IdadeCliente.Text <= [Ô]18[Ô] Then [txt-color=#e80000]<== Aqui valida a idade[/txt-color]
VerificaIdade [txt-color=#e80000]<== Aqui executa a function verifica idade novamente[/txt-color]
Exit Function
End If

DadosClienteTudoOk = True
End Function


Para corrigir o problema é necessário revomer a linha Call DadosClienteTudoOk que está na rotina VerificaIdade.
A lógica a meu ver é chamar a function DadosClienteTudoOK pois dentro já é feita a verificação para o caso da idade ser menor que 18.

Private Sub Command1_Click()
If Not DadosClienteTudoOK Then
MsgBox [Ô]Há dados inconsistentes. Verifique novamente os dados informados.[Ô], VbExclamation
End If
End Sub



LUIZPEREIRABA 15/09/2014 10:51:44
#441216
obrigado!! funcionou!

removido a linha Call DadosClienteTudoOk na notina VerificaIdade
Tópico encerrado , respostas não são mais permitidas