routine che avvia l'aggiornamento
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Try
'avvia il recupero dati
'controlla che il BGW non sia impegnato in operazioni precedenti
If ToODBC_BGWorker_Prenotazioni IsNot Nothing Then
If ToODBC_BGWorker_Prenotazioni.IsBusy = True Then Exit Sub
End If
'dichiaro un nuovo backgroundworker
ToODBC_BGWorker_Prenotazioni = New BackgroundWorker
'imposto gli handler dell'oggetto
AddHandler ToODBC_BGWorker_Prenotazioni.DoWork, AddressOf ToODBC_BGWorker_Prenotazioni_DoWork
AddHandler ToODBC_BGWorker_Prenotazioni.RunWorkerCompleted, AddressOf ToODBC_BGWorker_Prenotazioni_RunWorkerCompleted
AddHandler ToODBC_BGWorker_Prenotazioni.ProgressChanged, AddressOf ToODBC_BGWorker_Prenotazioni_RunProgress
'abilita l'avviso della fine del worker
ToODBC_BGWorker_Prenotazioni.WorkerReportsProgress = True
ToODBC_BGWorker_Prenotazioni.WorkerSupportsCancellation = True
'avvia la procedura di verifica connettività
ToODBC_BGWorker_Prenotazioni.RunWorkerAsync()
Catch ex As Exception
Errore(ex)
End Try
End Sub
operazioni di recupero dei dati
codice:
''' <summary>
''' recupera i dati sulle prenotazioni e li inserisce in una tabella
''' </summary>
''' <remarks></remarks>
Sub ToODBC_BGWorker_Prenotazioni_DoWork()
Try
'istanzia una nuova tabella
DataTableRisultati_Prenotazioni = New DataTable
'se la connessione non è 'Nothing' e 'IsClosed'
If Cn_Prenotazioni IsNot Nothing Then
'connessione in uno stato diverso
If Cn_Prenotazioni.State <> ConnectionState.Closed Then
'la richiude prima di riaprirla
Cn_Prenotazioni.Close()
End If
End If
'ricerca i dati di connessione
Dim Dsn As String = RicercaImpostazioneInterna(4013)
Dim Uid As String = RicercaImpostazioneInterna(4014)
Dim Pwd As String = RicercaImpostazioneInterna(4015)
Dim AnnoRicerca As String = RicercaImpostazioneInterna(4016)
'controlla la validità delle impostazioni
If Dsn.Length = 0 Then
'interrompe la routine
Exit Sub
End If
'controlla la validità delle impostazioni
If Uid.Length = 0 Then
'interrompe la routine
Exit Sub
End If
'controlla la validità dell'anno di ricerca
If AnnoRicerca.Length <> 4 Or IsNumeric(AnnoRicerca) = False Then
AnnoRicerca = Now.Year
End If
'--------------------------------------------------------------------
'CONNESSIONE
'--------------------------------------------------------------------
'imposta la stringa di connessionecon i dati forniti dall'utente
Dim ConnectionString As String = "DSN=" & Dsn & ";" & IIf(Uid.Length > 0, "UID=" & Uid & ";", "") & IIf(Pwd.Length > 0, "PWD=" & Pwd & ";", "")
'istanzio una nuova connessione
Cn_Prenotazioni = New OdbcConnection(ConnectionString)
'imposta l'handler
AddHandler Cn_Prenotazioni.StateChange, AddressOf Stato_Cn_Prenotazioni
'--------------------------------------------------------------------
'QUERY SQL: Recupera i dati delle prenotazioni dell'anno corrente
'--------------------------------------------------------------------
'SQLString = "SELECT * FROM PRENOT01 WHERE data_dal BETWEEN '" & AnnoRicerca.ToString.Substring(2, 2) & "/01/01" & "' AND '" & AnnoRicerca.ToString.Substring(2, 2) & "/12/31" & "' ORDER BY struttura"
'--------------------------------------------------------------------
'COMANDO
'--------------------------------------------------------------------
'imposta il command
Dim Command = New OdbcCommand(ClausolaWhere, Cn_Prenotazioni)
'--------------------------------------------------------------------
'ADAPTER
'--------------------------------------------------------------------
'dichiara un nuovo adapter per popolare la tabella
Dim AD As OdbcDataAdapter = New OdbcDataAdapter(ClausolaWhere, Cn_Prenotazioni)
'--------------------------------------------------------------------
'DATATABLE
'--------------------------------------------------------------------
'popola la tabella con i dati prelevati
AD.Fill(DataTableRisultati_Prenotazioni)
'carica il file di informazioni contatti da fonti esterne
FileInformazioniOpzioniPrenotazioni = XDocument.Load(My.Settings.Percorso_RadicePadre.ToString & "\" & My.Settings.ApplicationName & "\" & "Informazioni" & "\" & "opzioniprenotazioni.xml")
MsgBox("ricerca terminata con i seguenti risultati " & vbCrLf & DataTableRisultati_Prenotazioni.Rows.Count - 1)
Catch ex As Exception
Errore(ex)
Finally
'se la connessione non è 'Nothing' e 'IsClosed'
If Cn_Prenotazioni IsNot Nothing Then
'connessione in uno stato diverso
If Cn_Prenotazioni.State <> ConnectionState.Closed Then
'la richiude prima di riaprirla
Cn_Prenotazioni.Close()
End If
End If
End Try
End Sub
'procedura nel thread principale che aggiorna l'interfaccia grafica
codice:
''' <summary>
''' analisi sui dati ricevuti nella tabella nella cache memory
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Sub ToODBC_BGWorker_Prenotazioni_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
Try
If e.Cancelled = True Then
MsgBox("Cancellato")
ElseIf e.Error IsNot Nothing Then
MsgBox("Errore: " & e.Error.Message)
Else
'aggiorna il calendario
'Dispatcher.BeginInvoke(DispatcherPriority.Normal, New AggiornaPrenotazioni_Delegate(AddressOf Me.AggiornaCalendario))
End If
Catch ex As Exception
Errore(ex)
End Try
End Sub