Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB6] Controllo logico codice fiscale.

    Esiste qualche routine già pronta da inserire in un client VB6 già esistente, che mi controlla la correttezza del codice fiscale?

    Grazie anticipatamente a chi mi saprà aiutare.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Se per controllo logico intendi che le cifre siano congruenti con il
    CheckDigit finale, questa è la routine in VB60 :
    In un Modulo .bas
    codice:
    Private dIdx As Integer
    Private valoriDigit(36, 3) As String
    Private peso(26) As String
    
       
    
    Public Function ValidCF(sCF As String) As Boolean
    Dim sCD As String
    Dim aCF(15) As String
    Dim i As Integer
    Dim l As Integer
    Dim nCD As Integer
    Dim blPari As Boolean
    Dim totale As Integer
    Dim resto  As Integer
        
        dIdx = 0
        
        ' Carico la tabella dei pesi delle cifre del CF
        Call caricaDigit("A", "0", "1"):    Call caricaDigit("B", "1", "0")
        Call caricaDigit("C", "2", "5"):    Call caricaDigit("D", "3", "7")
        Call caricaDigit("E", "4", "9"):    Call caricaDigit("F", "5", "13")
        Call caricaDigit("G", "6", "15"):    Call caricaDigit("H", "7", "17")
        Call caricaDigit("I", "8", "19"):    Call caricaDigit("J", "9", "21")
        Call caricaDigit("K", "10", "2"):    Call caricaDigit("L", "11", "4")
        Call caricaDigit("M", "12", "18"):    Call caricaDigit("N", "13", "20")
        Call caricaDigit("O", "14", "11"):    Call caricaDigit("P", "15", "3")
        Call caricaDigit("Q", "16", "6"):    Call caricaDigit("R", "17", "8")
        Call caricaDigit("S", "18", "12"):    Call caricaDigit("T", "19", "14")
        Call caricaDigit("U", "20", "16"):    Call caricaDigit("V", "21", "10")
        Call caricaDigit("W", "22", "22"):    Call caricaDigit("X", "23", "25")
        Call caricaDigit("Y", "24", "24"):    Call caricaDigit("Z", "25", "23")
        Call caricaDigit("0", "0", "1"):    Call caricaDigit("1", "1", "0")
        Call caricaDigit("2", "2", "5"):    Call caricaDigit("3", "3", "7")
        Call caricaDigit("4", "4", "9"):    Call caricaDigit("5", "5", "13")
        Call caricaDigit("6", "6", "15"):    Call caricaDigit("7", "7", "17")
        Call caricaDigit("8", "8", "19"):    Call caricaDigit("9", "9", "21")
        
    
        ' compongo la tabella dei pesi del Check Digit
        Dim speso As String
        speso = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        For i = 0 To 25
            peso(i) = Mid$(speso, i + 1, 1)
        Next i
    
        ' ricavo il CheckDigit
        sCD = Mid$(sCF, 16)
        
        ' carico in un array le restanti cifre del CF
        For i = 0 To 14
            aCF(i) = Mid$(sCF, i + 1, 1)
        Next i
    
        ' ricavo il peso del CheckDigit
        For i = 0 To 25
            If peso(i) = sCD Then
                nCD = i
                Exit For
            End If
        Next i
    
        blPari = False
        totale = 0
        For i = 0 To 14
            For l = 0 To 35
                If valoriDigit(l, 0) = aCF(i) Then
                    If blPari Then
                        totale = totale + CInt(valoriDigit(l, 1))
                        Debug.Print valoriDigit(l, 0), valoriDigit(l, 1)
                    Else
                        totale = totale + CInt(valoriDigit(l, 2))
                        Debug.Print valoriDigit(l, 0), valoriDigit(l, 2)
                    End If
                    blPari = Not blPari
                End If
            Next l
        Next i
        resto = totale Mod 26
        ValidCF = False
        If resto = nCD Then ValidCF = True
    End Function
    
    Private Sub caricaDigit(sItem As String, sPari As String, sDispari As String)
        valoriDigit(dIdx, 0) = sItem
        valoriDigit(dIdx, 1) = sPari
        valoriDigit(dIdx, 2) = sDispari
        dIdx = dIdx + 1
    End Sub
    La funzione di controllo la richiami così :

    codice:
        Dim blCheckCF As Boolean
        blCheckCF = ValidCF("<Il-codice-fiscale-che-vuoi-controllare>")
    Ciao,
    Ciao, Brainjar

  3. #3
    Esatto il controllo di correttezza.

    Grazie assai.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    Riappo questo mio 3d per chiedere una cosa al volo.

    Questo controllo fa la verifica del CIN (ultimo carattere del CF)??

    Grazie anticipatamente.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  5. #5
    Il controllo risolve pienamente il mio problema.

    Grazie!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.