VISUAL BASIC – DATA CONTROL – QUERY

Gestire i Data base in Visual Basic è relativamente facile, infatti microsoft mette a disposizione una serie di utility adeguate ai diversi livelli di conoscenza dell’utilizzatore e in funzione dell’applicazione che si deve sviluppare.

Il Data Control è un controllo che permette anche agli utilizzatori meno esperti di sviluppare applicazioni efficienti con l’utilizzo dei data base.

DATA CONTROL e RECORDSET

Il Data Control è un controllo VB che permette il collegamento tra un Data Base e altri controlli Visual Basic detti Bound Control.

Il collegamento avviene mediante i Recordset, ossia un insieme di record, prelevati da una tabella localizzata su disco e trasportati in memoria per essere elaborati.

BOUND CONTROL

I bound controls sono gli oggetti utili a rappresentare, anche, informazioni provenienti da un data base.

Text Box, DBGrid, DBList ecc…

Esempio:

 

 

 

 

 

 

 

REALIZZAZIONE PRATICA

Dopo aver tracciato sul Form di visual basic gli oggetti utili alla connessione al data base (cfr figura sopra) si devono assegnare le seguenti proprietà ai singoli oggetti o controlli.

Proprietà del Data Control:

Name : Dbmagazzino (è il nome del controllo utile per stabilire le connessioni ai Bound Control)

Caption : dbmagazzino (è la didscalia)

DatabaseName : c:\magazzino.mdb (è il nome fisico del database, ATTENZIONE AL PERCORSO!!!)

RecordSource: articoli (impostata la scelta del database sul quale operare si deve indicare la tabella o la query)

Proprietà dei Bound Control.

Text Box:

Name : txt_codice (nome della text box utile per lo sviluppo di query o di calcoli matematici all’interno del programma)

Text : vuoto

DataSource: Dbmagazzino (nome del data control dal quale si vogliono prelevare informazioni, si ricorda che il data contro è stato già connesso ad un data base)

Data Field : codice (si specifica il nome del campo della tabella, selezionata nel data control, da rappresentare nella text box)

Text Box:

Name : txt_descrizione (nome della text box utile per lo sviluppo di query o di calcoli matematici all’interno del programma)

Text : vuoto

DataSource: Dbmagazzino (nome del data control dal quale si vogliono prelevare informazioni, si ricorda che il data contro è stato già connesso ad un data base)

Data Field : descrizione (si specifica il nome del campo della tabella, selezionata nel data control, da rappresentare nella text box)

Label

Name : lbl_codice (nome della label utile per la descrizione della text box)

Caption : codice

Label

Name : lbl_descrizione (nome della label utile per la descrizione della text box)

Caption : Descrizione

Command Button

Name : cmd_aggiungi

Caption : Aggiungi Record

Aggiungere altri command button, come da Form in esempio, assegnando le relative proprietà

Dopo aver costruito la maschera (FORM) facendo doppio clic su ogni command button creato scrivere (o copiarlo e incollarlo) il codice che segue sotto nell’esempio, facendo attenzione a far corrispondere il nome assegnato al command button e il nome del codice sotto riportato (es: Private sub cmd_aggiungi_click() deve coincidere con il NAME del command button)

Metodi legati al Data Control.

Ad ogni oggetto visual basic può essere assegnato del codice (programma) quando si clicca (o si attiva un altro evento) sull’oggetto il programma è eseguito a differenza del pascal dove l’esecuzione era attivata in modo interattivo e sequenziale dall’utente.

I metodi sono particolari che comandi che ci permettono di manipolare il database.

ADDNEW – predispone la singola tabella del database a ricevere un nuovo record;

DELETE – elimina un record da una tabella;

UPDATE – valida l’inserimento di un nuovo record o la modifica di un record già inserito in un’operazione precedente;

MOVEFIRST – posiziona il controllo di puntamento nella tabella sul primo record;

MOVELAST – posiziona il controllo di puntamento nella tabella sull’ultimo record;

MOVEPREVIOUS – sposta il controllo di puntamento sul record che precede;

MOVENEXT – sposta il controllo di puntamento sul record che segue

 

APPUNTI SULLE QUERY

Una query è una richiesta specifica di un utente o di una applicazione a un DBMS. Nei data base relazionali le richieste sono generalmente formulate in linguaggio SQL.

Le query maggiormente utilizzate sono quelle di selezione conosciute come SELECT.

Indipendentemente dal linguaggio o DBMS utilizzato le query possono essere:

statiche, parametriche.

QUERY STATICHE

Una query può essere definita statica quando la relativa istruzione SQL è fissata prima dell’esecuzione del programma e non dal programma stesso in fase di esecuzione.

Esempio

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli where descrizione = 'pane'"

dbmagazzino.Refresh

End Sub

La query in esempio ricerca nella tabella articoli del database magazzino tutti i record che hanno come descrizione pane.

Nella progettazione di un data base, alcune richieste del cliente portano alla realizzazione di query statiche si pensi all’elenco di tutti i prodotti in ordine alfabetico.

Una query statica, senza filtro, utilizzata è quella relativa alla visualizzazione di tutti i record di una tabella (vedi esempio succ).

Esempio

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli"

dbmagazzino.Refresh

End Sub

 

QUERY PARAMETRICHE

Le query sono parametriche quando è l’utente a fissare i parametri (valori) in base ai quali fare ricerche nel database.

La query parametrica necessità di un valore che deve essere immesso nella query utilizzando delle variabili (variabili indipendenti o anche textbox).

Esempio di query parametrica con variabile immessa in una input box

Private Sub cmdcerca_Click()

Dim cerca as string

Cerca = Inputbox ("Quale articolo vuoi cercare?")

dbmagazzino.RecordSource = "select * from articoli where descrizione = ‘" + cerca + "’"

dbmagazzino.Refresh

End Sub

 

Esempio di query parametrica con variabile immessa in una text box

 

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli where descrizione = ‘" + txt_cerca + "’"

dbmagazzino.Refresh

End Sub

 

Query statiche o parametriche tra più tabelle.

Per mettere in relazione più tabelle non occorre agire in DBMS mettendole in relazione già in fase di creazione. Ma si può operare la relazione solo quando è necessaria mediante un semplice comando SQL.

Se si dovessero mettere in relazione le tabelle articoli e reparto del db magazzino per visualizzare TUTTI i prodotti con i relativi reparti si opererebbe come nell’esempio seguente:

Esempio

MAGAZZINO

ARTICOLI

 

REPARTO

Codice

Descrizione

Cod_Reparto

 

Codice

Rep

Scaffali

1

Pane

1

 

1

Alimenti

10

2

Pasta

1

 

2

Giocattoli

2

3

Dragon ball

2

 

3

Detersivi

4

4

Puzzle

2

       

5

Aiax

3

       

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli, reparto where articoli.cod_reparto = reparto.codice"

dbmagazzino.Refresh

End Sub

Se invece si volessero visualizzare solo i prodotti del reparto alimenti :

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli, reparto where articoli.cod_reparto = reparto.codice and reparto.rep = ‘alimenti’"

dbmagazzino.Refresh

End Sub

Se si volessero visualizzare i prodotti di un reparto specifico deciso dall’operatore si imposterebbe una query parametrica:

Private Sub cmdcerca_Click()

dbmagazzino.RecordSource = "select * from articoli, reparto where articoli.cod_reparto = reparto.codice and reparto.rep = ‘" + txtcerca + "’"

dbmagazzino.Refresh

End Sub