Accedere ai database MS SQLServer dai prodotti MS · Home, i prodotti di classe ... BackOffice, che...

8
Accedere ai database MS SQL Server dai prodotti MS In casa Microsoft esistono svariate linee di prodotti. Ci sono i prodotti di classe Home, i prodotti di classe Small Office, ambedue destinati a ben individua bili categorie di destinatari, i prodotti Office, destinati agli utenti finali, dai principianti ai cosiddetti "power users", aziendali o meno, i prodotti per chi sviluppa, e quindi i vari linguaggi. Ci sono poi i sistemi operativi, Windows 95 e NT Workstation, per le postazioni client, e Windows NT Server, per i server aziendali. La linea dei prodotti BackOffice, che si affiancano ad NT, comprende numerosi server che espletano i vari servizi necessari in un server tuttofare. E' chiaro che le varie categorie ed i vari prodotti non possono essere racchiusi in compartimenti stagni, anzi, in certi casi, è proprio la sinergia tra i prodotti delle varie classi che offre la migliore soluzione di un dato problema. di Francesco Petrani In questo articolo vogliamo approfondi- re proprio una di queste forme di siner- gia, consistente nella possibilità di "ve- dere" i database, disponibili in formato MS SOL su un server aziendale, diretta- mente dai vari prodotti c1ient. sia quelli di classe Office che quelli di classe lin- guaggI. Da un punto di vista applicativo, una si- nergia di questo genere può avere due finalità principali. La prima, più complessa da realizzare, è quella di costruire applicazioni, azienda 1- mente strategiche, in cui i dati risiedono sui server ed i programmi di gestione, almeno per la parte front end, risiedono sui vari client. Per "applicazioni azien- dalmente strategiche" intendiamo ap- plicazioni che "fanno funzionare l'azien- da", in cui l'affidabilità del database, l'efficienza dei programmi, la sicurezza del sistema, ecc., siano garantiti. La seconda finalità è quella di mettere i 308 dati aziendali a disposizione dei vari uti- lizzatori, soprattutto per usi manipolati- vi, e quindi reportistici, statistici, ecc., usi assolutamente non critici in quanto producono, partendo dai data base di origine, solo degli output, senza nessun rischio di modificare i dati originali. Insomma, in un'azienda ci sono da una parte i dati e dall'altra gli utilizzatori. Il problema è quello di mettere a loro di- sposizione, nella maniera più diretta (senza intermediari), veloce (in termini di tempi di risposta), sicura (senza peri- colo di danni) e semplice (modalità ope- rative a portata di un utente finale di competenza media), i dati. Se i dati sono in formato MS SOL Ser- ver e se, dall'altra parte, gli utilizzatori dispongono dei prodotti Office o pro- grammano con il Visual Basic, sono possibili decine di strade alternative per interrogare i data base e per ricevere il risultato dell'interrogazione sugli appli- cativi client. In questo articolo vedremo qualcuna di queste strade. Premesse lato MS SQL In questo articolo parliamo solo del lato c1ient della faccenda ed eseguiremo dei semplici esperimenti di interrogazione. Chi volesse invece affrontare anche il lato server (e quindi più specificamente MS SOL Server) può leggere la serie di articoli nella rubrica Workgroup, iniziati nel numero scorso e dedicati proprio a MS SOL Server, che sono in un certo senso complementari rispetto a questo. A chi volesse approfondire l'argomento Visual Basic e SOL Server, e volesse soprattutto avere una visione più siste- matica delle varie problematiche con- nesse, consigliamo la lettura dei ma- nuali del Visual Basic (sono ancora fon- MCmicrocomputer n. 181 - febbraio 1998

Transcript of Accedere ai database MS SQLServer dai prodotti MS · Home, i prodotti di classe ... BackOffice, che...

Accedere ai database MS SQL Serverdai prodotti MSIn casa Microsoft esistono svariate linee di prodotti. Ci sono i prodotti di classe

Home, i prodotti di classe Small Office, ambedue destinati a ben individua bili

categorie di destinatari, i prodotti Office, destinati agli utenti finali, dai principianti

ai cosiddetti "power users", aziendali o meno, i prodotti per chi sviluppa, e quindi i

vari linguaggi. Ci sono poi i sistemi operativi, Windows 95 e NT Workstation, per le

postazioni client, e Windows NT Server, per i server aziendali. La linea dei prodotti

BackOffice, che si affiancano ad NT, comprende numerosi server che espletano i

vari servizi necessari in un server tuttofare.

E' chiaro che le varie categorie ed i vari prodotti non possono essere racchiusi in

compartimenti stagni, anzi, in certi casi, è proprio la sinergia tra i prodotti delle

varie classi che offre la migliore soluzione di un dato problema.

di Francesco Petrani

In questo articolo vogliamo approfondi-re proprio una di queste forme di siner-gia, consistente nella possibilità di "ve-dere" i database, disponibili in formatoMS SOL su un server aziendale, diretta-mente dai vari prodotti c1ient. sia quellidi classe Office che quelli di classe lin-guaggI.Da un punto di vista applicativo, una si-nergia di questo genere può avere duefinalità principali.La prima, più complessa da realizzare, èquella di costruire applicazioni, azienda 1-mente strategiche, in cui i dati risiedonosui server ed i programmi di gestione,almeno per la parte front end, risiedonosui vari client. Per "applicazioni azien-dalmente strategiche" intendiamo ap-plicazioni che "fanno funzionare l'azien-da", in cui l'affidabilità del database,l'efficienza dei programmi, la sicurezzadel sistema, ecc., siano garantiti.La seconda finalità è quella di mettere i

308

dati aziendali a disposizione dei vari uti-lizzatori, soprattutto per usi manipolati-vi, e quindi reportistici, statistici, ecc.,usi assolutamente non critici in quantoproducono, partendo dai data base diorigine, solo degli output, senza nessunrischio di modificare i dati originali.Insomma, in un'azienda ci sono da unaparte i dati e dall'altra gli utilizzatori. Ilproblema è quello di mettere a loro di-sposizione, nella maniera più diretta(senza intermediari), veloce (in terminidi tempi di risposta), sicura (senza peri-colo di danni) e semplice (modalità ope-rative a portata di un utente finale dicompetenza media), i dati.Se i dati sono in formato MS SOL Ser-ver e se, dall'altra parte, gli utilizzatoridispongono dei prodotti Office o pro-grammano con il Visual Basic, sonopossibili decine di strade alternative perinterrogare i data base e per ricevere ilrisultato dell'interrogazione sugli appli-

