Archivi categoria: VB 2008

#56 – [VB.NET] Verificare lo stato della coda di stampa predefinita

Se avete la necessità di verificare lo stato della coda di stampa predefinita, potete utilizzare il namespace System.Printing che trovate però solo dal Framework .NET 3.0 in poi.

Per prima cosa dovete aggiungere un riferimento a System.Printing nella scheda Riferimenti delle proprietà del progetto.

Una volta aggiunto il riferimento, utilizzate un codice simile a questo:

Imports System.Printing
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) _
         Handles Button1.Click
      Dim ps As New LocalPrintServer()
      Dim pq As PrintQueue = ps.DefaultPrintQueue
      Dim err As Boolean = pq.IsInError
      If err = True Then
         MessageBox.Show("Errore di stampante")
      Else
         MessageBox.Show("Nessun errore di stampante")
      End If

   End Sub
End Class

Il mio nuovo libro (“SQL Server 2008 Guida all’uso”)

E’ con vero piacere che annuncio l’uscita del mio nuovo libro: questa volta la “vittima” si chiama SQL Server 2008.

Il libro è intitolato “SQL Server 2008 Guida all’uso”, costa 35 Euro ed è edito sempre da FAG Edizioni di Milano.

LibroSQLServer2008

Gli ultimi due capitoli contengono alcuni progetti di Visual Basic 2008 per l’accesso a SQL Server 2008: il penultimo riguarda l’utilizzo delle stored procedure da codice, mentre l’ultimo capitolo è interamente dedicato a Visual Basic 2008 in “sinergia” con SQL Server 2008.

Ringrazio infinitamente Luca Bianchi (Microsoft MVP su SQL Server) che si è prestato gentilmente a leggere, commentare e spesso a correggere i miei “strafalcioni”. Per un “guru” quale è lui è stata quasi una tortura  :-)

Come sempre sottolineo la mia disponibilità nel ricevere i vostri commenti, con l’impegno di migliorare sempre di più la qualità dei contenuti.

Grazie!

#55: [VB.NET] Misurare il tempo di esecuzione

…Spesso ci capita di conoscere varie tecniche per risolvere un nostro problema applicativo e/o di programmazione e non sappiamo quali di queste tecniche è più efficace dal punto di vista delle prestazioni, cioè quale impiega meno tempo a terminare l’esecuzione.

Le prestazioni di diversi algoritmi, talvolta, hanno una piccola differenza di tempo nell’esecuzione di singoli passi di programma, ma se moltiplichiamo la differenza di tempo per centinaia di migliaia di elementi da elaborare, il tempo totale diventa percepibile in modo pesante dall’utente. E’ quindi necessario sperimentare i vari algoritmi o frammenti di codice per verificare quale sia preferibile tra le varie possibilità.

Un modo semplice è quello di utilizzare un oggetto di classe TimeSpan, rilevando i “ticks” all’inizio del frammento di codice e alla fine del frammento, calcolando poi la differenza tra le due registrazioni.

I “tick” sono le più piccole unità di tempo in .NET, equivalenti a 100 nanosecondi.

Per esempio:

...

‘ prima registrazione
Dim ts1 As New TimeSpan(Now.Ticks)
‘ frammento di codice o ciclo da valutare
...
‘ registrazione finale e visualizzazione della differenza di tempo
Dim ts2 As New TimeSpan(Now.Ticks)
MessageBox.Show((ts2 - ts1).ToString)

...

In questo modo sarà possibile esaminare i tempi di diversi algoritmi ed effettuare così la scelta del migliore, nel caso preso in esame.

Attenzione: non è un metodo che permette di effettuare dei veri e propri benchmark, perché i tempi di esecuzione spesso dipendono da molti altri fattori. Per esempio servizi e programmi attivi, disponibilità di RAM nel momento dell’esecuzione, carico del processore e così via. In ogni caso, il metodo proposto è un metodo empirico sufficientemente significativo e soprattutto semplice per fare delle valutazioni “a spanne” ma con dei dati alla mano. Per un migliore risultato e una maggiore sicurezza delle misurazioni è consigliabile ripetere la misurazione più volte.

 

Libro su SQL Server 2008 + esempi in VB 2008

