Imaginsystems


Tecniche di Programmazione - Codici Sorgenti - News Informatiche
Archivio Posts
Anno 2014

Anno 2013

Anno 2012
Statistiche
  • Views Home Page: 71.612
  • Views Posts: 542.468
  • Views Gallerie: 0
  • n° Posts: 210
  • n° Commenti: 224

VB.NET - PROGRAMMA CHE DATO UN CODICE FISCALE TROVA LA PROVINCIA E LUOGO DI NASCITA

VB.NET - PROGRAMMA CHE DATO UN CODICE FISCALE TROVA LA PROVINCIA E LUOGO DI NASCITA (ELENCO CODICE CATASTO 2012)

Oggi vi metto a disposizione un piccolo programmino che dato un codice fiscale trova luogo di nascita e la provincia.
Il programma si appoggia a un database Excel dove contiene in colonne ( Codice Catasto, Provincia, Luogo).


Alla fine del codice troverete il file del programma con il relativo file Excel dell'elenco dei Comuni 2012.

Il cuore del programma è la ricerca, sfrutta la ricerca binaria per ottimizzare la ricerca del valore e ci mette esattamente Log(n) invece di scansionarli tutti e ci metterebbe N*N.

Qui di seguito vi allego la funzione Ricerca Binaria implementata nel programma. Vi ricordo che la funzione la dovete usare soltanto se avete un Database ordinato o un array ordinato. 

    ''' <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) 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
            If Valore < DataGridView1.Item(0, middle).Value Then
                Return MetodoCerca(Partenza, middle - 1, Valore)
            ElseIf Valore > DataGridView1.Item(0, middle).Value Then
                Return MetodoCerca(middle + 1, Fine, Valore)
            ElseIf Valore = DataGridView1.Item(0, middle).Value Then
                Return middle
            End If
            Return -1
    End Function

Ora vi metto a disposizione tutto il codice del programma.

CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET :

Public Class Form1

    '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)

            '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
            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
    ''' <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
        Dim File As String
        File = Application.StartupPath & "\ELENCO_COMUNI_2012.xls"
        ConnettiFileExcel(File)
        CaricaCartella("Elenco Comuni")
        DisconnettiFileExcel()
    End Sub

    Private Sub txtCodiceFiscale_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCodiceFiscale.TextChanged
        Select Case txtCodiceFiscale.TextLength
            Case 16 'Quando ho inserito tutto il codice fiscale
                ValoreDaCercare = txtCodiceFiscale.Text.Substring(11, 4)
                txtCodiceCatasto.Text = ValoreDaCercare
            Case 0 'Quando ho cancellato il codice fiscale
                txtCodiceFiscale.Text = ""
                txtLuogoNascita.Text = ""
                txtProvincia.Text = ""
                txtCodiceCatasto.Text = ""
            Case Else
                txtCodiceFiscale.Text = txtCodiceFiscale.Text.Replace(" ", "")
        End Select
       
    End Sub


    Private Sub txtCodiceFiscale_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCodiceFiscale.Validated
        'Controllo correttezza CodiceFiscale
        txtCodiceFiscale.Text = txtCodiceFiscale.Text.Replace(" ", "")
        If txtCodiceFiscale.TextLength <> 16 Then
            MsgBox("Attenzione Codice Fiscale con meno di 16 carateri, ricontrollare perfavore", vbInformation, "Attenzione!!!")
        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) 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(0, middle).Value Then
                Return MetodoCerca(Partenza, middle - 1, Valore)
            ElseIf Valore > DataGridView1.Item(0, middle).Value Then
                Return MetodoCerca(middle + 1, Fine, Valore)
            ElseIf Valore = DataGridView1.Item(0, middle).Value Then
                Return middle
            End If
            Return -1
    End Function

    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
        txtCodiceCatasto.Text = UCase(txtCodiceCatasto.Text)
        RigaValore = MetodoCerca(0, DataGridView1.Rows.Count - 1, txtCodiceCatasto.Text)

        If RigaValore <> -1 Then
            DataGridView1.CurrentCell = DataGridView1.Item(0, RigaValore)
            txtProvincia.Text = DataGridView1.Item(1, RigaValore).Value
            txtLuogoNascita.Text = DataGridView1.Item(2, RigaValore).Value
            'MsgBox("Trovato")
        Else
            txtLuogoNascita.Text = "Error"
            txtProvincia.Text = "Error"
        End If
    End Sub

End Class

Potete scaricare il file d'esempio :

Password :  "ImaginSystem" 
Link File Download :  Download Esempio VB.NET 
Categoria: VB.NET
giovedì, 21 giu 2012 Ore. 21.53

Messaggi collegati


Ora e Data
Mappa
Blogs Amici
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003