Array
(
)

Duas funções um Botão

Teclesoft
   - 13 ago 2007

Bom dia Pessoal, eu tenho um sério problema e não sei como resolver.
Eu fiz uma classe com duas funções que são chamadas via botão de comando.
Só que eu fiz cada botão chamar uma função para testar se tudo estivesse OK.. cada função funciona perfeitamente com o seu botão.. Mas o que eu preciso agora era que as duas fossem executadas da mesma forma que são hoje em seus botões só que juntas num único botão.
Como fazer isso? Me falaram em fazer métodos..
metodo1()
metodo2()..
Mas nem sei como começar.. Como colocar os códigos dentro disso tudo..
Será que alguém pode me ajudar a montar esse código?
Segue abaixo minha classse/funções e o código de cada botão que chama as funções.

#Código
Public Class CalcPlanilha

´-----Primeira função de validar Data de Nascimento
Public Function VerificarNascimentos(Optional ByVal Linha As Integer = 3, _
Optional ByVal Coluna As Integer = 6, _
Optional ByVal ApagarErros As Boolean = False) As Boolean

Dim ok As Boolean = True
Dim tempData As DateTime
Dim tempStr As String = ""
Dim ii As Integer

If ApagarErros Then Erros.Clear()

For ii = Linha To Planilha.Lines - 1
Try
tempStr = Planilha.Cell(ii, Coluna) & ""
If tempStr.Length = 8 Then
tempStr = tempStr.Substring(0, 2) & "/" & tempStr.Substring(2, 2) & "/" & tempStr.Substring(4, 4)
End If
tempData = Date.Parse(tempStr)
Catch
ok = False
tempStr = "Dt.Nasc. L" & ii & ": " & tempStr
Erros.Add(tempStr)
End Try
Next
Return (ok)
End Function

´---------------------Segunda função de validar CPF

Public Function DeusDeAmor(Optional ByVal Linha As Integer = 3, _
Optional ByVal Coluna As Integer = 4, _
Optional ByVal ApagarErros As Boolean = False) As Boolean
Dim okk As Boolean = True
Dim tempStrr As String = ""
Dim iii As Integer
Dim i, a, n1, n2 As Integer

If ApagarErros Then Erros.Clear()
For iii = Linha To Planilha.Lines - 1
Try
tempStrr = Planilha.Cell(iii, Coluna) & ""

If tempStrr = "" OrElse _
tempStrr.Trim.Length <> 11 OrElse _
tempStrr = "11111111111" OrElse _
tempStrr = "22222222222" OrElse _
tempStrr = "33333333333" OrElse _
tempStrr = "44444444444" OrElse _
tempStrr = "55555555555" OrElse _
tempStrr = "66666666666" OrElse _
tempStrr = "77777777777" OrElse _
tempStrr = "88888888888" OrElse _
tempStrr = "99999999999" Then
Throw New Exception("CPF Inválido")
End If

If tempStrr.Length = 11 Then
tempStrr = tempStrr.Replace(".", "").Replace(",", "").Replace("/", "").Replace("-", "")
tempStrr = tempStrr.Trim

For a = 0 To 1
n1 = 0

For i = 1 To 9 + a
n1 = n1 + Val(Mid(tempStrr, i, 1)) * (11 + a - i)
Next

n2 = 11 - (n1 - (Int(n1 / 11) * 11))
If n2 = 10 Or n2 = 11 Then n2 = 0

If n2 <> Val(Mid(tempStrr, 10 + a, 1)) Then
Throw New Exception("CPF Inválido")
End If
Next
End If
Catch ex As Exception
okk = False
tempStrr = "Dt.CNPJ. L" & iii & ": " & tempStrr
Erros.Add(tempStrr)
End Try
Next
Return (okk)
End Function
End Class


Agora o código que está em cada botão que chama as funções.

Código que chama a função que valida as data de nascimento.

#CódigoPrivate Sub btVerificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btVerificar.Click
Dim ss As String
Dim CalcP As BL_Excel.CalcPlanilha = Nothing

