Sunteți pe pagina 1din 9

UMF “Carol Davila” – Informatică Medicală şi Biostatistică MG - Lucrarea practică 11 2015/2016

Lucrarea practică 11
Indicaţii generale:
Interogarea unei baze de date este cea mai des întâlnită activitate, din punctul de
vedere al medicului-utilizator. Veţi exersa în această lucrare practică sortări (ordonari),
interogări, dar şi reorganizări ale structurii.
Introducerea datelor în tabele nu este practicată de obicei la nivel de înregistrare
completă. O înregistrare poate fi completată în mai multe etape, de către mai mulţi
utilizatori, care nu au neapărat aceleaşi drepturi de vizualizare. Veţi exersa şi crearea de
formulare de introducere de date.
Problema vizualizării selective a datelor, mai ales atunci când avem de-a face cu
multe tabele sau cu tabele având o structură „bogată” este şi ea deosebit de importantă. Pe
ecran ar trebui să avem afişate doar datele ce ne interesează. Veţi exersa şi crearea de
vizualizări.
În această lucrare practică:
a) veţi interoga o bază de date;
b) veţi crea formulare de introducere a datelor;
c) veţi vizualiza parţial date din tabele distincte.

Teme
43: restructurări şi înlocuiri
44: interogarea prin filtre
45: formulare de introducere
46: vizualizări

Softul ce va fi utilizat în lucrarea practică:


Visual FoxPro

151
MG - Lucrarea practică 6 2015/2016 UMF “Carol Davila” – Informatică Medicală şi Biostatistică

Tema 43: restructurări şi înlocuiri


Restructurarea unui tabel de date este o activitate destul de rară întrucât se
presupune că în etapa de proiectare a bazei de date se decide bine componenţa tabelelor.
Totuşi, uneori se impune efectuarea unei operaţiuni de acest fel.
Pentru această lucrare practică veţi copia mai întâi, în dosarul „local” Anul2,
grupul de două fişiere LP11_1.* prin ftp „anonim” din site-ul 10.0.1.126. Lansaţi apoi
aplicaţia FoxPro.
Din meniul File
selectaţi comanda Open. În
caseta de dialog care se
deschide asiguraţi-vă ca în
zona Look in aveţi dosarul
Anul2 iar în zona Files of
type este Table (*.dbf).
Selectaţi fişierul
LP11_1.dbf şi apăsaţi
butonul OK. Vizualizaţi
conţinutul fişierului.
Repetaţi aceleaşi
operaţiuni în dosarul LP11.

Tabelul este organizat în foarte multe câmpuri. Pentru a-i modifica structura, în
fereastra de comenzi, comandaţi:
MODI STRU
(prescurtarea de la Modify Structure. Dacă fereastra de comenzi nu este vizibilă, apelaţi
Command Window din meniul Window).
Apoi, în caseta de dialog Table Designer adăugaţi un câmp nou, numit verific, de
tip Logical, la sfârşitul listei de câmpuri.
Valoarea T (true)
pentru acest câmp apare în
dreptul un pacient care are
infarct antero-septal în
antecedente (ceea ce s-a
înregistrat în tabel prin
valoarea „as” plasată în
câmpul ima).
Pentru a umple
automat cu valori câmpul
verific veţi folosi comanda
REPLACE împreună cu o
expresie formată cu ajutorul
operatorului $:
string$nume_câmp
unde string este o secvenţă oarecare de caractere. Operaţia simbolizată de $ are un rezultat
logic, şi anume T (true) – pentru un anumit pacient – dacă şi numai dacă secvenţa string
este conţinută în valoarea câmpului nume_câmp pentru acel pacient; în caz contrar
rezultatul este F (false).
Sintaxa comenzii REPLACE este destul de complexă. Trebuie indicate înregistrările
152
UMF “Carol Davila” – Informatică Medicală şi Biostatistică MG - Lucrarea practică 11 2015/2016