Come già preannunciato da tempo, sono ormai in dirittura d’arrivo con il nuovo libro, dedicato a “SQL Server 2008 – Guida all’uso”. Infatti oggi ho ricevuto il file PDF integrale da rileggere e revisionare, così da poter essere pronti per la stampa e la pubblicazione verso il mese di Settembre 2009.

Nel frattempo, visto comunque che la mia principale “vocazione” è per Visual Basic, vi anticipo che l’undicesimo capitolo è interamente dedicato a Visual Basic 2008 alle modalità di accesso a un database di SQL Server 2008 e alle modalità di visualizzazione e aggiornamento dei dati: con i wizard e con comandi diretti, utilizzando un controllo DataGridView o controlli Windows Form, in data binding. Inoltre, nel decimo capitolo ci sono anche due esempi di creazione di stored procedure da Visual Studio 2008, in linguaggio VB.

Nell’attesa del libro stampato, ho il piacere di pubblicare gli esempi VB che potete scaricare liberamente e gratuitamente da questo link.

Sono certo che non ci saranno obiezioni da parte dell’editore anche nell’anticipazione del Capitolo 11 in PDF. Sappiate comunque che è ancora in bozza (diciamo una “Release Candidate”!) e che la versione definitiva sarà quella che verrà stampata prossimamente.

Questi esempi dovrebbero quanto meno soddisfare le necessità di chi ha difficoltà a “ingranare” con ADO.NET 2.0 per creare applicazioni in grado di leggere e modificare dati memorizzati in database di SQL Server 2008.

#54: [VB 2008] Apertura documento Word o creazione da modello

Se avete la necessità di aprire da Visual Studio 2008 un documento Word esistente oppure se volete creare un nuovo documento basato su un modello di Word, è necessario seguire una procedura ben precisa.

Innanzi tutto, è necessario scaricare e installare il prodotto “2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies” da questa pagina: http://www.microsoft.com/downloads/details.aspx?FamilyID=59daebaa-bed4-4282-a28c-b864d8bfa513&displaylang=en. Esistono versioni di questo pacchetto anche per Office 2003 e XP. Infatti, l’interoperabilità con Office non fa parte di Visual Studio 2008 e bisogna installare le librerie a parte.

Una volta che avete estratto i file di installazione e licenza e avete installato le librerie (avviando il file .msi), dovreste trovarle nella cartella C:\Windows\assembly. Le riconoscete facilmente, perché iniziano tutte per Microsoft.Office.Interop.*. Al posto dell’asterisco trovate Word, Excel e così via.

La versione 12.0.0.0 delle librerie si riferisce a Office 2007, mentre la versione 11.0.0.0 si riferisce alla versione 2003.

Create un modello di Word 2007 (va bene anche il formato .doc di Word 2003) di nome “MioModello.dot” e posizionatelo nella vostra cartella Documenti predefinita.

Ora create un nuovo progetto in Visual Basic 2008, un normale progetto Applicazione Windows Form.

Aprite le proprietà del progetto e aggiungete il riferimento alle librerie appena installate (Microsoft.Office.Interop.*).

Terminata questa fase “preparatoria”, aggiungete un pulsante al form e, nel codice del gestore dell’evento Click del pulsante stesso, inserite quanto segue:

      Dim oWord As Word.Application = CreateObject("Word.Application")
      Dim oDoc As Word.Document
      Dim strDocumentName As String = ""
      oWord.Visible = True

      strDocumentName = "C:\Users\Mario\Documents\MioDocumento.doc"

      If Dir(strDocumentName) = "" Then
         oWord.Documents.Add(My.Computer.FileSystem.SpecialDirectories.MyDocuments & _
            "\MioModello.dot").SaveAs(FileName:=strDocumentName)
      Else
         oDoc = oWord.Documents.Open(strDocumentName)
      End If

      oWord.Activate()

      oDoc = Nothing
      oWord = Nothing

Dopo aver avviato il programma, premete il pulsante: se il documento MioDocumento.doc esiste già, verrà aperto in una finestra di Word. Se non esiste (come al primo avvio), verrà aperto un nuovo documento, con il nome MioDocumento.doc, con i contenuti del modello MioModello.dot.

Naturalmente se premete nuovamente il pulsante, dopo aver modificato e salvato il documento Word, verrà aperto questo nuovo documento.

A questo punto diventa estremamente semplice passare delle variabili al metodo per aprire qualsiasi documento Word si voglia o per creare qualsiasi documento basato su un modello di Word. 

 

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 843 follower