Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Ultimo numero del codice fiscale
Forum - C# / VB.NET - Ultimo numero del codice fiscale

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
psycho85 (Ex-Member)
Pro


Messaggi: 72
Iscritto: 20/08/2006

Segnala al moderatore
Postato alle 19:01
Mercoledì, 29/08/2007
Questo topic è stato chiuso dal moderatore

Ciao a tutti, sono quasi riuscito a creare un generatore di codice fiscale in VB Express 2005...

quello che non riesco a fare è trovare l'ultimo numero, quello di controllo.

ho capito come funziona l'algoritmo ma non riesco a realizzarlo in VB...

a questo indirizzo:
http://community.visual-basic.it/lucianob/articles/2234.aspx

c'è il codice, ma qual'cuno sa spiegarlo bene? Non voglio copiare il codice e incollarlo nel mio programma VOGLIO CAPIRLO!!!:grr:

PM
Avatar
BurnOut (Normal User)
Newbie


Messaggi: 4
Iscritto: 30/08/2007

Segnala al moderatore
Postato alle 9:32
Giovedì, 30/08/2007
Ciao! Ho uno nuovo... penso il più giovane (12 anni quasi 13)...

Ho provato a copiare e incollare il codice VB.NET in visual basic 2005 express edition :rotfl: ... ma ha alcuni errori (dichiarazione array (3))...

Se vuoi guardare il mio blog... alla ricerca di qualcosa di utile

http://www.pitbullx94.spaces.live.com/
http://www.pitbullx94.spaces.live.com/


PM
Avatar
psycho85 (Ex-Member)
Pro


Messaggi: 72
Iscritto: 20/08/2006

Segnala al moderatore
Postato alle 18:31
Giovedì, 30/08/2007
Ciao, ho dato uno sguardo al tuo blog, molto carino...però non ho trovato niente che mi aiutasse a risolvere il problema :-?

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:24
Sabato, 01/09/2007
Infatti, BurnOut, alias Skull, ha postato qualcosa che potrei definire spam, dato che il suo blog non c'entra niente con la discussione.
Ho guardato il codice, ma quello non genera un codice fiscale, ma lo analizza e oltretutto usa le espressioni regolari. Se mi posti una descrizione di come fare a creare il codice fiscale con il tuo sorgente posso darti una mano.

PM
Avatar
psycho85 (Ex-Member)
Pro


Messaggi: 72
Iscritto: 20/08/2006

Segnala al moderatore
Postato alle 13:09
Sabato, 01/09/2007
Allora, il codice fiscale è formato da 16 cifre alfanumeriche, quindi numeri e lettere.

Io ho ricavato le prime 15, queste si ricavano dai dati anagrafici del soggetto:

Cognome - 3 Lettere
Nome - 3 Lettere
Data di nascita - 5 Caratteri alfanumerici
   Anno - 2 Numeri
   Mese - 1 Lettera
   Giorno - 2 Numeri
Comune di nascita - 4 Caratteri alfanumerici
---

l'ultimo numero è il risultato di un algoritmo dei precedenti 15 caratteri alfanumerici ricavati.

per vedere come calcolarlo vi invito a leggere la tabella del sito dell'agenzia delle entrate...

http://www.agenziaentrate.it/ilwwcm/connect/Nsi/Servizi/Co ...

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:45
Sabato, 01/09/2007
Allora ho letto un articolo: l'ultimo carattere da inserire è il carattere di controllo, calcolato con un algoritmo in funzione dei primi 15 caratteri. Supponendo di avere un array Values() di bytes contenente i valori assegnati ai posti dispari, come descritto qui http://alexandrerodichevski.chiappani.it/doc.php?n=220&lan ..., il codice vb.net che penso è questo:
Codice sorgente - presumibilmente VB.NET

  1. Dim Values() As Byte = {...}
  2. Dim Somma As Int16 = 0
  3. Dim Codice As Byte
  4. Dim Controllo As Char
  5.  
  6. 'Calcola la somma di tutti i caratteri da 1 a 15
  7. For I As Byte = 0 To 14
  8.   'Calcola il codice del carattere:
  9.   If Char.IsDigit(CodiceFisc(I)) Then
  10.     Codice = Val(CodiceFisc(I))
  11.   Else
  12.     Codice = Asc(CodiceFisc(I)) - Asc("A")
  13.   End If
  14.   'Per i posti pari, aggiunge il codice
  15.   If I Mod 2 = 0 Then
  16.     Somma += Codice
  17.   Else
  18.     'Per i posti dispari aggiunge un codice relativo
  19.     'Assegnato sulla base di Values()
  20.     Somma += Values(Codice)
  21.   End If
  22. Next
  23.  
  24. 'Divide la somma per 26 e ne preleva il resto
  25. Somma = Somma Mod 26
  26. 'Usa il resto per convertirlo in lettera e lo mette in Controllo
  27. Controllo = Chr(Somma + Asc("A"))


Non l'ho provato, fammi sapere.

PM
Avatar
psycho85 (Ex-Member)
Pro


Messaggi: 72
Iscritto: 20/08/2006

Segnala al moderatore
Postato alle 14:13
Sabato, 01/09/2007
provo il codice il prima possibile, sta sera ti faccio sapere....grazie per l'aiuto TOTEM...:love:

PM
Avatar
psycho85 (Ex-Member)
Pro


Messaggi: 72
Iscritto: 20/08/2006