asupra cărora se va acţiona, de asemenea câmpurile asupra cărora se va acţiona şi, evident,
valorile care vor fi introduse. Aceste valori pot fi obţinute şi prin calcule. Pentru a afla
detalii asupra comenzii REPLACE puteţi folosi comenzile meniului Help sau navigarea în
Web.
Concret, ar trebui să modificaţi, în toate înregistrările, valoarea câmpului verific.
Comandaţi:
REPLACE ALL verific WITH "as"$ima
care, în urma executării, schimbă în T valorile câmpului verific din înregistrările ce
conţin „as” în câmpul ima. Valoarea F (false) este implicită.
Tema 44: interogarea prin filtre
Interogarea unei baze de date se poate efectua prin intermediu filtrelor de selecţie.
Creaţi ca exemplu un filtru de selecţie simplu, numit nume_FILTRU prin care veţi
selecta doar datele despre pacienţii cu infarct antero-septal în antecedente. Pentru aceasta
folosiţi comanda
CREATE QUERY nume_FILTRU
Se va deschide o fereastră Query Designer în cadrul căreia se specifică parametrii
filtrului (interogării). Înainte de aceasta se va deschide însă o casetă de dialog Open în care
trebuie să specificaţi tabelele de date folosite pentru a realiza filtrarea. (În cazul nostru
doar tabelul LP11_1.dbf.) Apăsaţi apoi pe butonul Close în caseta de dialog Add Table or
View. În felul acesta filtrarea se face numai cu datele unui singur tabel.
Sintaxa generală a comenzii de filtrare este următoarea:
CREATE QUERY nume_fişier | ?
Criteriul de filtrare (interogare) va putea fi salvat direct în nume_fişier, extensia
implicită a fişierelor de tip filtru (interogare) fiind QPR. Dacă în locul numelui de fişier se
foloseşte caracterul ‚?’, atunci va fi deschisă o casetă de dialog Open în care se va
prezenta lista filtrelor existente, urmând a se alege unul dintre acestea.
Criteriul de
filtrare (interogare)
va fi format pe baza
denumirilor de
câmpuri (ce
reprezintă de fapt
valorile corespunză-
toare), a unor valori
concrete, precum şi
pe baza
comparatorilor =, <
,>, Like, Between
etc.
(Ar trebui să
fie clar ce înseamnă
fiecare.)
În fereastra Query Designer, pagina (tableta) Fields, puteţi selecta câmpurile
folosite pentru filtrare, trecându-le prin apăsarea butonului Add în dreapta, în zona
Selected fields. Puteţi selecta chiar toate câmpurile, apăsând butonul Add All.
În pagina (tableta) Filter vi se permite să specificaţi destul de comod condiţiile de

153
MG - Lucrarea practică 6 2015/2016 UMF “Carol Davila” – Informatică Medicală şi Biostatistică

filtrare. Selectaţi zona Field Name şi, cu un clic, deschideţi lista câmpurilor din care
selectaţi LP11_1.verific.
În zona Example tastaţi (fără a neglija punctele) „.T.” iar comparaţia o veţi face
selectând „Like” în zona Criteria. (Dacă nu aţi fi încadrat valoarea logică T prin puncte,
atunci ea ar fi fost interpretată nu ca valoare, ci ca denumire de câmp!)
Dacă se doreşte negarea logică a criteriului de selecţie se poate bifa butonul Not.
Informaţi-vă asupra posibilităţilor oferite de butonul Case precum şi de zona Logical.
În momentul în care se doreşte finalizarea activităţii de filtrare se apelează la
opţiunea Close din caseta de control (sau se tastează [Ctrl]+[F4], sau se apasă butonul
marcat cu X din colţul dreapta-sus) a ferestrei Query Designer. Ca urmare, criteriul de
selecţie – care selectează pacienţii pentru care în câmpul verific apare valoarea logică .T. –
a fost salvat în fişierul nume_FILTRU.qpr.
A „vedea” pe ecran rezultatul filtrării este însă acţiunea care ne interesează
prioritar. Pentru aceasta puteţi inspecta conţinutul dosarului de salvare a fişierelor, în care
ar trebui să se afle fişierul nume_FILTRU.qpr. După un dublu-clic pe acesta se va
deschide o fereastră Query de tip „browse” în care vor fi afişate doar valorile din
înregistrările selectate prin filtrare.

