PRINCIPALE > SOFTWARE E STRUMENTI DI PROGRAMMAZIONE

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Lezioni di Database (a cura di Paolo Malesci): le Collections in Visual Basic ed i Data Access Objects


Questa lezione, consultata da 33663 utenti, è stata giudicata di ottimi contenuti , con un'esposizione di facile comprensione e con un livello di approfondimento ottimo da 99 votanti.


Le "Collections" in Microsoft Visual Basic

Le Collections di Oggetti sono insiemi numerati di oggetti dello stesso tipo che hanno quindi le stesse Proprietà e supportano gli stessi Metodi; numerati vuol dire che i singoli componenti della Collection sono individuati dall'indice, che varia da 0 a N-1.
Ad esempio la ProprietàX del 4° elemento della Collection Pluto verrà individuata come Pluto(3).ProprietàX.
Abbiamo visto nella lezione precedente la struttura di Microsoft Jet e come sia basata sulle Collections.
Adesso le esamineremo senza voler esaurire l'argomento: metodi e proprietà verrano illustrati più avanti negli esempi di programmazione mentre per il dettaglio si rimanda all'Help Dao351.chm contenuto nella MSDN Library.

(Scarica il file Dao351.zip - 607kb)

I Data Access Objects (DAO)

» Workspaces
E' l'insieme delle aree di lavoro; se non si devono gestire più gruppi di lavoro con sicurezze diverse non è necessario preoccuparsene in quanto al primo riferimento ad un oggetto DAO viene creata automaticamente l'area DbEngine.Workspaces(0).
Il metodo più importante è per noi OpenDatabase:

Set oggettodb = [arealavoro.]OpenDatabase(nomedb, opzioni, sola lettura, connessione)

che ci consente di aprire il Db desiderato; poi il metodo Close ci consentirà di chiuderlo quando avremo terminato, ma se ce ne dimenticheremo il Sistema lo farà automaticamente a fine esecuzione del nostro programma.

» Databases
Insieme degli oggetti Database è evidentemente l'oggetto più importante: le collections che contiene ci consentiranno tutte le operazioni sui dati ed anche sulla struttura stessa del Database (stando però molto attenti perché quest'ultima è una cosa delicata!).
Dei metodi citiamo:
CreateQueryDef per creare un oggetto Query temporaneo o permanente;
Execute per eseguire una Query di comando
OpenRecordset per creare un oggetto Recordset con il risultato di una Query di selezione o per aprire una Tabella

» database.TableDefs
Insieme degli oggetti TableDef

» database.QueryDefs
insieme degli oggetti QueryDef

Gli oggetti TableDef e QueryDef contengono le definizioni delle strutture (non i dati!) delle Tables e delle Queries del Database.
Ricorreremo ad essi per conoscere o modificare la struttura degli oggetti esistenti o per aggiungerne dei nuovi a programma.

» database.Recordsets
Insieme degli oggetti Recordset.
L'oggetto Recordset contiene solo la Collection Fields ed è quello che ci permette tutte le operazioni sui dati; tramite questo possiamo aggiungere, cancellare, modificare i dati.
Esaminiamo il metodo OpenRecordset, quello che ci permette di aprirlo:

Set oggettors = oggettodb.OpenRecordset(origine[, tipo[, opzioni[, lockedit]]])