cativi client.In questo articolo vedremo qualcuna diqueste strade.

Premesse lato MS SQLIn questo articolo parliamo solo del latoc1ient della faccenda ed eseguiremo deisemplici esperimenti di interrogazione.Chi volesse invece affrontare anche illato server (e quindi più specificamenteMS SOL Server) può leggere la serie diarticoli nella rubrica Workgroup, iniziatinel numero scorso e dedicati proprio aMS SOL Server, che sono in un certosenso complementari rispetto a questo.A chi volesse approfondire l'argomentoVisual Basic e SOL Server, e volessesoprattutto avere una visione più siste-matica delle varie problematiche con-nesse, consigliamo la lettura dei ma-nuali del Visual Basic (sono ancora fon-

MCmicrocomputer n. 181 - febbraio 1998

300.00220.00

_!L,lxl~E Figura 2 - MS SOL

Server 6.5 - Il lato MSSOL della medaglia.Utilizzeremo da unaparte un server Win-dows NT con installatoMS SOL Server 6.5 edall'altra un client Win-dows 95 con Office 97e Visual Basic 5.0. Per inostri esperimenti use-remo due database.Prima di tutto quelloche si chiama Pubs eche viene scaricato du-rante l'installazionedell'SOL Server. Il se-condo lo produrremonoi stessi convertendoin formato SOL il data-base in formato MDB

l.I che si chiama Biblio eche è presente nel CDdi Visual Basic 5.0. Lochiameremo NewBi-

blio. In questa schermata "collage", presadall'SOL Enterprise Manager, vediamo in se-condo piano sia NewBiblio che Pubs, ed in pri-mo piano un momento della creazione di un ter-zo data base, il cui nome è ProvaMC.

to è quello di amministrare gli utenti, digestire l'organizzazione logica e fisicadei data base, di programmare ed ese-guire le procedure di replica, di backup,di log, ecc.Altra figura è quella del progettista deldata base, il cui compito è quello di co-struire la banca dati aziendali sulla basedelle finalità che ci si propongono Sitratta di un'attività di analisi sui dati sul-le procedure aziendali che si concretizzain un progetto di data base ed eventual-

IAC ••••• "' •• m

75.00

3Slz.(Mfl~~

L.•• om:e: iiu •• ' •• 133y 51<-(Mfl~po-

-..-IleJ OrOl.4'sA.1sels8 tiOOject.

€:i'_'m """".(dIlo)Wl ctiso:u1ls (ctbo)m_(dIlo)m jobe(dIlo)~ •.••";"'f ..•,_,

Figura l - MS SOL Ser-ver 6.5 - Schematizza-zione dei nostri esperi-menti.Scopo di questo artico-lo è quello di sperimen-tare come, dai normaliprodotti MS Office(useremo Excel, Worde Access) e dai normalilinguaggi di program-mazione targa ti Micro-soft (useremo VisualBasic) si possa accede-re, in varie maniere, aidatabase in formato Auess & Office 97MS SOL Server. Le ver- Visual Basic for Awlicalion 5.0sioni dei vari strumentiche utilizzeremo sono:MS SOL Server 6.5, Office 97, Visual Basic 5.0. Come gestore dei driver ODBC useremo quello pre-sente nel CD di Office (cartella ValuepacklDataacc).

Ipotizzando un'azienda di dimensionimedie o grandi, in cui i data base strate-gici siano stati realizzati in formato MSSOL Server, occorre prevedere una se-rie di figure professionali che garanti-scano il funzionamento e l'ottimizzazio-ne del sistema.Innanzitutto l'amministratore di MSSOL Server, che potrebbe essere lostesso che amministra NT, il cui compi-

pando" il server, piuttosto che interve-nendo sui client.

Figure professionalicoinvolte

damentali) e del volume Visual Basic &SOL Server di William R. Vaughn, pub-blicato nella collana Microsoft Press eben tradotto in italiano.Diamo quindi per scontato che sul ser-ver ci sia un data base di prova (usere-mo quello che si chiama Pubs, che vie-ne installato quando si installa MS SOLServer). Un secondo database di provalo installeremo noi, usando la modalitàautomatica permessa dagli upsizing toolper MS Access.Per collegarsi al database già disponibi-le in formato MS SOL, ma il discorsovale per tutti gli altri formati, occorre,sulla postazione client, creare una con-nessione ODBC, grazie alla quale si as-segna un nome al collegamento. Se cisi collega da Excel, Access o Visual Ba-sic, o da qualsiasi altro c1ient, basterà ri-ferirsi a questo nome.Abbiamo detto che ci occuperemo solodel lato c1ient della faccenda, ma deveessere chiaro che MS SOL Server hauna sua organizzazione da cui non sipuò prescindere.Esiste ad esempio il concetto di device,che può essere interpretato come uncontenitore "logico" di database. Esisteil concetto di database, che, come ap-pena detto, fa parte di un device e chea sua volta contiene vari tipi di oggetti:table, view, stored procedure, ecc., chepossono essere attivati dal c1ient.Parti essenziali di MS SOL Server sonotutti gli strumenti per la sicurezza degliaccessi (l'amministrazione degli utenti,che può essere condivisa con WindowsNTl. per la sicurezza e dei dati (procedu-re di backup e di replica), per il rileva-mento delle operazioni (si può definireun file di log in cui vengono riportatetutte le operazioni eseguite sui databa-se), per la manutenzione corrente estraordinaria, ed altro.MS SOL Server deve essere ben confi-gurato non solo dal punto di vistasoftware ma anche dal punto di vistahardware, in modo che anche le presta-zioni, in termini di risposta alle interro-gazioni, siano ottimizzate. Ad esempio,trattandosi di componenti BackOffice,sia MS SOL Server che Windows NTServer possono essere ospitati su mac-chine con architettura multiprocessore,con clustering dei dischi rigidi. Un mi-glioramento delle prestazioni generalidel sistema può essere ottenuto "pom-

MCmicrocomputer n. 181 - febbraio 1998 309

Tm wizard wi" JIOU aeate ari OOBe dala scuce lhat JIOU can use loccmod lo SOLS...,...

How do you wari lo desabe the dala SOI.Ice?

.ll~ IOalabaseliP!oYaliSOL S...,..

Mtcrosoft(!l Access Upsizing TooIs aMowsyou to create yoursolution in Microsoft Access and upsize it by moving your databaseto Microsoft SQL Server 'M .

The Path to SQL Server

é=>ownload Microsoft Access 9] Ups12lng Tools (2Hi •.•• ndsto2.12H)

MicrosoftC') Accass 97 is the develooment tool for auick:lvcreatinQ..- .-- AIea Iriernet

?x,

Add·.

? x

,Bemove

tonfig.I ••..

_SQLS""""do)'OU_toccmodIo7S..-. jACTMSRV

\lIhat name do)ICIUwn. lo use lo ,eIet lo the data :scuce?

