FUNCTION CHAMANDO OUTRA FUNCTION
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
Em que parte do seu código está dando o erro ??
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!
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!
eu já vi um outro erro que é aqui:
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 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
obrigado!!!!
Se a sua dúvida foi solucionada encerre o tópico!
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:
Agora veja o trecho
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.
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
obrigado!! funcionou!
removido a linha Call DadosClienteTudoOk na notina VerificaIdade
removido a linha Call DadosClienteTudoOk na notina VerificaIdade
Tópico encerrado , respostas não são mais permitidas