Try
Try
´... no seu código ASP, aqui você informa o local da planilha
ss = Me.OpenXLSDialog.FileName
CalcP = New BL_Excel.CalcPlanilha(ss)

Catch ex As Exception
´... deve ser outro tratamento de erro no ASP
MsgBox("Houve um erro no acesso aos dados... Error Msg: " & ex.Message, MsgBoxStyle.Information, "Atenção...")
Exit Sub
End Try

Me.VerificarTextBox.Text = String.Empty
If CalcP.VerificarNascimentos() Then
Me.VerificarTextBox.Text = "Leitura da coluna Nascimento... tudo 100¬"
Else
ss = "Leitura da Coluna Nascimento com erros..."
For x As Integer = 0 To CalcP.Erros.Count - 1
ss &= Environment.NewLine & CalcP.Erros(x)
Next
Me.VerificarTextBox.Text = ss
MsgBox("Houve um erro, verifique as mensagens.")
End If

Finally ´... garante limpesa de memória
If CalcP IsNot Nothing Then
CalcP.Finalize()
End If
End Try
End Sub


Agora o código que está no botão que valida CPF.

#CódigoPrivate Sub VerificarCPF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VerificarCPF.Click
Dim CalcPP As BL_Excel.CalcPlanilha = Nothing
Dim sss As String
Try
Try
sss = Me.OpenXLSDialog.FileName
CalcPP = New BL_Excel.CalcPlanilha(sss)

Catch ex As Exception
´... deve ser outro tratamento de erro no ASP
MsgBox("Houve um erro no acesso aos dados... Error Msg: " & ex.Message, MsgBoxStyle.Information, "Atenção...")
Exit Sub
End Try

Me.VerificarTextBox.Text = String.Empty
If CalcPP.DeusDeAmor() Then
Me.VerificarTextBox1.Text = "Leitura da coluna CPF... tudo 100¬"
Else
sss = "Leitura da Coluna CPF com erros..."
For x As Integer = 0 To CalcPP.Erros.Count - 1
sss &= Environment.NewLine & CalcPP.Erros(x)
Next
Me.VerificarTextBox1.Text = sss
MsgBox("Houve um erro, verifique as mensagens.")
End If
Finally ´... garante limpesa de memória
If CalcPP IsNot Nothing Then
CalcPP.Finalize()
End If
End Try
End Sub


Como deixar isso apenas em um botão.. e ainda mostrar as mensagens de erro ou de acerto para o usuário.. Pois isso é de suma importância.. Pois esse projeto depois irá para a WEB e quando o usuário for fazer o UPLOAD do arquivo do excel será mostrada as mensagens para ele com êxito ou falha e deve ser mostrado o que está de errado com o arquivo para que o usuário possa arrumar e tentar novamente fazer o UPLOAD do arquivo.
Grata

Letícia.

Teclesoft
   - 13 ago 2007

Resolvi pessoal.. Ficou assim..

#Código Private Sub ChamaDuas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChamaDuas.Click
Dim Class_CalcP As BL_Excel.CalcPlanilha = Nothing
Dim Recebe_Arq As String
Dim Recebe_Err As String
Try

Try
Recebe_Arq = Me.OpenXLSDialog.FileName
Class_CalcP = New BL_Excel.CalcPlanilha(Recebe_Arq)
Catch ex As Exception
MsgBox("Erro no acesso aos dados, verifique o seu arquivo XLS e tente novamente")
Exit Sub
End Try
Me.VerificarTextBox.Text = String.Empty
If Class_CalcP.DeusDeAmor() Or Class_CalcP.VerificarNascimentos() Then
Me.VerificarTextBox.Text = "Coluna CPF e coluna Data estão corretas"
Else
Recebe_Err = "Leitura das colunas com erros"
For x As Integer = 0 To Class_CalcP.Erros.Count - 1
Recebe_Err &= Environment.NewLine & Class_CalcP.Erros(x)
Next
Me.VerificarTextBox.Text = Recebe_Err
MsgBox("Houveram erros na verificação das informações do arquivo")
End If
Finally

If Class_CalcP IsNot Nothing Then
Class_CalcP.Finalize()
End If
End Try
End Sub