N_ lWìi!lli1ì

U••• OSN Sl"Iem OSN Ine OSN 1 OOBe 0 ••••• 1 TrOCÒ1llI_ 1Sl"Iem Oala S••• ces:

Name OriYtwAdWIOfk, Mc.owft_ O,iver('.nd>JNEWlIIBUO SOLS...,..TESTPUBS SOLS...,..

l':

':M'f'·li'§"gl·*'I,m.!i.!,

___ ~_à_Yanb_'>_ .lIt>Ua

Figura 3 - MS SOL Server 6.5 - Configurazione della connessione ODBC.Irapporti tra client, ovvero tra le applicazioni presenti sulla postazione client,e server, ovvero i due database, in formato SOL, presenti sul server NT, so-no intermediati dal driver ODBC, che va opportunamente configurato sullapostazione client. Le varie impostazioni della connessione ODBC valgonoper qualsiasi tipo di banca dati si voglia raggiungere. Nel nostro caso abbia-mo creato la connessione TestPubs che accede al database Pubs disponi-bile sul server, che a sua volta si chiama ACTlVESRV. In un secondo mo-mento creeremo la connessione NewBiblio, verso il database NewBiblio.Oua/che cosa in più, su concetto di driver ODBC, la diciamo nel testo.

Figura 4 - MS Access 97 upsizing tool - Come al solito molto del materiale sitrova su Internet.Dal sito Microsoft potete scaricare molto materiale utile per i vostri esperi-menti. Innanzitutto Microsoft Access 97 upsizing tool, che vedremo subitodopo. Si può scaricare anche una nuova versione, per chi avesse la vecchia oper chi non l'avesse affatto, del file Biblio.mdb. Altro sito da tenere sotto con-trollo è www.microsoft.com/data nel quale potete trovare materiale illustrati-vo delle nuove strategie di accesso ai dati e parecchio materiale d'esempio.Citiamo quello relativo alla nuova tecnologia UDA (Universal Data Access)grazie alla quale le varie tecniche di accesso ai dati vengono, in un certo sen-so, unificate, soprattutto in previsione della diffusione dell'accesso ai dati at-traverso Internet.

mente nella sua realizzazione. E' neces-saria una competenza da analista eduna conoscenza di MS SOL Server inquanto è con quest'ultimo che sarannorealizzate tabelle, procedure, ecc.Nel caso in cui si persegua la filosofiadel data warehouse (magazzino dei datiaziendali), è necessario prevedere unospecialista SOL a supporto delle richie-ste degli utenti. Se ad un utente servo-no, per svolgere la propria attività, sot-toinsiemi di dati provenienti dai databa-se aziendali, è bene che questi dati sia-no preparati da una procedura, scrittanel linguaggio specifico di MS SOLServer, che viene eseguita dal serverstesso periodicamente o a richiesta. Inpratica questo esperto realizza una sto-red procedure, memorizzata all'internodi MS SOL Server, che viene richiama-ta dal client dell'utente ma viene ese-guita dal server.Ad utente particolarmente esperto sipotrebbe concedere una certa libertàd'azione, nel senso che gli sarà con-sentito di realizzare in proprio le inter-rogazioni utilizzando strumentazioniclient.Ultima figura da prevedere, nel caso sirealizzino procedure evolute, è quelladel programmatore, figura che potreb-be coincidere, ma non obbligatoriamen-te, con il progettista del database. Co-

stui deve conoscere il linguaggio che sidecide di usare per realizzare l'applica-zione (ad esempio MS Visual Basic) e ildata base che ospita i dati (ad esempioMS SOL Server).Le più recenti tecniche di programma-zione prevedono lo sfruttamento diun'architettura c1ient/server a tre livelli,in cui, sostanzialmente, anche buonaparte dei programmi, escluse le soleprocedure che gestiscono il front end,risiedano sul server. Ma questo è un ar-gomento fuori tema, che tratteremoun'altra volta.

Elenco sintetico deinostri esperimentiCondurremo i nostri esperimenti utiliz-zando un server NT 4.0, con installatoMS SOL Server 6.5 (figura 1). Lavore-remo sul data base di prova Pubs e suun altro data base di prova che costrui-remo dal nulla.Daremo un'occhiata, più che altro perambientarci, ad esempio per individua-re le tabelle, per "vedere come è fat-ta" una stored procedure, ecc., a MSSOL Server (figura 2 e figura 14).Poi ci trasferiremo sul client, nel qualecreeremo una connessione ODBC (fi-

gura 3) che proveremo subito per ac-cedere al database Pubs, da Visual Ba-sic, da Access, da MS Ouery (e quindida Excel), da Word.A questo punto faremo un intervallodedicato allo studio degli Access upsi-zing tool, scaricabili gratuitamente daInternet (figura 4). Si tratta di due stru-menti molto comodi quando si debba-no far dialogare database SOL e posta-zioni c1ient. Il primo dei due è un brow-ser che, lanciato da MS Access, per-mette di navigare all'interno del data-base SOL (figura 5), il secondo è unwizard che permette di creare, parten-do da un database in formato Access(desinenza MDB), direttamente un da-tabase SOL. Per provare questa proce-dura partiremo dal databaseBiblio.mdb, in dotazione a MS VisualBasic 5.0, di cui vediamo in figura 6 lastruttura in termini di tabelle e relazio-ni.C'è da aprire una piccola parentesi de-dicata a chi dispone di Access ma nondi Visual Basic. Sia gli upsizing tool cheBiblio.mdb (in una versione più aggior-nata, che è quella che abbiamo utilizza-to anche noi) sono scaricabili dal sitoMicrosoft. Ouesto permette di esegui-re buona parte dei nostri esperimentianche a chi non disponga di Visual Ba-sic.

