Oggi vi metto a disposizione il codice sorgente di come Calcolare un Codice Fiscale e di come Leggere o Estrapolare i dati da un Codice Fiscale come la data di nascita, il comune, la provincia e parte del nome e cognome.
Il programma deve essere aggiustato graficamente, contiene tutto il sorgente e le funzioni importanti sia di Calcolo che di Lettura ( Sono ben accetti commenti e suggerimenti, ammetto che il codice non è tutto pulito, motivo è il tempo che non ho ma spero che apprezzate lo stesso lo sforzo ihihih!!! ) :
Alla fine del Post troverete il link dove scaricare il file con i sorgenti del programma Calcolo del Codice Fiscale e Lettura Codice Fiscale.
Public Class Form1
Public Bandiera As Boolean = False
Public CarattereMese As String 'Si trova nella posizione 9 del codice fiscale
Public NumeroAnno As Integer 'Si trova nella posizione 7 e 8 codice fiscale
Public NumeroGiorno As Integer 'Si trova nella posizione 10 e 11 codice fiscale
Public ArrayMesi() As String = {"A", "B", "C", "D", "E", "H", "L", "M", "P", "R", "S", "T"} 'Lettere che corrispondono al mese
Public ArrayDescrizioneMesi() As String = {"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"}
Public ArrayCharPosizioneDispari() As Integer = {1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23}
Public ArrayChar() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
Public ArrayPari As New ArrayList
Public ArrayDispari As New ArrayList
Public ArrayVocali() As String = {"A", "E", "I", "O", "U"}
Public Parte1CodiceFiscale As String
Public Parte2CodiceFiscale As String
Public Parte3CodiceFiscale As String
'Variabili
Dim DtSet As System.Data.DataSet
Dim myConnectionString As String
Dim myConnection As System.Data.OleDb.OleDbConnection = New OleDb.OleDbConnection
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim ValoreCella As String
Dim ValoreDaCercare As String
''' <summary>
''' CpmmettiFileExcel - Funzione che serve per connettersi al file .xls
''' </summary>
''' <param name="NomeFileExcel"></param>
''' <remarks></remarks>
Private Sub ConnettiFileExcel(ByVal NomeFileExcel As String)
Try
myConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & NomeFileExcel & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
myConnection.ConnectionString = myConnectionString
myConnection.Open()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
''' <summary>
''' DisconnettiFileExcel - Funzione che serve per disconnetere e chiudere la lettura del file .xls
''' </summary>
''' <remarks></remarks>
Private Sub DisconnettiFileExcel()
Try
myConnection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
''' <summary>
''' CaricaCartella - Carica il nome della cartella o finistra del file Excel
''' </summary>
''' <param name="NomeCartella"></param>
''' <remarks></remarks>
Private Sub CaricaCartella(ByVal NomeCartella As String)
Try
MyCommand = New System.Data.OleDb.OleDbDataAdapter _
("select * from [" & NomeCartella & "$]", myConnection)
MyCommand.TableMappings.Add("Table", "TestTable")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
'Copia interamente la tabella nel DataGridView
'DataGridView1.DataSource = DtSet.Tables(0)
Dim ValoreColonna As String
'Ciclo che serve per popolare il DAtaGridView
For i As Integer = 0 To DtSet.Tables(0).Rows.Count - 1
DataGridView1.Rows.Add()
For j As Integer = 0 To DtSet.Tables(0).Columns.Count - 1
ValoreCella = DtSet.Tables(0).Rows(i).Item(j).ToString
DataGridView1.Rows(i).Cells(j).Value = ValoreCella
Next
ValoreColonna = DtSet.Tables(0).Rows(i).Item(2).ToString
cmbComune.Items.Insert(i, ValoreColonna)
Next
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
''' <summary>
''' CaricaConfiguraioneDataGridView - Carica le caratteristiche del DataGridView
''' </summary>
''' <remarks></remarks>
Private Sub CaricaConfiguraioneDataGridView()
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
DataGridView1.AutoSize = True
End Sub
Function xls_clean(ByVal in_put As String)
Dim clean_and_clear() As String = {",", "%", "/", "'", ".", "(", ")", ";", "!", "+", "^", "&", "\", "?", "]", "[", "{", "}", "<", ">", "@"}
Dim x As Integer
For x = 0 To UBound(clean_and_clear) Step 1
in_put = Replace(in_put, clean_and_clear(x), "")
Next x
xls_clean = Trim$(in_put)
Return xls_clean
End Function
Private Function CarattereControllo(ByVal CodiceFiscale As String) As Boolean
Dim risultato As Integer = 0
Dim sommapari As Integer = 0
Dim sommadispari As Integer = 0
Try
If CodiceFiscale.ToString <> "" Then
For i As Integer = 0 To CodiceFiscale.Length - 2 Step 1
'Vi ricordo che l'array parte da zero ma noi dobbiamo calcolare come se fosse 1
'e quindi Dispari si trovano nella posizione Pari e i Pari si trovano nella posizione Dispari
If i Mod (2) = 1 Then
'Indice Dispari - Posizione Dispari)
ArrayPari.Add(CodiceFiscale.Substring(i, 1).ToString)
Else
'Indice Pari - Posizione Pari
ArrayDispari.Add(CodiceFiscale.Substring(i, 1).ToString)
End If
Next
For i As Integer = 0 To ArrayPari.Count - 1 Step 1
If IsNumeric(ArrayPari(i).ToString) Then
sommapari = sommapari + ArrayPari(i).ToString
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & ArrayPari(i).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayPari(i).ToString) = ArrayChar(j).ToString) Then
sommapari = sommapari + j
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & j)
Exit For
End If
Next
End If
Next
For i As Integer = 0 To ArrayDispari.Count - 1 Step 1
If IsNumeric(ArrayDispari(i).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayDispari(" & i & ").ToString = " & ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayDispari(i).ToString) = ArrayChar(j).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(j).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayCharPosizioneDispari(" & j & ").ToString = " & ArrayCharPosizioneDispari(j).ToString)
Exit For
End If
Next
End If
Next
risultato = 0
End If
ArrayPari.Clear()
ArrayDispari.Clear()
risultato = (sommapari + sommadispari) Mod 26
'Console.WriteLine(ArrayChar(risultato).ToString & " = " & CodiceFiscale.Substring(CodiceFiscale.Length - 1, 1).ToString)
If (ArrayChar(risultato).ToString = UCase(CodiceFiscale.Substring(CodiceFiscale.Length - 1, 1).ToString)) Then
Return True
Else
Return False
End If
Catch ex As Exception
'Errore generato da qualche numero e carattere strano
Return False
End Try
End Function
''' <summary>
''' Carica il programma - Load Form
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' txtCodiceFiscale.Text = "DRBDVD86T06H501K"
Dim File As String
File = Application.StartupPath & "\ELENCO_COMUNI_2012.xls"
ConnettiFileExcel(File)
CaricaCartella("Elenco Comuni")
DisconnettiFileExcel()
End Sub
Private Sub CaricaMaiuscoloBox()
txtCodiceFiscale.Text = UCase(txtCodiceFiscale.Text)
txtNome.Text = UCase(txtNome.Text)
txtCognome.Text = UCase(txtCognome.Text)
txtDataDiNascita.Text = UCase(txtDataDiNascita.Text)
txtSesso.Text = UCase(txtSesso.Text)
txtComune.Text = UCase(txtComune.Text)
txtProvincia.Text = UCase(txtProvincia.Text)
End Sub
Private Sub txtCodiceFiscale_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCodiceFiscale.Click
If rbtLeggiCodiceFiscale.Checked = True Then
txtCodiceFiscale.ReadOnly = False
txtCodiceFiscale.Text = ""
Else
txtCodiceFiscale.ReadOnly = True
End If
End Sub
Private Sub txtCodiceFiscale_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodiceFiscale.TextChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
Exit Sub
End If
Select Case txtCodiceFiscale.TextLength
Case 16 'Quando ho inserito tutto il codice fiscale
txtCodiceFiscale.Text = txtCodiceFiscale.Text.Replace(" ", "")
Dim Controllo As Boolean = CarattereControllo(txtCodiceFiscale.Text)
If Controllo = False Then
MsgBox("Errore Codice Fiscale ", vbInformation, "Errore")
Else
If txtCodiceFiscale.TextLength <> 16 Or txtCodiceFiscale.TextLength = 0 Then
PulisciTutto()
Exit Select
End If
If rbtLeggiCodiceFiscale.Checked = True Then
'Lettura Codice Fiscale
LetturaCodiceFiscale()
Else
'Calcola Codice Fiscale
CalcolaCodiceFiscale()
End If
End If
Case 0 'Quando ho cancellato il codice fiscale
PulisciTutto()
Case Else
txtCodiceFiscale.Text = txtCodiceFiscale.Text.Replace(" ", "")
End Select
End Sub
Private Sub PulisciTutto()
txtNome.Text = ""
txtCognome.Text = ""
txtDataDiNascita.Text = ""
txtSesso.Text = ""
txtComune.Text = ""
txtProvincia.Text = ""
End Sub
Private Sub BloccaBox()
txtCodiceFiscale.ReadOnly = True
txtNome.ReadOnly = True
txtCognome.ReadOnly = True
txtDataDiNascita.ReadOnly = True
txtSesso.ReadOnly = True
txtComune.ReadOnly = True
txtProvincia.ReadOnly = True
End Sub
Private Sub SbloccaBox()
txtCodiceFiscale.ReadOnly = False
txtNome.ReadOnly = False
txtCognome.ReadOnly = False
txtDataDiNascita.ReadOnly = False
txtSesso.ReadOnly = False
txtComune.ReadOnly = False
' txtProvincia.ReadOnly = False
End Sub
Private Sub LetturaCodiceFiscale()
txtCodiceCatasto.Text = ""
CarattereMese = Mese(txtCodiceFiscale.Text.Substring(8, 1).ToString)
If IsNumeric(txtCodiceFiscale.Text.Substring(6, 2).ToString) And IsNumeric(txtCodiceFiscale.Text.Substring(9, 2).ToString) Then
NumeroAnno = txtCodiceFiscale.Text.Substring(6, 2).ToString
NumeroGiorno = txtCodiceFiscale.Text.Substring(9, 2).ToString
Else
txtDataDiNascita.Text = ""
Exit Sub
End If
Dim VerificaNumero As Integer = NumeroGiorno
If VerificaNumero - 40 > 0 Then
NumeroGiorno = NumeroGiorno - 40
txtSesso.Text = "F"
Else
txtSesso.Text = "M"
End If
'If NumeroGiorno < 9 Then
' 'Visualizza la data in questa maniera dd MESE yy ex: 06 Dicembre 86
' 'txtDataDiNascita.Text = "0" & NumeroGiorno & " " & ArrayDescrizioneMesi(CarattereMese) & " " & NumeroAnno
' 'Visualizza la data in questa maniera dd / mm / yy ex: 06/12/86
' txtDataDiNascita.Text = "0" & NumeroGiorno & "/" & CarattereMese + 1 & "/" & NumeroAnno
'Else
'Visualizza la data in questa maniera dd MESE yy ex: 16 Dicembre 86
'txtDataDiNascita.Text = NumeroGiorno & " " & ArrayDescrizioneMesi(CarattereMese) & " " & NumeroAnno
'End If
If CarattereMese < 9 Then
'Visualizza la data in questa maniera dd / mm / yy ex: 16/12/86
txtDataDiNascita.Text = NumeroGiorno & "/0" & CarattereMese + 1 & "/" & NumeroAnno
Else
'Visualizza la data in questa maniera dd / mm / yy ex: 16/12/86
txtDataDiNascita.Text = NumeroGiorno & "/" & CarattereMese + 1 & "/" & NumeroAnno
End If
txtDataDiNascita.TextAlign = HorizontalAlignment.Center
ValoreDaCercare = txtCodiceFiscale.Text.Substring(11, 4)
txtCodiceCatasto.Text = ValoreDaCercare
txtNome.Text = txtCodiceFiscale.Text.Substring(3, 3).ToString
txtCognome.Text = txtCodiceFiscale.Text.Substring(0, 3).ToString
CaricaMaiuscoloBox()
End Sub
Private Sub CalcolaCodiceFiscale()
txtCodiceFiscale.Text = ""
'Prima Cosa
Dim Cognome As String
Dim Nome As String
Dim Sesso As String
txtSesso.Text = UCase(txtSesso.Text)
Sesso = UCase(txtSesso.Text)
Cognome = UCase(txtCognome.Text.Replace(" ", "").ToString)
Nome = UCase(txtNome.Text.Replace(" ", "").ToString)
Dim Data As Date
Dim Aumenta As Integer = 0
If (Sesso = "F") Then
Aumenta = 40
End If
If IsDate(txtDataDiNascita.Text) Then
Data = txtDataDiNascita.Text
Dim giorno As Integer = Data.Day
giorno = giorno + Aumenta
Dim mese As Integer = Data.Month
Parte2CodiceFiscale = Data.ToString("yy") & ArrayMesi(mese - 1) & giorno.ToString()
End If
Dim ArrayConsonanti As Array
If Cognome.Length > 0 Then
For i As Integer = 0 To Cognome.Length - 1
For j As Integer = 0 To ArrayVocali.Length - 1
Cognome = Cognome.ToString.Replace(ArrayVocali(j).ToString, "")
Next
Next
End If
Select Case Cognome.Length
Case Is = 3, Is > 3
Parte1CodiceFiscale = Cognome.Substring(0, 3).ToString
Case Is = 2
Parte1CodiceFiscale = PulisciStringa(txtCognome.Text, Cognome)
Parte1CodiceFiscale = Cognome.Substring(0, 2).ToString & Parte1CodiceFiscale(0).ToString
Case Is = 1
Parte1CodiceFiscale = PulisciStringa(txtCognome.Text, Cognome)
Parte1CodiceFiscale = Cognome.Substring(0, 1).ToString & Parte1CodiceFiscale(0).ToString
Case Is = 0
Parte1CodiceFiscale = txtCognome.Text
Select Case Parte1CodiceFiscale.Length
Case Is = 3, Is > 4
Parte1CodiceFiscale = Parte1CodiceFiscale.Substring(0, 3).ToString
Case Is = 2
Parte1CodiceFiscale = Parte1CodiceFiscale.Substring(0, 2).ToString & "X"
Case Is = 1
Parte1CodiceFiscale = Parte1CodiceFiscale.Substring(0, 1).ToString & "XX"
Case Is = 0
Parte1CodiceFiscale = "XXX"
End Select
End Select
If Nome.Length > 2 Then
For i As Integer = 0 To Nome.Length - 1
For j As Integer = 0 To ArrayVocali.Length - 1
Nome = Nome.ToString.Replace(ArrayVocali(j).ToString, "")
Next
Next
End If
Dim TEMP As String
Select Case Nome.Length
Case Is = 4, Is > 4
'Mariangela = MNG
'Aldo Maria = LMR
ArrayConsonanti = Nome.ToArray
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & ArrayConsonanti(2).ToString & ArrayConsonanti(3).ToString
Case Is = 3
'Bruno = BRN
ArrayConsonanti = Nome.ToArray
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & ArrayConsonanti(1).ToString & ArrayConsonanti(2).ToString
Case Is = 2
'Luca = LCU
ArrayConsonanti = Nome.ToArray
TEMP = PulisciStringa(UCase(txtNome.Text), Nome)
If TEMP.Length > 0 Then
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & ArrayConsonanti(1).ToString & TEMP(0).ToString
Else
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & ArrayConsonanti(1).ToString & "X"
End If
Case Is = 1
'Lia = LIA
ArrayConsonanti = Nome.ToArray
TEMP = PulisciStringa(UCase(txtNome.Text), Nome)
If TEMP.Length > 0 Then
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & TEMP(0).ToString & TEMP(1).ToString
Else
Parte1CodiceFiscale = Parte1CodiceFiscale & ArrayConsonanti(0).ToString & "X"
End If
Case Is = 0
Select Case txtNome.TextLength
Case Is = 3, Is > 4
Parte1CodiceFiscale = Parte1CodiceFiscale & txtNome.Text.Substring(0, 3).ToString
Case Is = 2
Parte1CodiceFiscale = Parte1CodiceFiscale & txtNome.Text.Substring(0, 2).ToString & "X"
Case Is = 1
Parte1CodiceFiscale = Parte1CodiceFiscale & txtNome.Text.Substring(0, 1).ToString & "XX"
Case Is = 0
Parte1CodiceFiscale = Parte1CodiceFiscale & "XXX"
End Select
End Select
Parte2CodiceFiscale = Parte2CodiceFiscale & txtCodiceCatasto.Text
Parte2CodiceFiscale = Parte1CodiceFiscale & Parte2CodiceFiscale
Parte3CodiceFiscale = StringCarattereControllo(Parte2CodiceFiscale)
txtCodiceFiscale.Text = Parte2CodiceFiscale & Parte3CodiceFiscale
'Parte3CodiceFiscale = Parte1CodiceFiscale & Parte2CodiceFiscale & Parte3CodiceFiscale
txtCodiceFiscale.ReadOnly = True
End Sub
Private Function PulisciStringa(ByVal Array1 As String, ByVal array2 As String) As String
Dim temp1 As Array
temp1 = array2.ToCharArray
Array1 = UCase(Array1)
For j As Integer = 0 To temp1.Length - 1 Step 1
Array1 = Array1.ToString.Replace(temp1(j).ToString, "")
Next
Return Array1.ToString
End Function
Private Function Mese(ByVal CarattereMese As String) As String
Try
CarattereMese = UCase(CarattereMese)
For i As Integer = 0 To UBound(ArrayMesi) Step 1
If CarattereMese = ArrayMesi(i).ToString Then
Return i
End If
Next
Return -1
Catch ex As Exception
MsgBox("Errore : " & ex.ToString, vbCritical, "ERRORE!!!")
Return -1
End Try
End Function
Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click
End
End Sub
Private Sub rbtCalcolaCodiceFiscale_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtCalcolaCodiceFiscale.CheckedChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
PulisciTutto()
BloccaBox()
txtCodiceFiscale.Text = ""
txtNome.ReadOnly = False
cmbComune.Visible = True
cmbComune.Text = ""
cmbComune.Enabled = False
txtComune.Visible = False
btnCalcola.Visible = True
btnCopia.Text = "Cop&ia CF"
Else
btnCopia.Text = "&Incolla CF"
End If
End Sub
Private Sub rbtLeggiCodiceFiscale_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtLeggiCodiceFiscale.CheckedChanged
If rbtLeggiCodiceFiscale.Checked = True Then
PulisciTutto()
BloccaBox()
cmbComune.Visible = False
cmbComune.Text = ""
txtComune.Visible = True
btnCalcola.Visible = False
End If
End Sub
Private Sub txtCodiceCatasto_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodiceCatasto.TextChanged
If txtCodiceCatasto.Text = "" Then
Exit Sub
End If
Dim RigaValore As Integer
'SCRIVI()
txtCodiceCatasto.Text = UCase(txtCodiceCatasto.Text)
RigaValore = MetodoCerca(0, DataGridView1.Rows.Count - 1, txtCodiceCatasto.Text, 0)
If RigaValore <> -1 Then
DataGridView1.CurrentCell = DataGridView1.Item(0, RigaValore)
txtProvincia.Text = DataGridView1.Item(1, RigaValore).Value
txtComune.Text = DataGridView1.Item(2, RigaValore).Value
'MsgBox("Trovato")
Else
txtComune.Text = "Error"
txtProvincia.Text = "Error"
End If
If rbtCalcolaCodiceFiscale.Checked = True Then
CalcolaCodiceFiscale()
End If
End Sub
''' <summary>
''' MetodoCerca - /* Funzione per Ricerca Binaria con ricorsione */
''' </summary>
''' <param name="Partenza"></param>
''' <param name="Fine"></param>
''' <param name="Valore"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function MetodoCerca(ByVal Partenza As Integer, ByVal Fine As Integer, ByVal Valore As String, ByVal Colonna As Integer) As Integer
If Valore = "" Then
Return -1
End If
If Partenza > Fine Then
Return -1
End If
Dim middle As Integer = 0
middle = (Partenza + Fine) / 2
Console.WriteLine(DataGridView1.Item(0, middle).Value.GetHashCode & " = " & Valore.GetHashCode)
If Valore < DataGridView1.Item(Colonna, middle).Value Then
Return MetodoCerca(Partenza, middle - 1, Valore, Colonna)
ElseIf Valore > DataGridView1.Item(Colonna, middle).Value Then
Return MetodoCerca(middle + 1, Fine, Valore, Colonna)
ElseIf Valore = DataGridView1.Item(Colonna, middle).Value Then
Return middle
End If
Return -1
End Function
Private Sub cmbComune_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbComune.SelectedIndexChanged
If cmbComune.Text <> "" Then
Dim rigavalore As Integer
rigavalore = MetodoCerca(0, DataGridView1.Rows.Count - 1, UCase(cmbComune.Text), 2)
If rigavalore <> -1 Then
txtProvincia.Text = DataGridView1.Item(1, rigavalore).Value
txtComune.Text = DataGridView1.Item(2, rigavalore).Value
txtCodiceCatasto.Text = DataGridView1.Item(0, rigavalore).Value
Else
'Errore
txtCodiceCatasto.Text = ""
txtProvincia.Text = "Err"
End If
End If
End Sub
Private Sub cmbComune_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbComune.TextChanged
If cmbComune.Text <> "" Then
Dim rigavalore As Integer
rigavalore = MetodoCerca(0, DataGridView1.Rows.Count - 1, UCase(cmbComune.Text), 2)
If rigavalore <> -1 Then
txtProvincia.Text = DataGridView1.Item(1, rigavalore).Value
txtComune.Text = DataGridView1.Item(2, rigavalore).Value
txtCodiceCatasto.Text = DataGridView1.Item(0, rigavalore).Value
Else
'Errore
txtProvincia.Text = ""
txtCodiceCatasto.Text = ""
End If
Else
txtCodiceCatasto.Text = ""
txtProvincia.Text = ""
End If
End Sub
Private Sub txtSesso_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtSesso.Validating
Select Case txtSesso.Text
Case "M", "m"
Exit Select
Case "F", "f"
Exit Select
Case Else
txtSesso.Text = ""
MsgBox("Errore Inserire M = Maschio e F = Femmina", vbCritical, "ATTENZIONE!!!")
Exit Sub
End Select
End Sub
Private Sub txtNome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNome.TextChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
If txtNome.TextLength > 0 Then
txtCognome.ReadOnly = False
Else
txtCognome.ReadOnly = True
End If
End If
End Sub
Private Sub txtCognome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCognome.TextChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
If txtCognome.TextLength > 0 Then
txtDataDiNascita.ReadOnly = False
Else
txtDataDiNascita.ReadOnly = True
End If
End If
End Sub
Private Sub txtSesso_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSesso.TextChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
If txtSesso.TextLength > 0 Then
cmbComune.Enabled = True
Else
txtSesso.ReadOnly = False
End If
End If
End Sub
Private Function StringCarattereControllo(ByVal CodiceFiscale As String) As String
Dim risultato As Integer = 0
Dim sommapari As Integer = 0
Dim sommadispari As Integer = 0
Try
If CodiceFiscale.ToString <> "" Then
For i As Integer = 0 To CodiceFiscale.Length - 1 Step 1
'Vi ricordo che l'array parte da zero ma noi dobbiamo calcolare come se fosse 1
'e quindi Dispari si trovano nella posizione Pari e i Pari si trovano nella posizione Dispari
If i Mod (2) = 1 Then
'Indice Dispari - Posizione Dispari)
ArrayPari.Add(CodiceFiscale.Substring(i, 1).ToString)
Else
'Indice Pari - Posizione Pari
ArrayDispari.Add(CodiceFiscale.Substring(i, 1).ToString)
End If
Next
For i As Integer = 0 To ArrayPari.Count - 1 Step 1
If IsNumeric(ArrayPari(i).ToString) Then
sommapari = sommapari + ArrayPari(i).ToString
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & ArrayPari(i).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayPari(i).ToString) = ArrayChar(j).ToString) Then
sommapari = sommapari + j
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & j)
Exit For
End If
Next
End If
Next
For i As Integer = 0 To ArrayDispari.Count - 1 Step 1
If IsNumeric(ArrayDispari(i).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayDispari(" & i & ").ToString = " & ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayDispari(i).ToString) = ArrayChar(j).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(j).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayCharPosizioneDispari(" & j & ").ToString = " & ArrayCharPosizioneDispari(j).ToString)
Exit For
End If
Next
End If
Next
risultato = 0
End If
ArrayPari.Clear()
ArrayDispari.Clear()
risultato = (sommapari + sommadispari) Mod 26
'Console.WriteLine(ArrayChar(risultato).ToString & " = " & CodiceFiscale.Substring(CodiceFiscale.Length - 1, 1).ToString)
Return ArrayChar(risultato).ToString
Catch ex As Exception
'Errore generato da qualche numero e carattere strano
Return "Errore"
End Try
End Function
Private Sub txtProvincia_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtProvincia.TextChanged
If rbtCalcolaCodiceFiscale.Checked = True Then
If cmbComune.Text.Length > 2 Then
Dim rigavalore As Integer
rigavalore = MetodoCerca(0, DataGridView1.Rows.Count - 1, UCase(cmbComune.Text), 2)
If rigavalore <> -1 Then
txtCodiceCatasto.Text = DataGridView1.Item(0, rigavalore).Value
Else
'Errore
'txtProvincia.Text = "Err"
End If
End If
End If
End Sub
Private Sub btnCalcola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalcola.Click
If txtNome.TextLength > 0 And txtCognome.TextLength > 0 And txtDataDiNascita.TextLength > 0 And cmbComune.Text.Length > 0 And txtProvincia.TextLength > 0 Then
If rbtCalcolaCodiceFiscale.Checked = True Then
CalcolaCodiceFiscale()
End If
End If
End Sub
Private Sub txtDataDiNascita_MaskInputRejected(ByVal sender As Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles txtDataDiNascita.MaskInputRejected
If rbtCalcolaCodiceFiscale.Checked = True Then
If IsDate(txtDataDiNascita.Text) Then
txtSesso.ReadOnly = False
Else
MsgBox("Errore Formato Data dd/mm/yyy ex: 01/01/2012 ", vbInformation, "ATTENZIONE!!!")
txtDataDiNascita.Text = ""
txtSesso.ReadOnly = True
End If
End If
End Sub
Private Sub txtDataDiNascita_TypeValidationCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs) Handles txtDataDiNascita.TypeValidationCompleted
If rbtCalcolaCodiceFiscale.Checked = True Then
If txtDataDiNascita.TextLength > 0 Then
txtSesso.ReadOnly = False
Else
txtSesso.ReadOnly = True
End If
End If
End Sub
Private Sub btnCopia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopia.Click
If btnCopia.Text = "Cop&ia CF" Then
If txtCodiceFiscale.Text <> "" Then
My.Computer.Clipboard.SetText(txtCodiceFiscale.Text)
Else
Exit Sub
End If
Else
If My.Computer.Clipboard.ContainsText = True Then
txtCodiceFiscale.Text = My.Computer.Clipboard.GetText()
End If
End If
End Sub
End Class