Segnala al moderatore
Postato alle 18:19
Lunedì, 03/09/2007
Allora, sono riuscito a fare tutto, ho utilizzato un procedimento strano ma funge...



Dim varCodice_Fiscale As String = lblCodice_Fiscale.Text
Dim varSomma_Dispari As Integer = 0
Dim varSomma_Pari As Integer = 0
Dim varCodice_Controllo As String = ""

Dim q As Integer
Dim w As Integer

For w = 2 To 14
'esamino caratteri pari
carattere = Mid$(varCodice_Fiscale, w, 1)
            varSomma_Pari = varSomma_Pari + Lettera2Pari(carattere)
            w = w + 1
Next

For q = 1 To 15
'esamino caratteri dispari
carattere = Mid$(varCodice_Fiscale, q, 1)
varSomma_Dispari = varSomma_Dispari + Lettera2Dispari(carattere)
q = q + 1
Next

Dim somma As Integer = (varSomma_Pari + varSomma_Dispari) Mod 26

        Select Case somma
            Case "0" : varCodice_Controllo = "A"
            Case "1" : varCodice_Controllo = "B"
            Case "2" : varCodice_Controllo = "C"
            Case "3" : varCodice_Controllo = "D"
            Case "4" : varCodice_Controllo = "E"
            Case "5" : varCodice_Controllo = "F"
            Case "6" : varCodice_Controllo = "G"
            Case "7" : varCodice_Controllo = "H"
            Case "8" : varCodice_Controllo = "I"
            Case "9" : varCodice_Controllo = "J"
            Case "10" : varCodice_Controllo = "K"
            Case "11" : varCodice_Controllo = "L"
            Case "12" : varCodice_Controllo = "M"
            Case "13" : varCodice_Controllo = "N"
            Case "14" : varCodice_Controllo = "O"
            Case "15" : varCodice_Controllo = "P"
            Case "16" : varCodice_Controllo = "Q"
            Case "17" : varCodice_Controllo = "R"
            Case "18" : varCodice_Controllo = "S"
            Case "19" : varCodice_Controllo = "T"
            Case "20" : varCodice_Controllo = "U"
            Case "21" : varCodice_Controllo = "V"
            Case "22" : varCodice_Controllo = "W"
            Case "23" : varCodice_Controllo = "X"
            Case "24" : varCodice_Controllo = "Y"
            Case "25" : varCodice_Controllo = "Z"

        End Select











Public Function Lettera2Dispari(ByVal carattere As String) As Integer

        Dim numero As Integer

        Select Case carattere
            Case "0" : numero = 1
            Case "1" : numero = 0
            Case "2" : numero = 5
            Case "3" : numero = 7
            Case "4" : numero = 9
            Case "5" : numero = 13
            Case "6" : numero = 15
            Case "7" : numero = 17
            Case "8" : numero = 19
            Case "9" : numero = 21
            Case "A" : numero = 1
            Case "B" : numero = 0
            Case "C" : numero = 5
            Case "D" : numero = 7
            Case "E" : numero = 9
            Case "F" : numero = 13
            Case "G" : numero = 15
            Case "H" : numero = 17
            Case "I" : numero = 19
            Case "J" : numero = 21
            Case "K" : numero = 2
            Case "L" : numero = 4
            Case "M" : numero = 18
            Case "N" : numero = 20
            Case "O" : numero = 11
            Case "P" : numero = 3
            Case "Q" : numero = 6
            Case "R" : numero = 8
            Case "S" : numero = 12
            Case "T" : numero = 14
            Case "U" : numero = 16
            Case "V" : numero = 10
            Case "W" : numero = 22
            Case "X" : numero = 25
            Case "Y" : numero = 24
            Case "Z" : numero = 23
        End Select

        Lettera2Dispari = numero

    End Function








Public Function Lettera2Pari(ByVal carattere As String) As Integer

        Dim numero As Integer

        Select Case carattere
            Case "0" : numero = 0
            Case "1" : numero = 1
            Case "2" : numero = 2
            Case "3" : numero = 3
            Case "4" : numero = 4
            Case "5" : numero = 5
            Case "6" : numero = 6
            Case "7" : numero = 7
            Case "8" : numero = 8
            Case "9" : numero = 9
            Case "A" : numero = 0
            Case "B" : numero = 1
            Case "C" : numero = 2
            Case "D" : numero = 3
            Case "E" : numero = 4
            Case "F" : numero = 5
            Case "G" : numero = 6
            Case "H" : numero = 7
            Case "I" : numero = 8
            Case "J" : numero = 9
            Case "K" : numero = 10
            Case "L" : numero = 11
            Case "M" : numero = 12
            Case "N" : numero = 13
            Case "O" : numero = 14
            Case "P" : numero = 15
            Case "Q" : numero = 16
            Case "R" : numero = 17
            Case "S" : numero = 18
            Case "T" : numero = 19
            Case "U" : numero = 20
            Case "V" : numero = 21
            Case "W" : numero = 22
            Case "X" : numero = 23
            Case "Y" : numero = 24
            Case "Z" : numero = 25
        End Select

        Lettera2Pari = numero

    End Function

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:44
Martedì, 04/09/2007
Hai scritto dei select chilometrici che potevano essere riassunti in due, dico due, righe di codice... L'eleganza prima di tutto, eh! :D

PM
Pagine: [ 1 2 3 ] Precedente | Prossimo