310 MCmicrocomputer n. 181 - febbraio 1998

illDT_1 élQuerf I~-l •R_I 12 __ I.•-..I

I

I!IJ .wl,o," ~m_. _.1:Tlle> ~

---------~

@:fl§NtMfi16k..-•....•e....,."" •....•_ ...e..,StateZ••TeIeohoneFaxe_

..::J

.dact t.yp., pub_id. titie •. t1th_:lcl.l aU_OTcI.

H_ •• substringo (au_lnaae. 1.15),~d_ •• J. ••(l'o. eltl •• , .~bor •• titl ••\ltbol'

ara titl ••.title_ld •itl •• uthor. titla_id AHDauthors. au_lel •itl •• uthor _.u_1d

.un> pub_id h NOI NULLorcl.1" by pub_id. typaCOJ'lPtJtI aV9Iytd_"ln) BY pub_1d.. typaCOKPUTIayq(yt.d_salu) BY pub_id

<iu:o<n •...•••...jobo••••_no•..••.•....fOY'Ched.-stareItìle8l1hor,..

Figura 5 - MS Access 97 upsizing tool- Cominciamo con il browser.Scaricati gli upsizing tool ed installati sulla postazione client possiamo atti-varli dal menu Access passando per la voce strumenti aggiunti. La primadelle due procedure che vengono aggiunte è quella che permette di naviga-re all'in temo di una connessione ODBC. In questa figura vediamo un collagedi tre box create dal browser. La prima mostra il contenuto, in termini di ta-ble, view, default, rule, proc (stored procedure) del database Pubs, ed inparticolare stiamo vedendo la lista delle tabelle. Nella seconda vediamo leproc e nella terza la sintassi di una specifica procedura, che si può modifi-care, anche inserendovi dei parametri. Insomma si riesce ad intervenire, la-vorando esclusivamente in Access, non solo sui dati, ma anche sui compo-nenti del database SOL.

Figura 6 - Biblio.mdb - Il nostro database di prova.Il secondo tool degli upsizing tool è quello che converte un normale da-tabase, già disponibile e pieno di dati in formato Access, in un databasein formato MS SOL Server. Come database di partenza usiamo quelloche si chiama Biblio.mdb ed è presente nel CD del Visual Basic oppure èscaricabile, in un'edizione più aggiornata, dal sito della Microsoft dedica-to al Visual Basic. Riguarda la problematica biblioteca, in cui ci sono letabelle degli editori (publisher), degli autori (author), dei titoli (title) e perrisolvere il rapporto tra titoli e autori (un titolo più autori, un autore più ti-toli) c'è una quarta tabella title_author. I titoli sono veri e sono oltre10.000. Ouindi gli esperimenti risulteranno significativi anche in termini divolumi.

cui risultato viene scaricato diretta-mente sul foglio di Excel. Nella figura 9vediamo proprio il foglio Excel ed, inprimo piano, la box dalla quale si deve"passare" per accedere al nostro data-base SOL.Indipendentemente dall'uso e dallapresenza degli upsizing tool, se si vo-gliono utilizzare da Access i dati dal da-tabase SOL sono praticabili varie stra-de.La più diretta è quella di creare delletabelle" attached" con il comando (sia-mo in Access) File - Carica dati esterni- Collega tabelle. A questo punto le ta-belle sono utilizzabili come se fosserotabelle di Access a tutti gli effetti. Nonsono ovviamente possibili modifiche alivello di struttura. Altra possibilità èquella creare delle query di tipo specifi-co (comando Ouery - SOL specifico -Pass-through). Occorre scrivere a ma-nina (non si può usare il ObE) un'istru-zione SOL nello specifico linguaggioSOL del server. Tale istruzione salta ilmotore Jet di Access e viene eseguitadirettamente dal server. Se poi fosserodisponibili delle stored procedure, sipossono eseguire, dall'interno dellaquery pass-through, con l'istruzioneExec nomeprocedura. Tutte queste co-se appena dette per Access le abbia-mo riassunte nel collage di figura 10.

/l''')

Il modo più semplice per provare lanuova connessione è quello di esegui-re il comando Dati - Carica dati esterni- Crea nuova query di Excel, che lancial'accessorio MS Ouery (in figura 8),che permette di costruire in un am-biente guidato, di tipo ObE (Ouery byExample), la nostra interrogazione, il

ElCIGttoSQlServer:AvailbtaTabIet:

Figura 7 - MS Access97 upsizing tool - Duevideate del wizard cheguida l'upsize.E' chiaro che per un ef-ficace utilizzo di talestrumento occorrereb-be una buona cono-scenza sia dell'ambien-te SOL Server chedell'ambiente Access,in modo tale che i varielementi presenti nelsecondo siano corretta-mente convertiti in ele-menti del primo. Nellapeggiore delle ipotesi sipuò convertire solo lastruttura delle tabelleed il contenuto dellestesse, ignorando le re-gole di validità, le rego-le relazionali, gli indici, equanto altro, impostatoin Access, non si sap-

pia convertire in SOL. Oui vediamo due momenti dell'''interrogatorio'' eseguito dalla procedura di auto-composizione. Chiameremo la connessione NewBiblio casi come il nuovo database.

Installati gli upsizing tool e caricato Bi-blio.mdb possiamo lanciare il wizardche crea il nostro nuovo database. Infigura 7 ne vediamo due momenti.Tanto per capirei il server si chiamaACTIVESRV, il database lo abbiamochiamato NewBiblio e lo stesso nomelo abbiamo affibbiato alla connessione.

MCmicrocomputer n. 181 - febbraio 1998 311

s

•••l

Al

A1 •2 6-211I5652-i1i-5-." Pro3 lJ.3:II5W'-!>-1 The 9.onforj!A ll-211156.»2-'9'"PPIJing ZoM io- J'ICT-li B-;!Il$S2$6 _", Pro6 ll-2DI5652-i1i-5iIr>lenoà>rlgPror \1>0T_C--1 0-201_2-\ TheHa""'Jd