Părăsiţi acum
fereastra Query (de
exemplu cu opţiunea
Close din caseta de
control). Asiguraţi-vă în
meniul Windows,
comanda Data Session,
că tabelul de date activ
este LP11_1.
Sortaţi-l, folosind
comanda SORT dată în fereastra de comenzi, după câmpul varsta. Numiţi
nume_CORONARE tabelul obţinut în urma sortării.
Închideţi toate fişierele de lucru şi deschideţi numai tabelul de date
nume_CORONARE.dbf. Creaţi, bazându-vă pe acest tabel de date, un nou filtru care să
implice numai câmpurile nrcrt, numpren, chirurg, varsta şi sexf.
Ştiind că în câmpul chirurg este înregistrat chirurgul care a operat pacientul (pentru
confidenţialitate, doar prin iniţiale), criteriul de filtrare va fi chirurg Like „si”. Numiţi fişierul
acestui filtru nume_CHIRURG. Vizualizaţi pe ecran rezultatul filtrării, observând ordinea
în care sunt afişate înregistrările.
Dacă ordinea nu este cea dorită (după vârsta pacienţilor), atunci procedaţi în felul
următor: deschideţi (FileOpen) fişierul-filtru nume_CHIRURG.qpr, acţionaţi în pagina
(tableta) Order By selectând câmpul LP11_1.varsta apoi plasându-l cu butonul [Add>] în
lista Ordering Criteria, după care salvaţi modificarea efectuată. Reluaţi vizualizarea.
Efectuaţi încă o modificare, acţionând în pagina (tableta) Filter prin adăugarea unui
criteriu suplimentar de filtrare, anume sexf Like .T. după ce vă asiguraţi că pe linia
criteriului anterior alegerea pentru zona Logical este „AND”!
Tema 45: formulare de introducere
Introducerea datelor în tabelele de date, în special atunci când aceste tabele au o
structură complexă, se efectuează prin intermediul unor aşa-numite „formulare” (Forms).
Un formular permite introducerea parţială a unei înregistrări, „ascunzând” utilizatorului
154
UMF “Carol Davila” – Informatică Medicală şi Biostatistică MG - Lucrarea practică 11 2015/2016

câmpurile pe care nu este necesar, pe moment, să le completeze.


Formularele Visual FoxPro sunt recomandate altor posibilităţi de introducere de
date (cum ar fi importurile din foi de calcul Excel) deoarece ele permit evitarea erorilor de
tastare.
Pentru crearea unui formular se poate folosi comanda
CREATE FORM nume_formular
urmată de o proiectare
detaliată a formularului,
componentă după componentă.
Recomandăm însă calea mult mai
rapidă a folosirii instrumentului
auxiliar dedicat (Query Wizard),
apelabil în urma comenzii
FileNewForm. Anterior însă,
trebuie să ne asigurăm că am
deschis fişierul-tabel de date
pentru care pregătim formularul.
(Fie acesta
nume_CORONARE.dbf.)

Trecem rapid peste prima selecţie (întrucât folosim un singur tabel): pentru a intra în etapa
1-a (principală), cea a selectării câmpurilor care vor apărea în formular. Concret, vom
selecta câmpurile numpren, chirurg, sexf, varsta şi fumator, pe care le vom trece din
lista Available fields în lista Selected fields prin simpla apăsare a butonului ►.
După etapa 1:

în a doua etapă vom alege stilul formularului (nu facem recomandări):

155
MG - Lucrarea practică 6 2015/2016 UMF “Carol Davila” – Informatică Medicală şi Biostatistică

apoi, în etapa a treia, criteriul de ordonare a înregistrărilor. Dat fiind că pregătim


formularul şi pentru eventuale corecturi, probabil că este o idee bună să ordonăm
înregistrările alfabetic după valorile câmpului numpren. (Dar la ce oare foloseşte câmpul
nrcrt?)
În sfârşit, în a patra şi în ultima etapă, nu trebuie făcut altceva decât indicat un titlu
al ferestrei formularului, apoi un nume pentru fişierul-formular (ce va primi extensia
SCX).

Observaţi cu atenţie macheta formularului. Sunt permise rearanjări ale casetelor de


editare (edit text) şi modificări ale textelor ataşate (labels). Evident, în locul inscripţiei
„Numpren” ar fi de dorit să apară „Numele si prenumele”, iar în loc de „Sexf” ar trebui să
apară „Sexul feminin?”.

156
UMF “Carol Davila” – Informatică Medicală şi Biostatistică MG - Lucrarea practică 11 2015/2016

