![]() |
![]() Sincronizza Indice |
![]() Scarica il progetto |
![]() Testo dell'articolo |
![]() Stampa l'articolo |
Come si crea un DSN mediante codice Visual Basic? In un altra richiesta è stato visto come configurare manualmente un DSN mediante il pannello di controllo. A volte può essere molto utile creare un DSN all'interno di un programma, evitando all'amministatore della rete di effettuare quest'operazione. In questa richiesta saranno mostrate due soluzioni, sebbene ne esista anche una terza, leggermente più complessa, che consiste nel manipolare i valori del registro di Windows. Per effettuare l'operazione utilizzeremo due funzioni API della libreria ODBCCP32 ovvero la libreria del Pannello di Controllo ODBC. Le due funzioni in questione sono SQLConfigDataSource (per creare il DSN via codice) e SQLCreateDataSource (per richiamare la finestra Wizard guidata).
Inseriremo una serie di coppie di Label Abbiamo inserito anche un Frame In fondo al form abbiamo una CheckBox Prima di vedere il codice cambiamo le proprietà
La CheckBox in basso determina la modalità di creazione del DSN. Pertanto, l'attivazione della CheckBox andrà a bloccare tutti i controlli riguardanti i parametri del DSN. Se invece la CheckBox è disattivata il DSN sarà creato mediante codice, leggendo i valori dalle TextBox.
Alla riga 2 vediamo la dichiarazione della funzione SQLConfigDataSource che richiede il passaggio di quattro parametri. Il primo parametro (hwndParent) identifica l'handle di una finestra: esso servirà se volessimo richiamare la finestra di dialogo di configurazione del DSN; il secondo parametro (fRequest) è un numero indicante l'operazione da svolgere: in questo nostro esempio indicherà se aggiungere un DSN utente oppure di sistema; il terzo parametro (lpszDriver) indica la stringa contenente il Driver da utilizzare; l'ultimo parametro (lpszAttributes) è una stringa contenente la lista degli attributi da assegnare al DSN, quale il nome utente, la password ed altri.
La dichiarazione della riga 3 identifica la funzione SQLCreateDataSource che verrà utilizzata per richiamare la finestra di dialogo di creazione di un DSN. La differenza tra le due finestre di dialogo che è possibile richiamare mediante le due funzioni è che la seconda permette di definire in maniera grafica il tipo di DSN da creare ed il driver da utilizzare. In sostanza, la SQLCreateDataSource, dopo aver richiesto tali dati, richiama la funzione SQLConfigDataSource con il driver corrispondente. Alle righe 4 e 5 abbiamo definito due costanti
Vediamo subito la semplicissima funzione che regola l'evento L'ultima funzione riguarda la pressione del pulsante OK.
Alla riga 31 viene verificato lo stato della CheckBox WizardCheck. Se essa è attivata dovrà essere richiamata la funzione mediante interfaccia guidata, altrimenti la creazione avverrà esclusivamente tramite codice.
Se la CheckBox è attivata verrà letto il nome del DSN dalla casella NomeDSN. Tale valore sarà passato alla funzione SQLCreateDataSource. L'handle richiesto dalla funzione sarà quello del nostro form, in modo che la finestra sia richiamata in maniera modale, ovvero essa bloccherà l'esecuzione del codice fintanto che l'operazione non si sarà conclusa. Il risultato dell'operazione sarà memorizzato nella variabile RISULTATO.
Se la CheckBox è disattivata il DSN verrà creato mediante codice. Sarà pertanto creata una stringa di connessione, del tutto simile a quella da utilizzare per richiamare il DSN al fine di utilizzare il database cui punta il DSN. La stringa di connessione si compone di una serie di coppie di valori. Ogni coppia contiene il proprio nome ed il valore. Una coppia è separata dalla successiva mediante un carattere terminatore (il carattere il cui codice ASCII è 0) corrispondente alla costante vbNullChar. La stringa conterrà il nome del DSN, l'origine dati cui punta,
la descrizione, il nome utente, la password e il database predefinito
in case di database multipli (righe 34-39). Creata la stringa sarà possibile richiamare la funzione di creazione del DSN. In questo esempio abbiamo inserito due OptionButton per determinare se il DSN deve essere di sistema oppure utente. Pertanto, alla riga 41, viene controllato se il primo OptionButton è attivato. In base a tale controllo viene richiamata la funzione API SQLConfigDataSource e le verrà passata la costante corrispondente al tipo di DSN da creare. Oltre a tale valore sarà passato anche il nome del driver (letto dalla casella di testo NomeDriver) e la stringa di connessione ODBCSTRING (righe 42 e 44). Il valore restituito dalla chiamata alla funzione API sarà memorizzato nella variabile RISULTATO.
È giunto il momento di controllare se la chiamata alla funzione di creazione del DSN ha avuto effetto. Sarà controllato il valore della variabile RISULTATO. Se il risultato è diverso da 0 la creazione è riuscita e sarà mostrato un messaggio informativo (riga 50). Nel caso contrario sarà mostrato un messaggio di errore (riga 52). Possiamo passare alla prova del programma. Eseguiamo il progetto, riempiamo i campi con i dati in maniera corretta.
È fondamentale impostare il nome del DSN e il nome del driver. L'elenco dei driver utilizzabili è reperibile nel gestore dei
DSN
La pressione del pulsante OK in questa situazione non creerà il
DSN direttamente ma porrà una serie di domande e richieste all'utente. |
Fibia
FBI
|
![]() |