-!.. 6-2DJll!BI.2-\The""""J d """'I):9 lJ.2OIf33!i.8.\SIi1"'"," &f e-.106-211~~, .tI 6-201:876'-3<6~U:>90 ~,-~~--- •.•••••.••••.,.....-12 ll-211Ja7ll<.3<6~L<lfll ~130-~~1 .14 0a!i37\J.3lj ~. dPt15 0-2Dl~3 Sll*f'Gudl u.v-:16 Om537\J.3lj ~.dPt _~ ~ _

t1 6-2DlI6l-3'!l Pro,..".,."".18 0-2111~~~ -f'Gudl ~Il' ~

t

:-e:..-.c~t'_ • .IIIle".."'-iUIID-r_

0-_'5-1(l.2Ill!iO»2-'(l.2Illliil'iZ<85ili-2IJ15lli2<8'S

•-

e--r.... l'I_'~_.-Il-

tt: liiIoliodIioo ~ '- 1,.. •••• s-o !9*e 1

I~ .:ffil~ t

Figura 8 - MS Ouery 97 - Lo strumento generico di interrogazione di MSOffice.Oui vediamo in azione lo strumento MS Ouery, che viene installato quandosi installa Office 97, e che può essere richiamato direttamente da Excel concomando Dati - Carica dati esterni - Crea nuova query. L'ambiente operati-vo, del tutto analogo all'ambiente query di Access, permette in manieraguidata di creare una interrogazione sui nostri due data base, raggiunti tra-mite le connessioni TestPubs o NewBiblio.

Figura 9 - MS Ouery 97 - A servizio di Excel.Oui vediamo, in un collage, sia if nostro foglio Excel riempito con i dati pro-venienti dall'MS Ouery sia la box che viene visualizzata quando si accedealla connessione NewBiblio. Una volta creata la query e scaricati i dati sulfoglio sono attivabifi, ad esempio attivando if quick menu sull'area con i da-ti, i comandi di Aggiornamento dei dati oppure di Modifica della query. Inaltre parole l'area con idati rimane legata all'origine stessa dei dati. L'interaoperazione di query si può parametrizzare e si può inglobare in una macro.In questo modo si riesce a creare una procedura generalizzata di interroga-zione del data base SOL, eseguibife totalmente da Excel.

MS Remote Data Object (il cui file èMSRD020.DLl), in modo che siano in-seribili, nel codice VB, anche le istru-zioni RDO. La programmazione RDO,così come quella DAO, è praticabileanche da Visual Basic for Applicationversione 5.0 e quindi anche in tutti iprodotti Office compatibili.

ODBC è una delle voci richiamabili dalpannello di controllo di Windows 95.Permette di creare dei system datasource ODBC, ovvero delle connessio-ni a fonti di dati, identificabili con unnome, imposto da noi a livello di c1ient(lo chiamiamo TestPubs, che fa riferi-mento ad una macchina server, nel no-stro caso il server si chiama ACTIVE-SRV, e ad un data base in essa disponi-bile, nel nostro caso usiamo Pubs, in-stallato con MS SOL Server). Eseguitequeste semplici impostazioni diventapossibile riferirsi, da qualsiasi applicati-vo client, alla connessione stessa perreperire i dati. E' chiaro che non bastaconoscere il nome della connessione,ma occorre anche sapere come è fattoil database, ovvero quali sono le tabel-le ed i campi.

Creazione ed uso dellaconnessione OOSC

4-

base SOL Server, il remote data con-trol (lo vediamo nelle figure 11 e 12),oggetto specializzato, disponibile solonella versione Enterprise di Visual Ba-sic 5.0.Il secondo invece sfrutta la program-mazione RDO (lo vediamo in figura 13e 15, che mostra il listato in edizioneintegrale). Occorre caricare la libreria

-- iFigura 10 - MS Access97 - Tabelle "attached"e query specifiche.Verificato come Excelpossa approfittare del-le ottime capacità diMS Ouery anche perinterrogare databaseSOL, passiamo ad Ac-cesso La prima cosache vediamo è come sipossa costruire un'ap-plicazione client cheusi le tabelle messe adisposizione dal nostrodatabase Pubs, in for-mato SOL, raggiuntotramite la connessioneTestPubs. Con il co-mando File - Caricadati esterni - Collegatabelle si creano delletabelle "attached", che

possono essere utilizzate per alimentare maschere o report, ecc., come se fossero normali tabelle Ac-cesso Se invece occorre pretrattare i dati, creando ad esempio delle tabelle virtuali ottenute da queryeseguite sul database di origine, la strada migliore è quella di creare, nell'ambiente SOL Server, unastored procedure e di richiamarla dall'ambiente client, come query pass-through. La sintassi è banale.

-

Un'altra strada percorribile da Accessè quella che passa attraverso la pro-grammazione degli oggetti DAO oRDO, che però vedremo con VisualBasic.Per finire vi proponiamo due esercizisviluppati con MS Visual Basic Enter-prise Edition.Il primo utilizza, per collegarsi al data-

312. MCmicrocomputer n. 181 - febbraio 1998

"XI

O

.'"3·..J~

01O-_l . JdXl8eYeIO llHlOFffffA>O·J~stEdIori

L

"•

~u ~!:HillE_' lill!l:L!illJ noi

AfibI

C" ,I """'1Cdor,I-1f l!1IoS •••••• m•••••• E1

Il•••••-1-.•-----------e-di------------

illl 1--·-.-om----.-"'cloI-t>y----c.n---d-.

~

"...t.tJ"

.!glxl

PR{NTICE HAU.CO~PlF'RENTICEHAU. CO~PlPJmc.HalOiv.oISimorPI~H"'_P,~H"'_.PI~H"P!IPAENTICE HAll TRAOE •

2"46

227.95.2

C-:""_" 001_ •••••• "'" 2:A_ ..•...AdvIllCOCl_o '(),*"ed ""' ••.•••••• : ho ~AdvIllCOClLowll ,,,,

LiliU L!illJ noi

"

Privata Suh Cl_Cl1cll:(.I.r •• A~ Intaqar)••.••• 1.~ .• h'c. t-itl •• "l'a PubID•.•••• , Cl .• oundT •• e0%.'01. ••PZ.•• fru'b

Inei S'd'fi'''.''''.@

Figura Il - MS Visual Basic 5.0 - Enterprise Edition - Utilizzo del remotedata control - Esecuzione.Anche partendo da un'applicazione Visual Basic esistono numerose stradealternative per raggiungere dati disponibili in formato SOL Server. Si puòusare il normale data control, passandogli tre o quattro proprietà, oppurela programmazione degli oggetti OAO. Se si dispone della versione Enter-prise di VB si può usare il remote data control, oppure si può usare la pro-grammazione degli oggetti ROO (remote data object). Oueste strade sonoabbastanza simili alle prime due, solo che sono specializzate per lavoraresui dati disponibili sul server. Esistono altre strade, più impegnative, adesempio quelle che accedono direttamente alle OLL per SOL, ma che nonvedremo in questa sede. Nel primo esperimento useremo il remote datacontrol, collegato alla connessione NewBiblio.

Figura 12 - MS Visual Basic 5.0 - Enterprise Edition - Utilizzo del remote da-ta control - Impostazione delle proprietà.L'obiettivo è quello di elencare i titoli del nostro database NewBiblio, sele-zionandoli per editore. Usiamo due remote data control (ROG), il primo le-gato alla tabella publisher (editori) ed il secondo legato ad una query da ge-nerare dinamicamente. AI primo ROC colleghiamo una OBCombo (proprietàRowSource della OBCombo) che visualizza inomi degli editori (proprietà Li-stField, campo Company _name) ma che assume il valore (proprietà Bound-Column, campo PublO) del suo codice. AI click sulla OBCombo, quindi di-namicamente, generiamo un'istruzione SOL che seleziona tutti i titoli diquell'editore. La nuova istruzione la passiamo al secondo ROC che a suavolta alimenta una OBGrid. Si tratta di· applicazioni tipiche di Visual Basicche un utilizzatore "medio" deve saper realizzare in cinque - dieci minuti.

Internet (dove e come lo vedete in figura4) e che si installa come aggiuntivo diAccess 97, all'interno del quale inseriscedue nuove voci menu:Strumenti Aggiuntivi BrowserStrumenti Aggiuntivi Upsize to SOL Ser-verLa prima permette, noto il nome dellaconnessione, di navigare all'interno deldata base e di vedere le table, le view, lerule e le procedure. Una volta analizzatigli elementi ci si può collegare alle tabel-le (tabelle attached) e si possono esegui-re delle query di tipo pass-through, cheeseguono direttamente le stored proce-dure residenti sul server.Tutt'altra finalità ha il wizard che esegueil processo di upsize. In pratica produceun database SOL partendo da un "mo-dellino" fatto con Access. Ho usato laparola modellino per indicare quello cheè il vero scopo degli upsizing tool. Nontanto quello di evitare di costruire lestrutture dati lavorando con Access anzi-ché con SOL Server, quanto quello diconsentire di lavorare per prototipi anchein applicazioni aziendali importanti. Co-struire un'applicazione locale con Accessè almeno venti volte più economico delcostruirla direttamente con SOL. Con ilprototipo è già possibile eseguire tutti itest operativi, necessari a convalidare lacorrettezza del data base e il funziona-

".c.l«J"

FRAHCESCOP

l'S.46.16

pS.46.19

pS.46.39

MSAccessupsizing toolAbbiamo visto come ci si collega ad undata base SOL già disponibile (Pubs).Vediamo ora come, direttamente dallapostazione client, sia possibile promuo-vere in "Serie A", ovvero convertire inSOL Server, un data base già realizzatocon Access. Occorre utilizzare l'utility dicui abbiamo parlato prima, scarica bile da

Il E_~JE"l>iROO I

E"l>i_PIoc.I

IFb•. Tom

ITECSPEC

m~~::~::~:::~:~n::n~~~C:~4::~o0.S-nim M "'!'lI !il:r.r;n". 111. 1", ~r.l"';nn. r. l",

ritglli!i::i§,;tiI.-.iJ! .!gl xl

Figura 13 - MS VisualBasic 5.0 - EnterpriseEdition - Utilizzo dellaprogrammazione deglioggetti OAO e ROO -Esecuzione.Il secondo programmarealizzato con Visual Ba-sic mette a confrontotre metodi di program-mazione. Lo scopo, ba-nale, è quello di esegui-re una query che "pe-sca" dati dalle quattrotabelle del databaseNewBilbio e li scorre dalprimo all'ultimo (sonoquasi 13. 000 record). Laprima volta usiamo laprogrammazione OAO,la seconda la program-mazione ROO, la terzainvece lanceremo unastored procedure creatain SOL. Eseguiremo an-che il cronometraggio delle prestazioni, da valu-tare cambiando i vari parametri di configurazio-ne, che, soprattutto nella programmazioneROO, alterano pesantemente i tempi di risposta.

Va detto che, a questo punto, si lavoradirettamente con i database SOL, equindi entrano in ballo tutte le proce-dure di riconoscimento degli utenti de-finiti su questo server.Nei nostri esperimenti ci limiteremo adeseguire delle interrogazioni.

MCmicrocomputer n. 181 - febbraio 1998 313

Private Sub P2_Click()strConnect = "~: CalI ViaSet En = rdoEnvironments(O)En.CursorDriver = rdUseIfNeededSet CN = En.OpenConnection_

(dsName:="NewBiblio", Prompt:=rdDriverNoPrompt, ReadOnly:=False, Connect:=strConnect)Set RS = CN.OpenResultset(Name:=SQ, Type:=rdOpenDynamic, LockType:=rdConcurValues)Call Inizio: Do While Not RS.EOF: ' VISUAL2

C = C + l: RS.MoveNextLoop: Call Fine

End Sub

x

vbHourglass

DoEvents

vbHourglass

False, False, CC)

o: Screen.MousePointer

TE PROCEDURE STOREPl ASAuthors. Autbor. Title_j,uthor. ISBN.

itles. Title. Publishers.Coapany_NaaeFROK«Publishers INNER301M Tltles OHPublisbers.PubID • Titles PubID)INlfER 301M Ti tlc_lutbor OHTitles. ISBN • Title---tutbor ISBN)IlOfER 301H Autbors OH Title_~utbor.Au_IO • Autbors Au_ID

