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.

Sincronizzare progetti di Visual Studio (o altri file e cartelle)

Utilizzo due computer per scrivere i miei libri: un PC fisso e un portatile. Inoltre scarico da Internet una infinità di cose: software, articoli, immagini, documenti e così via. Infine, creo indifferentemente sui due PC anche i progetti che sviluppo per esplorare le funzionalità di Visual Basic e di Visual Studio.

Tutti questi file e cartelle, che possono avere una dimensione anche piuttosto rilevante, devo poi spostarli da un PC all’altro per mantenere sincronizzate le due versioni. Per esempio, se sto scrivendo un capitolo di un libro sul PC portatile, poi devo trasferire il file e le relative immagini sul PC fisso, altrimenti le modifiche possono andare perse.

Finora ho svolto tutte queste attività, abbastanza fastidiose e anche “pericolose” (per la sempre possibile perdita del lavoro fatto), manualmente, cioè ricordandomi di copiare i file e confrontando le due cartelle per vedere se c’erano dei file non aggiornati.

Per migliorare questa gestione difficoltosa e fastidiosa (avete mai provato a sincronizzare a mano due cartelle, ogni santo giorno?), mi sono finalmente deciso a provare Microsoft SyncToy 2.0, scaricabile gratuitamente da qui: http://www.microsoft.com/DownLoads/details.aspx?familyid=C26EFA36-98E0-4EE9-A7C5-98D0592D8C52&displaylang=en

La pagina permette di scaricare sia la versione a 32 bit sia la versione a 64 bit. Entrambi i file di installazione sono piccoli: poco più di 4 MB ciascuno.

Per prima cosa si definisce quali sono le due cartelle da sincronizzare (naturalmente possono essere definite più coppie di cartelle). Ecco un esempio:

image

Una volta che abbiamo creato un’accoppiamento di cartelle, possiamo visualizzare un’anteprima (preview) per vedere cosa è cambiato in una o nell’altra cartella. Se siamo soddisfatti di quanto evidenziato, possiamo far partire la sincronizzazione (Run) per vedere immediatamente applicate le modifiche da una all’altra cartella e viceversa.

Nell’help del programma viene anche spiegata la modalità da seguire per impostare un’avvio della sincronizzazione schedulato. Per esempio possiamo eseguire la sincronizzazione ogni giorno a un’ora prefissata oppure possiamo decidere di farlo automaticamente ogni mezz’ora.

Uno strumento comodo, pratico ed efficace!

 

[VB.NET] Inserire o estrarre un file da un campo BLOB

Per chi dovesse avere la necessità di inserire un file in un campo BLOB o, viceversa, estrarre un file da un campo BLOB utilizzando VB.NET e ADO.NET, con i provider OleDb e SqlClient, potrà farlo seguendo le indicazioni di questo articolo:

http://support.microsoft.com/kb/316887

L’articolo è un po’ vecchiotto (2004) ma sempre utile.

Personalmente, però, preferisco sempre la scelta di mantenere i file nel filesystem e di inserire nel database il solo riferimento alla posizione nel filesystem.

[Software] CIS – CyberInstaller Suite 2009

Vi segnalo che è stato aggiornato l’ormai famosissimo prodotto software per produrre pacchetti di installazione con vari linguaggi e completamente compatibile con Windows Vista. La compatibilità è stata ora estesa anche alle piattaforme x64 (a 64 bit), anche con più di 4 GB di RAM.

CISLogoCool

Maggiori dettagli sulla nuova versione li potete trovare qui: http://www.silvercybertech.com/italian/index.html.

In questa pagina trovate anche il link alla pagina dalla quale potete scaricare il prodotto anche in versione free.

Se poi siete degli sviluppatori professionisti non potete fare a meno delle funzionalità avanzate della versione Professional.

Il prodotto è pienamente supportato dall’autore, membro dello staff di Visual Basic Tips & Tricks (www.visual-basic.it).

[VB.NET] Identificazione del sistema operativo