Fiecare obiect plasat pe formular are o denumire (NUMPREN1, CHIRURG1,


SEXF1 etc.) şi este format din trei componente:
a) forma (Shape),
b) textul ataşat (Label),
c) caseta de editare (Text) sau de validare (Check).
Fiecare dintre aceste obiecte are destul de multe proprietăţi, dintre care de urmărit
sunt lăţimea (Width), şi alinierea (Alignment). Textul ataşat afişat este controlat prin
proprietatea Caption.
d) Apelul listei proprietăţilor unui obiect se face prin intermediul meniului de
context (aşadar, prin clic-dreapta deasupra obiectului). Urmăriţi exemplul din figurile de
mai jos, care arată cum este modificată proprietatea Caption a textului ataşat (Label1)
pentru obiectul NUMPREN1.
Observaţi pe macheta formularului, în partea inferioară, un obiect complex format
din 10 butoane, denumit BUTTONSET1. Acesta va fi folosit pentru declanşarea diverselor
acţiuni (metode).

Odată încheiată macheta formularului, observaţi că a apărut (de fapt chiar de la


comanda de creare) meniul Form, în care comanda ce ne interesează este Run Form.
Executaţi-o.

157
MG - Lucrarea practică 6 2015/2016 UMF “Carol Davila” – Informatică Medicală şi Biostatistică

Tema 46: vizualizări


Este momentul să creăm şi o aşa-numită vizualizare (view). Însă, pentru aceasta, vom
face câteva pregătiri:
1) Va fi creată o bază de date, denumită nume_SPITAL.dbc. (Recomandăm comanda
FileNewDatabase, însă fără folosirea instrumentului Wizard!)
2) În „interiorul” ei va fi creat tabelul de date nume_INTERNARI.dbf, având
structura următoare: câmpul id de tip Numeric pentru numerotare (câmp cheie), câmpul start
de tipul DateTime pentru momentul internării, câmpul exit de tipul DateTime pentru
momentul externării, câmpul medic de tip Character(20) pentru medicul curant, câmpul
diagnostic de tip Memo. (Recomandăm comanda FileNewTable, fără folosirea
instrumentului Wizard!) Completaţi cel puţin zece înregistrări.
3) În „interiorul” bazei de date va fi creat şi tabelul nume_PACIENTI.dbf, având
structura următoare: câmpul id de tip Numeric pentru numerotare (câmp cheie), câmpul nume
de tipul Character(20) şi câmpul prenume de tip Character(20) cu roluri evidente, câmpul cnp
de tip Character(13) pentru codul numeric personal. Completaţi tot atâtea înregistrări câte sunt
în tabelul precedent, cu exact aceleaşi valori în câmpurile id.

4) Cu comanda FileNewView încercaţi să obţineţi vizualizarea. De data aceasta


recomandăm să folosiţi instrumentul auxiliar Wizard.
Experienţa dobândită în lucrul cu celălalt instrument Wizard ar trebui să vă fie
suficientă pentru controlul acestuia.
Treceţi, în zona Selected fields, doar câmpurile medic şi diagnostic din tabelul
„internări”, de asemenea doar câmpurile nume şi prenume din tabelul „pacienţi”.
Veţi constata că aplicaţia Visual FoxPro „ghiceşte” că înregistrările celor două tabele
sunt legate între ele prin intermediul câmpurilor id, întro relaţie una-la-una (one-to-one).
Salvaţi obiectul View cu numele nume_VI pentru fereastra de afişare.
Verificaţi că datele se afişează pe ecran în fereastra de vizualizare. Este oare ceea ce ne
dorim?

158
UMF “Carol Davila” – Informatică Medicală şi Biostatistică MG - Lucrarea practică 11 2015/2016

(Trebuie să înţelegem specificul câmpurilor de tip Memo. Conţinutul poate fi mult


prea mare pentru a permite afişarea „liniară” pe ecran. Tot ceea ce putem afla din fereastra
anterioară este faptul că pentru a doua înregistrare NU a fost completat diagnosticul. Abia cu
un dublu clic asupra inscripţiei „Memo” din prima înregistrare vom avea acces la diagnosticul
stabilit de către medicul „si” pentru pacientul „Popescu Ion”.)
Exersaţi crearea altor vizualizări.
Încercaţi comanda FileSave As HTML asupra fişierului cu numele nume_VI şi
observaţi ce tip de fişier obţineţi. Cum aţi putea încadra datele dintr-un tabel de date (sau
din alte tipuri de fişiere, cum este acesta) în site-ul propriu?

159

S-ar putea să vă placă și