JSTC>lB'1 (<1>0) :::J ~ ~il exists (select • frea sysobjects

bere id • obJect_1.d( 'dbo.STOREPl') a.nd S'Ysstat '" Oxf • 4)drop procedure doo.STOREPl

RS!Company_Name:

Time: DoEvents: MsgBox C

RR!Company_Name: DoEvents

'JI fio Y- ~.....1... M__ llbjocl \&dc>w l:l'" _

-.m ~ ~ ofllliillliill_111 ~ ~ ~ ~---IACTMSRV :::J ~

ll6::rosoft SQt server.

B ~SQL65Il ACTMSRV (SGI.S«_ 650)

.SQL ••••

DoEvents: C

o: Screen.MousePointer

RR!Title: T3

RS!Title: T3

vbDefault: M2

""o M2

Figura 14 - MS SOL Ser-ver 6.5 - La nostra storedprocedure Storep l.Vediamo come è fatta lastored procedure co-struita direttamente inMS SOL Server e richia-mata dalla nostra appli-cazione VB. E' evidenteche un'applicazioneclient/server è ottimizzataquando ognuno dei duecomponenti, il server edil client, dà il meglio disé. La stored procedureconfezionata dal pro-grammatore SOL costi-tuisce sicuramente la _strada più sicura e velo-ce di accesso ai dati, mentre l'interfaccia client costituisce la modalità più amichevole per richiedere tali dati.