dove:
origine = una Table od una Query esistenti o una istruzione SQL;
tipo = uno dei seguenti: dbOpenTable, dbOpenDynaset, dbOpenSnapshot (quest'ultimo non aggiornabile); ovviamente dbOpenTable è consentito solo se l'origine è una Table.
Lo Snapshot è un oggetto statico: non solo non è aggiornabile ma non viene rigenerato automaticamente da MS Jet se vengono modificati i dati delle Tables o Queries dalle quali è estratto; è molto veloce ma consuma parecchie risorse in quanto tutto il Recordset viene creato in memoria.
opzioni e lockedit riguardano limitazioni all'accesso (es: read only). I metodi OpenDatabase e OpenRecordset possono essere eseguiti in due modi, esplicito od implicito.
Nel primo caso avremo del codice tipo:


Dim MioDb As Database
Dim MioRs As Recordset
'..........
'..........

Set MioDb = OpenDatabase("C:\Prove\Prova1.mdb", True, False)
Set MioRs = MioDb.OpenRecordset("Pippo", dbOpenTable)
'..........

abbiamo così aperto Prova1.mdb in modo esclusivo non read-only e quindi la Table Pippo.
Nel secondo caso abbiamo inserito un controllo Data ed abbiamo specificato le Proprietà in fase di progetto nel modo seguente:

Connect = Access (default)
DatabaseName = "C:\Prove\Prova1.mdb"
Exclusive = True
ReadOnly = False (default)
RecordsetType = 0 - Table
RecordSource = Pippo

All'atto della esecuzione del Form contenente il controllo Data MS Jet effettuerà in DbEngine.Workspace(0) l'equivalente delle istruzioni:

Set Data1.Database = OpenDatabase("C:\Prove\Prova1.mdb", True, False)
Set Data1.Recordset = Data1.Database.OpenRecordset("Pippo", dbOpenTable)

Attenzione però a non metterle mai scritte così in un programma perché otterreste un errore!
E' possibile assegnare a programma Proprietà e/o Oggetti ad un controllo Data, ma il metodo da seguire lo vedremo più avanti.

Vediamo adesso i principali metodi supportati dall'oggetto Recordset: MoveFirst, MoveLast, MoveNext, MovePrevious per spostarsi;
FindFirst, FindLast, FindNext, FindPrevious per trovare un record che soddisfa un criterio Seek solo per tipo Table con Indice - ricerca per chiave;
AddNew, Edit, Update per inserire, modificare, rendere effettivo l'inserimento o l'aggiornamento;
Delete per cancellare il record corrente;
Move per spostarsi di un numero di records avanti o indietro rispetto al record corrente o ad un Bookmark (=segnalibro).

Abbiamo citato Table con Indice, ma come si fà a dire che c'è un indice?
Usando la proprietà Index dell'oggetto Recordset; supponendo che la tabella Pippo abbia 2 indici, Pluto e Paperino, allora aggiungeremo nel nostro programma:
nel Caso1:

MioRs.Index = "Pluto"

nel Caso2:

Data1.Recordset.Index = "Pluto"

Invece del nome possiamo usare la collection Indexes mettendo invece di "Pluto":

MioRs.Indexes(0)

oppure

Data1.Recordset.Indexes(0))

essendo Name la proprietà di default di Indexes (.Indexes(0) equivale a scrivere .Indexes(0).Name).

ATTENZIONE - Quanto detto e quanto diremo è valido sia per Visual Basic 5 che per Visual Basic 6 edizioni Professional ed Enterprise. Per la edizione Standard (o Learning) esistono delle limitazioni sul trattamento degli Oggetti.
Per quanto riguarda invece i vari Service Pack ho trovato un errore per il parametro Connect del metodo OpenDatabase nella sintassi di specificazione della eventuale Password corretto solo da un Service Pack di Vb6: la sintassi corretta è "; pwd=password" (Access non va indicato) ma con Vb5, Vb5+SP3 e Vb6 dava errore e bisognava invece usare solo "; password"; con il S.P.3 di Vb6 accetta finalmente la sintassi corretta.
Non so con i Service Pack 1 e 2 perché non li ho istallati e sono passato direttamen
te al 3.

Approfondimenti

» "DAO Advanced Programming" di Dan Haught
» "ADO, DAO and RDO in Visual Basic" gruppo Microsoft
» "microsoft.public.vb.database.dao" gruppo di discussione
» "DAO" definizione secondo SearchDatabase.com
» "Choosing ADO or DAO for Working with Access Databases" gruppo Microsoft