In un mio post di qualche tempo fa (#17 Identificare il sistema operativo) suggerivo come identificare il sistema operativo che gira sulla macchina che stiamo utilizzando.

Il suggerimento ha un limite: non contiene il test per Windows Vista e, tanto meno, per Windows 7.

Ora ho aggiunto un commento in coda al post con il quale ho spiegato come si fa ad aggiornare il codice per aggiungere il test anche per Vista (versione 6), mentre per Windows 7 non ho ancora potuto provare, ma la versione dovrebbe essere la 7 (ci avreste scommesso?)    🙂

#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. 

 

Programmare in Visual Studio con Speech Recognition

Non è una nuova tecnologia, né una nuova funzionalità di Visual Studio 2010, ma è un tipo di applicazione della tecnologia Speech Recognition (riconoscimento vocale).

Ammirate come si programma in Visual Studio semplicemente parlando:

Immaginate per esempio le opportunità che si possono mettere a disposizione a persone affette da qualche tipo di disabilità o di invalidità!

Se invece siete un po’ … esibizionisti, potreste andare in spiaggia e programmare semplicemente parlando al vostro portatile, stando distesi sul lettino a prendere il sole ed evitando di riempire la tastiera di crema per la protezione solare.   😉

#53: Sostituzione case-insensitive di una stringa all’interno di altra stringa

Il metodo Replace di un oggetto stringa è case-sensitive, cioè tiene conto delle lettere maiuscole-minuscole. Per esempio, provate a eseguire questo codice:

      Dim str As String = "Testo da Sostituire"
      str = str.Replace("sostituire", "cancellare")
      MessageBox.Show(str)
      str = str.Replace("Sostituire", "cancellare")
      MessageBox.Show(str)

Il risultato visualizzato dalla prima MessageBox sarà uguale alla stringa originale, perché “Sostituire” è diverso da “sostituire”, mentre con la seconda MessageBox otterremo effettivamente la sostituzione desiderata, perché abbiamo specificato esattamente la stringa così come appare nel testo originale.

Da questo esempio desumiamo che il metodo Replace è “case sensitive”, cioè tiene conto dei caratteri maiuscoli-minuscoli.

Come fare, quindi, a sostituire una stringa all’interno di un’altra stringa senza tenere conto della differenza maiuscole-minuscole, cioè quello che in inglese è definito “case insensitive”?

Possiamo per una volta scomodare le espressioni regolari: intendiamoci, non dobbiamo utilizzare strane sequenze di caratteri che a prima vista sembrano geroglifici. Basta utilizzare il metodo … Replace! Più facile di così… Il codice per ottenere questo risultato è il seguente:

      Dim str As String = _
         "trova PaRoLa e sostituisci con parola"
      Dim strReplace As String = "parola"
      str = Regex.Replace(str, "parola", _
         strReplace, RegexOptions.IgnoreCase)
      MessageBox.Show(str)

Attenzione che per utilizzare le espressioni regolari, dobbiamo anche importare il relativo namespace:

Imports System.Text.RegularExpressions

In questo caso vedremo che il risultato è perfettamente adatto al nostro scopo.

Microsoft Translator

Tempo fa avevo commentato nei miei blog sul fatto che anche MSDN Magazine era “caduto nella rete” del traduttore automatico di Microsoft, rendendo traduzioni in italiano poco leggibili e mettendo a disposizione degli utenti la possibilità di intervenire con opportune correzioni (vedi post QUI).

Il mese scorso c’è stato un fatto nuovo: sono stato contattato, insieme ad altri, per una valutazione sul nuovo motore di traduzione dall’inglese all’italiano (e molte altre lingue, compreso da queste lingue all’inglese). Ho subito aderito all’iniziativa e ho inviato la mia valutazione.

Pochi giorni fa ho ricevuto da Microsoft un messaggio con le istruzioni per inserire nei miei siti/blog un opportuno script per aggiungere un widget che consente già da ora di far utilizzare il nuovo motore di traduzione anche ai miei visitatori.

Il nuovo motore è incluso in Microsoft Translator e trovate dei riferimenti qui: http://www.microsofttranslator.com/. Questa pagina permette di tradurre al volo del testo libero da una delle 14 lingue disponibili a un’altra delle stesse lingue. Inoltre ci sono dei collegamenti che permettono anche di prelevare uno script per inserire nel vostro sito o blog un widget simile al mio per tradurre intere pagine web.

La qualità delle traduzioni mi sembra piuttosto buona, ora, anche se ovviamente spazio per miglioramenti ce n’è ancora. Diciamo che la traduzione è un buon punto di partenza per comprendere effettivamente il contenuto di un testo scritto in un’altra lingua e potrebbe aiutarci anche nel creare una bozza di traduzione dall’italiano all’inglese (o in una delle altre lingue disponibili).

Vi consiglio di dare un’occhiata anche al nuovo link “ESL (English as a Second Language)” che fornisce uno strumento per aiutarci a scrivere meglio in inglese. Adatto ai principianti e agli studenti di inglese, anche perché ci permette di trovare direttamente su Internet traduzioni alternative, cioè “come altri utenti hanno tradotto lo stesso concetto in inglese”.

Forte, no?    🙂