Sub Form_Load ()"SELECT Authors.Author, Title_Author.ISBN, Titles.Title, Publishers.Company_Name"SQ + " FROM ((Publishers INNER JOIN Ti tles ON Publishers. PubID = Titles. PubID) "SQ + " INNER JOIN Title_Author ON Titles.ISBN = Title_Author.ISBN) "SQ + " INNER JOIN Authors ON Title_Author.Au_ID = Authors.Au_ID;"SQ

PrivateSQSQSQ =SQ =TO =

End Sub

Private Sub Pl_Click()CC = "ODBC; DSN=NewBiblio; UID=sa"Call Via: Set DD = OpenDatabase("NewBiblio",Set RR = DD.OpenRecordset(SQ, dbOpenSnapshot)Call Inizio: Do While Not RR.EOF: ' VISUALl

C = C + l: RR.MoveNextLoop: Call Fine

End Sub

Dim DD As Database, RR As Recordset, QD As QueryDefDim EE As rdoEnvironment, CN As rdoConnection, RS As rdoResultsetDim SQ As String, SZ As String, C As Long

Sub VISUALl ()Tl = RR!Author: T2

End Sub

Sub VISUAL2 ()Tl = RS!Author: T2

End Sub

Private Sub p3_Click()strConnect = "o: SP = "exec storepl": Call ViaSet En = rdoEnvironments(O)En.CursorDriver = rdUseIfNeededSet CN = En.OpenConnection_

(dsName:="NewBiblio", Prompt:=rdDriverNoPrompt, ReadOnly:=False, Connect:=strConnect)Set RS = CN.OpenResultset(Name:=SP, Type:=rdOpenDynamic, LockType:=rdConcurValues)Call Inizio: Do While Not RS.EOF: ' VISUAL2

C = C + l: RS.MoveNextLoop: Call Fine

End Sub

Sub Inizio ()Ml = Time: DoEvents: C

End Sub

Sub Fine ()Screen.MousePointer

End Sub

Sub Via ()MO = Time: Ml

End Sub

Figura 15 - MS Visual Ba-sic 5.0 - Enterprise Edition- Utilizzo della programma-zione degli oggetti DAO eRDO - Listato.Nel listato notiamo: le di-chiarazioni iniziali, la lungaistruzione SOL che esegueun join sulle quattro tabelledel nostro database, le treroutine che stiamo provan-do, la prima DAO, la se-conda RDO e la terza cheesegue sul server, lancian-dola dal c!ient, una storedprocedure creata con SOLServer. Le ultime routinesono quelle che calcolano itempi di esecuzione e li vi-sualizzano sulla formo

mento delle sue procedure.Una volta a punto il prototipo lo si puòconvertire, a costi bassissimi, in un'ap-plicazione aziendale.Per quanto ci riguarda abbiamo esegui-to l'upsize del database Biblio.mdb, edabbiamo chiamato NewBiblio la connes-sione.

Un po' di esperimentiAbbiamo parlato di SOL Server, di con-nessioni ODBC, di upsizing tool ed ab-biamo brevemente descritto gli eserciziproposti. Pensiamo che, con questebrevi descrizioni e con l'aiuto delle figu-re qui intorno, siate in grado di eseguirlianche voi e sugli stes-si nostri dati che trova-te in MS SOL Servered in Visual Basic.Abbiamo lavorato conMS Ouery e con Ex-cel, per creare delle in-terrogazioni il cui risul-tato viene riversato sulnormale foglio di lavo-ro per le ulteriori ela-borazioni.Abbiamo lavorato conAccess, per collegarcia tabelle esterne SOL,per eseguire delle sto-red procedure che perAccess sono dellequery analoghe alle al-tre. In pratica sia le ta-belle "attacched" chele query pass-throughcostituiscono delle ta-belle virtuali e posso-no essere utilizzateper creare maschere,per creare report.

314 MCmicrocomputer n. 181 - febbraio 1998

x

, '.

.Ip'xl:::I

dinamicamente

D2NewBiblioimpostatoGlD2

co dei publisher, leggendo, con la tec-nologia OAO, direttamente il nostro da-tabase SOL. lMY5

Ultimissima edimportantissima cosaVisual Basic 5.0 e Visual Basic for Appli-cation 5.0 sono del tutto allineati in ter-mini di .. programmabilità. Ouesto alli-neamento riguarda anche le routine diaccesso ai data base, che se scritte be-ne per il VB funzionano sicuramente an-che in VBA 5.0. Nell'ultima figura vedia-mo una macro VBA scritta per Word 97,che produce un documento con l'elen-

Text assume il valore del suo codiceche è quello che serve per la selezionedei titoli.A questo punto gestiamo l'evento c1icksu Cl, con il quale confezioniamo unanuova istruzione SOL che passiamo di-namicamente al secondo remote datacontrol. Il listato, minimo, si può legge-re in figura 11.Il secondo esercizio VB5 (figure 13 e15) sfrutta sia il codice OAO che il codi-ce ROO. Mette a confronto tre metodidi accesso da programma: OAO, ROO eii richiamo di una stored procedure, chevediamo in figura 14. Vi proponiamo il li-stato completo e un po' di commentonelle didascalie.

NameDataSourceNameSQLNameRowSource

W ••••CIO~Olt 'WOId Documenlol 1IIr:l

DINewBiblioSelect * from publishers order by company_nameClD1Company_namePubID

DBGrid

Remote Data Contro l

Figura 16 - MS Word 97 - 'rlflo tI<d'U ~ r.we _. lLa prova del 9.Tutti i metodi di accesso ai 'D ~ g a~'" ~ <J ..,. "'.dati praticabili con Visual [""... • Mal ••• G IBasic 5.0, sono, per defini- • B' , '1: ' . , . , . ). , . 4' , .•. , . \: ' . l' , .•.

