Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Visual Prolog Data Base minimo
Giovanni Torrero
Indice
Capitolo 1. Data Base 51.1. Definizioni 51.2. Progetto Data base 51.3. La classe libro 71.4. Popolare il database 12
Capitolo 2. Gestire Data Base 312.1. Modifiche al programma precedente 312.2. Rendere operativo il form 39
Indice analitico 59
Bibliografia 61
3
CAPITOLO 1
Data Base
1.1. Definizioni
Un database è un insieme di tabelle, si consideri ad esempio un insieme di libri
Identificatore Autore Titolo Editore Anno pubblicazione
ISBN 88 386 0060 0 P.R. Robinson Programmazione in Turbo Prolog Mc Graw Hill 1987
ISSN 1120-6527 Serafini Fisica e matematica: due storie incrociate A.I.F. 2010
CL 74-7742-2 A.Papoulis Variabili aleatorie e processi stocastici Boringhieri 1973
ISBN 88-386-4445-9 Horstmann Java 2 Mc Graw Hill 1999
177790-7 Boyer Storia della matematica Mondadori 1968
ISBN 0-07-100479-3 Hayes Computer architecture Mc Graw Hill 1988
CDU 517(076.) Demidovitch Problemes d’analyse mathematique MIR 1968
TABELLA 1. Database che rappresenta una biblioteca
La tabella va vista come un insieme di righe, in effetti tutte le righe hanno la stessastruttura, la prima riga è quella che definisce la struttura della tabella e quindi nonfa parte della tabella, ogni riga viene chiamata record e quindi una tabella è uninsieme di record. Per memorizare un record in un database si può utilizzare unfatto , come è noto un fatto è una clausola che non contiene variabili, esso deveessere dichiarato nella apposita sezione fact. Per essere più concreti si costruiscaun progetto.
1.2. Progetto Data base
Per costruire un progetto si fa click su Project->New come indicato in figura
5
6 1. DATA BASE
Comparirà la seguente finestra di dialogo
Dopo questo primo passo è meglio compilare il progetto seguendo le indicazionidella figura sottostante.
Una volta creato il progetto compare sullo schermo la seguente figura chiamataAlbero del progetto :
1.3. LA CLASSE LIBRO 7
FIGURA 1.2.1. Albero del progetto
1.3. La classe libro
Per dare chiarezza al progetto è bene raccogliere i file riguardanti l’idea che sista sviluppando in un’unica cartellina, le cartelline in Visual Prolog si chiamanopackage . Come si vede dalla figura precedente vi è già una cartellina nel pro-
getto, creata automaticamente, ed è TaskWindow , ne verrà creata una secondachiamata libri .
Nella finestra dell’albero del progetto si fanno le scelte indicate nella figura sotto-stante
Facendo click sull’ultima selezione si ottiene la seguente finestra di dialogo
8 1. DATA BASE
Dopo aver fatto queste scelte l’albero del progetto diventerà il seguente
Compilare e passare al passo successivo.
1.3. LA CLASSE LIBRO 9
Il passo successivo è quello di creare una classe, chiamata libro che verrà messanel package appena creato.
Nell’albero del progetto scegliere Libri->New In Existing... come indicato nellafigura seguente
Comparirà la solita finestra di dialogo da completare come segue
10 1. DATA BASE
Dopo aver compilato il progetto se si osserva l’albero del progetto si vedrà quantosegue:
1.3. LA CLASSE LIBRO 11
Facendo doppio click su libro.pro si apre il file che dovrà contenere il codice chegestisce il progetto, il file contiene già del codice generato automaticamente che èquello riportato qui sotto
1 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2 Copyr ight ©3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /4
5 implement l i b r o6 open core7
8 constants9 className = " L i b r i / l i b r o " .
10 c lassVers ion = " " .11
12 clauses13 c l a s s I n f o ( className , c lassVers ion ) .14
15 end implement l i b r o
bisogna aggiungere le due righe di codice sotto riportate
1 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2 Copyr ight ©3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /4 implement l i b r o5 open core67 constants8 className = " L i b r i / l i b r o " .9 c lassVers ion = " " .
1011 c lass f a c t s12 l i b r o : ( s t r i n g ID , s t r i n g Autore , s t r i n g T i t o l o , s t r i n g Edi tore , s t r i n g Anno ) .1314 clauses15 c l a s s I n f o ( className , c lassVers ion ) .1617 end implement l i b r o
In questo modo il programma viene informato che intendiamo usare un data base icui record sono si tipo libro . Se si compila il programma si ottiene un avvertimentoche dice
12 1. DATA BASE
questo perché il fatto dichiarato non è ancora stato usato.
1.4. Popolare il database
Il passo successivo sarà quello di popolare il database, per fare questo verrà usatauna finestra di dialogo, tutti i file relativi alle finestre di dialogo verranno messi inuna apposita cartellina o package. Seguendo i passi indicati prima si costruisca unnuovo package chiamato Dialoghi e, successivamente, nell’albero del progetto siproceda come indicato nella figura sottostante
Si aprirà la seguente finestra di dialogo
1.4. POPOLARE IL DATABASE 13
Fatte tutte queste cose compariranno le finestre della figura seguente
14 1. DATA BASE
Prima di tutto cambiamo il titolo della finestra da aggiungiRecord a Aggiungi se-lezionando il form appena creato e nella finestra Properties modificare la voce
Title come indicato nella sottostante figura
Come si vede il tutto è molto simile a altri sistemi di creazione di interfacce utenti,basta trascinare i controlli sul form Aggiungi e poi manipolare le proprietà delcontrollo, così facendo si aggiungano i seguenti controlli
1.4. POPOLARE IL DATABASE 15
Che produrrà una finestra di dialogo come questa
Giunti a questo punto bisogna inserire da qualche parte un menù o un pulsan-te che sia in grado di far apparire la finestra di dialogo, il posto giusto è il me-nù della finestra generale del programma TaskWindow quindi bisogna andaresull’albero del progetto, aprire la cartella TaskWindow poi fare doppio click suTaskMenu.mnu
16 1. DATA BASE
comparirà la seguente finestra di dialogo
Seguendo le istruzioni indicate in figura si costruisce una nuova voce del menùcome si vede nella figura seguente
1.4. POPOLARE IL DATABASE 17
successivamente fare le operazioni sotto indicate.
Ora bisogna costruire i sottomenù relativi alle varie operazioni da compiere su unDataBase, dopo aver selezionato Data Base fare click su New SubItem comeindicato nella figura sottostante
18 1. DATA BASE
La stessa finestra cambierà nel modo seguente
Si riempie il campo indicato con il nome del sottomenù: Aggiungi record , i campiConstant Prefix e seguenti si sistemano automaticamente, alla fine la finestra saràla seguente:
1.4. POPOLARE IL DATABASE 19
A questo punto si può anche chiudere la finestra TaskMenu , successivamente siritorna sull’albero del progetto si va nella cartella TaskWindow e doppio click suTaskWindow.win e si apre la corrispondente finestra
In sequenza bisogna aprire Menu -> TaskMenu -> id_data_base poi click con iltasto destro e scegliere AddEvent
20 1. DATA BASE
ed ecco il risultato
1.4. POPOLARE IL DATABASE 21
Click con il tasto destro sulla parte evidenziata e poi scegliere Go to Event Code
22 1. DATA BASE
si viene catapultati sul file TaskWindow.pro posizionando il cursore sul predicato
onDataBaseAggiungiRecord su questo file si devono appoertare i cambiamentiindicati in figura
1.4. POPOLARE IL DATABASE 23
Fatto questo bisogna compilare e poi lanciare il progetto con Build -> Executecome indicato nella figura seguente
ed ecco che cosa appare
24 1. DATA BASE
Facendo click su Data Base -> Aggiungi record compare la finestra Aggiungiprima progettata
FIGURA 1.4.1. Form per aggiungere un record
A questo punto il programma è in grado di far apparire la finestra nella qualescrivere il record ma non lo sa mettere nel data base, per fare questo bisognagestire la pressione del tasto OK , per fare questo bisogna seguire i seguentipassi:
1.4. POPOLARE IL DATABASE 25
(1) Andare sull’albero del progetto e aprire il file aggiungiRecord.dlg
(2) In questo form selezionare il pulsante OK , nella corrispondente finestraProperties scegliere il tab Events in questo tab scegliere ClickResponder
e poi, usando l’apposita linguetta scegliere onOkClick .
(3) Fare doppio click su onOkClick appena scelto e si viene catapultati sul fileaggiungiRecord.pro dove è stata automaticamente costruita una parte
di codice che andrà modificata.
26 1. DATA BASE
FIGURA 1.4.2. Gestione del tasto Ok
Per aggiungere un record a un database si può usare la clausola assertz comun-que prima bisogna costruire il record da aggiungere, tutto questo è meglio farloall’interno della classe libto perché è li che è stato definito l’oggetto record nelfatto:
libro:(string ID, string Autore, string Titolo, string Editore, string Anno).
Pertanto bisogna aprire il file libro.pro che si trova nella cartellina libri e aggiun-gere le seguenti righe di codice
1.4. POPOLARE IL DATABASE 27
1 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2 Copyr ight ©3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /4
5 implement l i b r o6 open core7
8 constants9 className = " L i b r i / l i b r o " .
10 c lassVers ion = " " .11
12 c lass f a c t s13 l i b r o : ( s t r i n g ID , s t r i n g Autore , s t r i n g T i t o l o , s t r i n g
Edi tore , s t r i n g Anno ) .14
15 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *16 I n i z i o de l codice da aggiungere17 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /18 clauses19 c l a s s I n f o ( className , c lassVers ion ) .20 aggiungi ( ID , Autore , T i t o l o , CasaEdi t r ice , Anno ) :−21 assertz ( l i b r o ( ID , Autore , T i t o l o , CasaEdi t r ice , Anno ) ) .22 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *23 Fine de l codice da aggiungere24 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /25
26 end implement l i b r o
Fatto questo bisogna rendere la clausola
aggiungi(ID,Autore,Titolo,CasaEditrice,Anno) :- assertz(libro(ID,Autore,Titolo,CasaEditrice,Anno)).
visibile anche dalle altre parti del programma, pertanto bisogna andare sull’alberodel progetto e fare doppio clic su libro.cl e aggiungere la seguente linea di codice
Dopo aver fatto tutto questo si può finalmente ritornare al listato della figura 1.4.2a fronte e modificarlo come di seguito riportato:
28 1. DATA BASE
1 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2 Copyr ight ©3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /4
5 c lass l i b r o : l i b r o6 open core7
8
9 pred ica tes10 c l a s s I n f o : core : : c l a s s I n f o .11 % @short Class i n fo rma t i on pred ica te .12 % @detai l This p red ica te represents i n f o rma t i on
pred ica te o f t h i s c lass .13 % @end14
15 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *16 I n i z i o de l codice da aggiungere17 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /18 aggiungi : ( s t r i n g ID , s t r i n g Autore , s t r i n g T i t o l o ,
s t r i n g Edi tore , s t r i n g Anno ) procedure .19 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *20 Fine de l codice da aggiungere21 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /22
23
24 end c lass l i b r o
1.4. POPOLARE IL DATABASE 29
Successivamente bisogna compilare e lanciare il programma, procede tutto comeprima ma se questa volta si compila il form di figura 1.4.1 a pagina 24 e si premeil tasto OK si aggiunge effettivamente un record al data base, ma questa azionenon produce nulla di visibile perché ci vorrebbe una finestra nella quale potesseapparire la lista dei record.
CAPITOLO 2
Gestire Data Base
2.1. Modifiche al programma precedente
Per rendere la gestione del data base più interessante si è deciso di sostituire lafinestra di dialogo Aggiungi con un nuovo form che consenta contemporanea-mente di aggiungere un record, di cancellare un record e di modificare un record.Si va nell’albero del progetto si seleziona la cartella Dialoghi con il tasto destro sisceglie
Successivamente creare il form gestione
31
32 2. GESTIRE DATA BASE
Riempire il form come indicato nella figura sottostante 1
1Quando si costruisce un form nella finestra che lo rappresenta vengono automaticamente inserititre pulsanti OK , Cancel , Help , bisogna eliminare questi tre pulsanti andando su di essi con
il mouse e premendo il tasto destro scegliere Cut perché questi pulsanti hanno un comportamentopredefinito che non è quello desiderato. Dopo averli eliminati bisogna sostituirli con tre pulsanti normali.
2.1. MODIFICHE AL PROGRAMMA PRECEDENTE 33
Dopo aver popolato il form è meglio andare su un pulsante e, con il tasto destro,fare la scelta indicata nella figura sottostante
34 2. GESTIRE DATA BASE
Bisogna apportare alcune modifiche al menù, quindi nell’albero del progetto farela scelta indicata nella figura sottostante:
Comparirà una finestra di dialogo nella quale, usando il tasto destro, bisogna farela seguente scelta
2.1. MODIFICHE AL PROGRAMMA PRECEDENTE 35
Cambiare la voce Aggiungi record in Gestione Data Base
36 2. GESTIRE DATA BASE
Fatto quanto detto bisogna andare nell’albero del progetto e fare doppio click suTaskWindowWin , aprire la corrispondente finestra e fare la scelta indicata nella
sottostante figura
2.1. MODIFICHE AL PROGRAMMA PRECEDENTE 37
Si apre la finestra TaskWindow.pro , nella quale si deve apportare la modificaindicata nella figura seguente:
38 2. GESTIRE DATA BASE
Compilare ed eseguire, facendo click su Data Base –> Gestione Data Base com-parirà il form prima progettato
2.2. RENDERE OPERATIVO IL FORM 39
2.2. Rendere operativo il form
2.2.1. Il tasto Inserisci . Come al solito bisogna rendere operativi i vari og-getti che compaiono nel form, per prima cosa si cercherà di rendere operativo iltasto Inserisci ,
L’elenco dei libri è rappresentato dai titoli dei libri inseriti nel DataBase, si comin-ci con il fare in modo che l’elenco dei titoli dei libri compaia nella ListBox. Perfare quanto detto bisogna lavorare sul file libro.pro e apportare i cambiamentievidenziati nella figura seguente.
40 2. GESTIRE DATA BASE
findAll , assertz , asserta e altri sono, dei predicati predefiniti che riguardano lagestione dei DataBase in VisualProlog, anzi questi predicati esistevano già nelleprime edizioni del Turbo Prolog infatti findAll è riportato nel vecchio libro [1, apagina 144], in questo libro si legge:
findAll(Variabile, predicato(.....), ListaValori)Ricevendo il nome di una variabile e il predicato in cui essa appare, findAll fornisceuna lista di valori a cui tale variabile può essere legata.
Mercoledì 15 - 06 - 2011
Sempre sullo stesso libro [1, a pagina 217] è riportato tutto quanto all’epoca sidoveva sapere sulla base di fatti dinamica. L’epoca alla quale si riferisce il libro èquella del Turbo Prolog, all’incirca fine anni ottanta, sembra che tutto ciò che eravalido per il Turbo Prolog continui ad essere valido per il Visual Prolog anche sealcuni predicati sono dati come “deprecated” come si può dedurre dal frammentoseguente
2.2. RENDERE OPERATIVO IL FORM 41
tratto da
a pagina 125 (vedere help di VisualProlog).
Quello che seguirà sarà l’elenco dei principali predicati che riguardano la base didati interna:
assert: il predicato assert(<fatto>) inserisce il <fatto> al fondo del data
base interno, lo stesso risultato si ottiene usando il predicato assertz(<fatto>) .
asserta: il predicato asserta(<fatto>) inserisce il fatto all’inizio del database interno.
retract: il predicato retract(<fatto>) serve a cancellare <fatto> dal data
base interno, cancella il primo fatto unificabile con <fatto> .consult: il predicato consult(NomeFileDos) copia i fatti contenuti nel fi-
le NomeFileDos nella base di fatti dinamica interna memorizzata nellaRam. Se il file contiene dati non compatibili con VisualProlog il predicatofallisce. Il nome del file consult(NomeFileDos) è una stringa e va scritta
in questo modo “ prova.txt ”.
save: il predicato save(NomeFileDos) salva i fatti contenuti nella base di
fatti dinamica interna memorizzata nella Ram nel file NomeFileDos . no-me del file consult(NomeFileDos) è una stringa e va scritta in questo
modo “ prova.txt ”.
Dopo tutta questa disquisizione si ritorni alle modifiche da apportare al codice,
nell’albero del progetto si sceglie il file e si apportano le modificheevidenziate nella figura successiva
42 2. GESTIRE DATA BASE
In questo modo il predicato getAllNames è visibile anche fuori dalla classe Libro
Il prossimo obiettivo è quello di rendere funzionante il tasto Inserisci , nell’albero
del progetto scegliere , apparirà il form nel quale bisognaselezionare il pulsante Inserisci , facendo click su esso con il tasto destro delmouse apparirà il seguente menù a cascata
2.2. RENDERE OPERATIVO IL FORM 43
In questo menù si scelga Update and View Code come indicato sopra, comparirà
il file gestione.pro nel quale si dovranno apportare le variazioni indicate nellafigura sottostante.
FIGURA 2.2.1. Gestione del tasto Inserisci
Il frammento di codice sopra riportato non fa altro che leggere i vari campi di testoe formare un nuovo oggetto di tipo libro che poi viene aggiunto alla base di dati,successivamente si ripulisce la list-box e i vari campi di testo, infine, le ultimetre righe servono a riempire la list-box con gli elementi del database usando laclausola getAllName(NameList) della classe libro .
Nel frammento di codice sopra riportato vi è la clausola:
libro::aggiungi(ID,Autore,Titolo,Editore,Anno)
questa clausola si trova nel file libro.pro , siccome quando si inserisce un record
vogliamo salvare l’intero data base abbiamo apportato al file libro.pro le seguentimodifiche:
44 2. GESTIRE DATA BASE
Prima modifica
2° modifica
alla fine il listato di libro.pro è il seguente:
Le righe dalla 21 alla 31 sono quelle aggiunte mentre la riga 11 è da modificare. Ledue nuove clausole sono quelle che servono per memorizzare il database internosul disco fisso, innanzitutto bisogna dare un nome a,l database e quindi bisognamodificare la riga 11 poi bisogna scrivere le due clausole comprese nelle parentesigraffe grigie della 2° modifica. Molto interessante è la prima delle due clausole
2.2. RENDERE OPERATIVO IL FORM 45
1 / ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 Copyr ight ©3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /4 implement l i b r o5 open core , stdIO , l i s t67 constants8 className = " L i b r i / l i b r o " .9 c lassVers ion = " " .
1011 c lass fac ts−b ib l io tecaDB12 l i b r o : ( s t r i n g ID , s t r i n g Autore , s t r i n g T i t o l o , s t r i n g
Edi tore , s t r i n g Anno ) .131415 clauses16 c l a s s I n f o ( className , c lassVers ion ) .1718 aggiungi ( ID , Autore , T i t o l o , CasaEdi t r ice , Anno ) :−19 assertz ( l i b r o ( ID , Autore , T i t o l o , CasaEdi t r ice , Anno ) )
.2021 getAllNames ( NameList ) :−22 f indA l l ( T i t o l o , l i b r o ( _ , _ , T i t o l o , _ , _ ) , NameList ) .232425 salvaDatabase ( ) :−26 f i l e : : e x i s t F i l e ( " b ib l io tecaDB . t x t " ) , ! ,27 f i l e : : de le te ( " b ib l io tecaDB . t x t " ) ,28 f i l e : : save ( " b ib l io tecaDB . t x t " , b ib l io tecaDB ) .2930 salvaDatabase ( ) :−31 f i l e : : save ( " b ib l io tecaDB . t x t " , b ib l io tecaDB ) .3233 end implement l i b r o
perché contiene il taglio o cut rappresentato dalla clausola ! , questa clausolapuò essere attraversata da sinistra a destra ma non viceversa.
Immaginiamo che il funzionamento del Prolog si possa rappresentare con un fol-letto, nella figura la saetta, che salta da una clausola all’altra procedendo sempredall’alto al basso e da sinistra a destra, se una delle clausole successive a ! fal-lisce il backtracking non può riattraversare ! e quindi tutte le variabili che sonostate unificate prima di ! rimangono congelate.
46 2. GESTIRE DATA BASE
A questo punto bisogna modificare il codice che gestisce la pressione del tastoInserisci , riprendiamo la procedura precedente alla figura 2.2.1 a pagina 43 ed
apportiamo le seguenti modifiche al file gestione.pro
Sistemato il tasto Inserisci bisogna occuparsi degli altri, prima, però, vorremmooccuparci del recupero degli elementi del data base interno dal disco. Quello chefaremo non è molto ortodosso in quanto non sarà data all’utilizzatore del program-ma la possibilità di gestire i file di dati, ma questo è solo un esempio e quindi l’ideache svilupperemo mi sembra un compromesso accettabile.
Richiamiamo il file gestione.pro ed aggiungiamo il frammento di codice sottoriportato
2.2. RENDERE OPERATIVO IL FORM 47
FIGURA 2.2.2. Modifiche al file gestione.pro
In questo frammento di codice viene caricato il database dal disco vengono estrat-ti i titoli dei libri con libro::getAllNames e questa lista viene messa sulla list-box. Mettendo quel frammento in quella posizione ogni volta che viene apertoil form il database interno viene aggiornato da disco, faremo in modo che ognicambiamento del database venga subito memorizzato su disco.
Dopo aver aggiunto questo frammento di codice quando apriamo il form gestio-ne nella List-box compare la lista dei fatti del database interno, facendo click suuno degli elementi della lista sarebbe carino che i campi di testo si riempisserocon i dati del fatto selezionato, per fare questo cominciamo con l’aggiungere unaclausola al file libro.pro
48 2. GESTIRE DATA BASE
FIGURA 2.2.3. Clausole da aggiungere a libro.pro
Aggiungiamo al file libro.cl la seguente dichiarazione:
FIGURA 2.2.4. Dichiarazione da aggiungere al file libro.cl
2.2. RENDERE OPERATIVO IL FORM 49
Fatto questo bisogna gestire la selezione degli elementi della ListBox, bisognarichiamare, nell’albero del progetto gestione.frm
FIGURA 2.2.5. Albero del progetto
Successivamente bisogna selezionare la ListBox e richiamare la corrispondentefinestra di dialogo Properties e fare le scelte indicate nella sottostante figura
facendo doppio click su onListboxSelectionChanged si apre il file gestione.pronel quale vanno apportate le seguenti modifiche:
50 2. GESTIRE DATA BASE
Passiamo quindi alla gestione del tasto Modifica , questo tasto deve innanzituttocancellare dal data base interno il record avente ID riportato nella corrispondentearea di testo, ammesso che questi esista, per poi inserire inserire un nuovo recordcon i dati riportati nel form.
Per cancellare un record bisogna aggiungere la relativa clausola al file libro.procome indicato nella figura seguente:
2.2. RENDERE OPERATIVO IL FORM 51
Perché tutto funzioni bisogna anche modificare il file libro.cl nel modo seguente:
A questo punto bisogna gestire la pressione del tasto Modifica , si richiama il formgestione
52 2. GESTIRE DATA BASE
si seleziona il tasto Modifica , nelle finestra Properties si fanno le selezioniindicate nella figura seguente:
2.2. RENDERE OPERATIVO IL FORM 53
fatto questo si fa doppio click su onModificaCtl
54 2. GESTIRE DATA BASE
automaticamente si viene proiettati sul file gestione.pro nel quale vengono giàcostruiti gli scheletri del predicato e della clausola on Modifica Ctl, quest’ultima vacambiata come segue:
2.2. RENDERE OPERATIVO IL FORM 55
come si vede prima viene cancellato il record con l’ID assegnato e poi vieneinserito il nuovo record con i dati presi dal form.
Compilare ed eseguire dovrebbe funzionare tutto come previsto.
Infine passiamo alla gestione del taso Cancella il cui compito è quello di cancella-re il record il cui ID è riportato nella corrispondente casella, si procede esattamentecome per il tasto Modifica solo che in q1uesto caso non vi è nulla da reinserire.
I passi da seguire sono :
(1) Richiamare il form gestione e sceglier il tasto Cancella
56 2. GESTIRE DATA BASE
(2) Nella finestra Properties fare le seguenti scelte
(3) Doppio click su onCancellaClick
2.2. RENDERE OPERATIVO IL FORM 57
(4) Modificare il codice di gestione.pro come segue
Compilare ed eseguire.
Indice analitico
Albero del progetto, 6
package, 7
record, 5
taglio, 45TaskWindow, 7
59
Bibliografia
[1] P. R. Robinson. Programmazione in turbo prolog. Informatica. McGraw-Hill, McGraw-Hill Libri Italia- Piazza Emilia 5 - 20129 Milano, 1987.
61