|
Postada em 13/10/2005 08:42 hs
pessoal, tenho a seguinte função q achei na net: Private Function TituloOK(s As String) As Boolean Dim DV1 As Integer Dim DV2 As Integer Dim i As Integer Dim Total As Integer Dim Resto As Integer Dim Resto2 As Integer Dim Numero As String Numero = "" For i = Len(s) To 12 Numero = Numero + "0" Next Numero = Numero + s TituloOK = False [txt-color=#ff0000]DV1 = ((CInt(Mid(Numero, 1, 1)) * 2) + [/txt-color]_ (CInt(Mid(Numero, 2, 1)) * 9) + _ (CInt(Mid(Numero, 3, 1)) * 8) + _ (CInt(Mid(Numero, 4, 1)) * 7) + _ (CInt(Mid(Numero, 5, 1)) * 6) + _ (CInt(Mid(Numero, 6, 1)) * 5) + _ (CInt(Mid(Numero, 7, 1)) * 4) + _ (CInt(Mid(Numero, 8, 1)) * 3) + _ (CInt(Mid(Numero, 9, 1)) * 2)) Resto = DV1 Mod 11 If Resto = 1 Then DV1 = 0 Else If Resto = 0 Then If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then DV1 = 1 Else DV1 = 0 End If Else DV1 = 11 - Resto End If End If DV2 = ((CInt(Mid(Numero, 10, 1)) * 4) + (CInt(Mid(Numero, 11, 1)) * 3) + (DV1 * 2)) Resto2 = DV2 Mod 11 If Resto2 = 1 Then DV2 = 0 Else If Resto2 = 0 Then If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then DV2 = 1 Else DV2 = 0 End If Else DV2 = 11 - Resto2 End If End If If Mid(Numero, 12, 2) = (CStr(DV1) + CStr(DV2)) Then TituloOK = True End If End Function porém, não funciona. Esta dando erro na linha em q está em vermlho. Não sei se é da frma que estou chamando:
call tituloOK(campo titulo_eleitor). alguém pode me ajudar?
Rafael Carlos Martin Desenvolvedor de WebSites e Sitemas E-mail:rafa-martin@ibest.com.br
|
|
|
|
rdeletric
|
SÃO JOSÉ DO RIO PRETO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/10/2005 09:54 hs
Faça assim: No form crie um textbox como text1 ( lembrando que o numero nao deve ter barras) Função: Private Function TituloOK(s As String) As Boolean Dim DV1 As Integer Dim DV2 As Integer Dim i As Integer Dim Total As Integer Dim Resto As Integer Dim Resto2 As Integer Dim Numero As String Numero = Text1 For i = Len(s) To 12 Numero = Numero + "0" Next Numero = Numero + s TituloOK = False DV1 = ((CInt(Mid(Numero, 1, 1)) * 2) + _ (CInt(Mid(Numero, 2, 1)) * 9) + _ (CInt(Mid(Numero, 3, 1)) * 8) + _ (CInt(Mid(Numero, 4, 1)) * 7) + _ (CInt(Mid(Numero, 5, 1)) * 6) + _ (CInt(Mid(Numero, 6, 1)) * 5) + _ (CInt(Mid(Numero, 7, 1)) * 4) + _ (CInt(Mid(Numero, 8, 1)) * 3) + _ (CInt(Mid(Numero, 9, 1)) * 2)) Resto = DV1 Mod 11 If Resto = 1 Then DV1 = 0 Else If Resto = 0 Then If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then DV1 = 1 Else DV1 = 0 End If Else DV1 = 11 - Resto End If End If DV2 = ((CInt(Mid(Numero, 10, 1)) * 4) + (CInt(Mid(Numero, 11, 1)) * 3) + (DV1 * 2)) Resto2 = DV2 Mod 11 If Resto2 = 1 Then DV2 = 0 Else If Resto2 = 0 Then If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then DV2 = 1 Else DV2 = 0 End If Else DV2 = 11 - Resto2 End If End If If Mid(Numero, 12, 2) = (CStr(DV1) + CStr(DV2)) Then TituloOK = True: MsgBox "Titulo Ok" Else: MsgBox "Titulo Falso" End If End Function Chamar função: Private Sub Command1_Click() TituloOK Text1 End Sub Té mais
|
|
|
|
Postada em 13/10/2005 13:46 hs
Observe que o procedimento dá retorno true ou false, sendo assim para usa-lo você de descrever quais ações para o resultado, então use: If TituloOK(Text1.Text) = True Then MsgBox "Ok" Else MsgBox "Não" End If Obs.: não necessariamente Msgbox, aí você coloca a ação que pretende
|
|
|
|