zione, utilizzabili da tutti gli •• v.ESTY1<W v.ESTY1<WPR

applicativi che utilizzano 99 ACAOfMOC AC""'MOC PRcome linguaggio macro il 100 ROCHARDDIRlMN ROCHARDDIRlMN

VBA 5.0, primi tra tutti j ~: :':THOUSE _:.,1jIfitjifrimmcomponenti di Office 97. 103 PAU.HfIlOOKfS 1_010) :::I 1(__ )Qui vediamo un elenco ri- ~: ~~aHALl ill DDA. Datu... li. A.. beol'4sKcavato dalla tabella publi- 106 ••••••• "" SU» "~,olllsher del nostro database di 101 MOROANKALFMNoIN CC • "ODBCi DO- •• "Si.bl1o; Ull) •••.•

prova NewBiblio e realizza- ~: =~ ::t.·D~S=L:~':=-••~~~~:;:o.. lal •• , 'al ••• CCIto con una macro di Word 110 WHFREEMAN Se~ alt • DD.Openbcordset(SO. dbOpenSnapshot)

(in primo piano) che acce- ~~~ ::::~EEORUYTe; Do Wluh Noe n.IO'

de ai dati direttamente. uti- 113 VENTURE ~~l:C:~~~~:~:~~Zl: :'t'~d4UC'z1)4: ::1: a:.;;ddsCZ)lizzando la tecnologia DAO. 114 NlER lIJRARYASSN Sd.ceion. typ"ar~nph

Se vediamo il problema dal ::: :'~ L::~"v••utpunto di vista Word, è co- 111 "'eriice.... 'n' su>me se Word fosse un ge- ::: ~~~:IT .. illneratore di report di dati 1 AH TRANDREINHOlD VAHNOSTRANDREINHOlD(SHORTDISClpresenti in un qualsiasi da- • D.:> 4tabase. E' necessario, per- I Se I Rl edché il programma possafunzionare, referenziare la libreria OAO 3.5, che viene installata sia da VB 5.0 che da Office 97.

Se l'utente seleziona un editore nellaOBCombo, viene visualizzato il nomedell'editore e la sua proprietà Bound-

I secondi due oggetti sono un nuovoROC e una OBGrid:

però utilizzano il motore Jet. al contrariodi ROC e ROO.Non parliamo neanche delle altre moda-lità, ancora più sofisticate, che sfruttanocomponenti che si trovano solo nei Pro-grammer's Toolkit. come le Visual BasicLibrary far SOL Server.Cerchiamo di capire come funziona ilprimo esercizio guardando la figura 11.L'utente sceglie da una OBCombo uneditore (es. PRENTICE HALL) e una OB-Grid viene riempita con i title pubblicatida quell'editore.Utilizziamo due controlli ROC (che ve-diamo in alto ma che potrebbero essereimpostati come non visibili). Il primo, le-gato alla tabella publisher, alimenta unaOBCombo per mostrare in essa l'elencodegli editori. Elenchiamo le proprietàfondamentali dei due primi oggetti:

NameRowSourceListFieldBoundColumn

NameDataSourceNameSQL

Remote Data Control

DBCombo

tantissime possibili, la prima che sfruttail remote data control (ROC) e la secon-da che sfrutta la programmazione deglioggetti ROO (remote data object). Oue-ste due modalità sfruttano componenti(il controllo ROC e la libreria ROO) pre-senti sono nella Enterprise Edition delVisual Basic 5.0.Con la versione Professional (che nonha né ROC né ROO) si può ricorrere alclassico data control oppure alla pro-grammazione degli oggetti OAO, che

Prima di parlare dei nostri due esercizi,realizzati con Visual Basic, dobbiamo fa-re una premessa.Visual Basic non ha un suo specificoformato dati. La Microsoft. casa produt-trice del Visual Basic, ne suggeriscedue: il formato MS Access, per le appli-cazioni monoutente o per le applicazioniche lavorano su reti medio-piccole, e ilformato MS SOL, per le applicazioni de-stinate a lavorare su grossi volumi di da-ti e su reti medio-grandi.Nel "pacchetto" Visual Basic 5.0 è pre-sente anche una versione" per svilup-patori" dell'SOL, che consente comun-que di completare e di testare l'applica-zione, prima ancora di aver acquistatoMS SOL Server.Lavorare con data base in formato SOLvuoi dire cominciare a pensare in termi-ni client/server.Per Microsoft un'applicazione client/ser-ver è un'applicazione che ha i dati sulserver, i motori di accesso ai dati sulserver, i componenti principali dell'appli-cazione anche questi sul server, e solo icomponenti front end, quelli che costi-tuiscono l'interfaccia che vede fisica-mente l'utente, sulle postazioni c1ient.Non vogliamo, in questa sede, parlaredi c1ient/server, ci limitiamo a mostrareun paio di esercizi, realizzati con VisualBasic, Enterprise Edition, che sfruttanocomponenti e librerie orientati al servere quindi sostanzialmente adatti ad esse-re usati con data base SOL.Sperimentiamo solo due modalità tra le

MS Visual Basic, liscioe for Application, eMS SOL Server

MCmicrocomputer n. 181 - febbraio 1998 315