Limbajul Visual FoxPro.
11.1 ConsideraŃii generale asupra limbajului
11.1.1 ConsideraŃii generale
Toate limbajele de programare au în general aceeaşi structură de principiu a instrucŃiunilor. Sunt unele limbaje de programare care sunt dedicate unui anumit tip de prelucrări de date, motiv pentru care dispun de biblioteci de subprograme care asigură automatizarea anumitor faze de prelucrarea datelor. De exemplu programele dedicate prelucrării matematice a datelor de tip Matcad sau Matematica. Altele sunt pentru prelucrarea informaŃiilor care sunt sub formă de baze de date, de tip FoxPro, Dbase, Paradox sau SQL, etc. Alte programe sunt de tip general dispunând de biblioteci de funcŃii şi asigurând o flexibilitate mare de prelucrare a informaŃiei atât pe ecran pentru jocuri de exemplu C/C++ sau Cod maşină, precum şi altele mai puŃin flexibile dar cu biblioteci de programe care automatizează procesul de prelucrarea datelor de tip Pascal, Visual Basic, Basic4GL, etc.
11.1.2 Alegerea limbajului de programare
DiferenŃa între programul sursă şi cel executabil este că în cazul primului este necesară mai întâi instalarea şi pornirea programului în care se scrie codul sursă, în timp ce pentru programul executabil acest lucru nu mai este necesar el rulând direct fără a mai fi necesară lansarea programului sursă. Acest lucru înseamnă că utilizatorul nu trebuie să deŃină licenŃă şi pentru programul în care a fost realizat programul executabil el trebuind să deŃină numai licenŃă pentru programul executabil pe care de fapt l-a achiziŃionat. Alegerea între aceste tipuri de programe se face în faza de temă de proiectare sau cel mai târziu la caietul de sarcini deoarece ulterior este foarte
greu de a se reveni în alegerea altui limbaj de programare acestea ne fiind compatibile unul cu celălalt. Datorită faptului că în domeniul economic se lucrează mult cu şiruri de date organizate tabelar numite şi baze de date vom analiza numai programele de acest tip şi anume FoxPro şi Visual Basic. Dacă primul este specific bazelor de date, al doilea este de tip general putând fi folosite şi în alte domenii decât prelucrarea bazelor de date.
11.2 Baze de date, mod de realizare a unui program tip
11.2.1 ConsideraŃii generale
Prin Baze de date se înŃelege un ansamblu de informaŃii organizate tabelar care are următoarele proprietăŃi:
- este organizat, pe mai multe niveluri ale informaŃiei pe suportul de informaŃie extern uzual hard disc;
- este coerent, corespunzând unor proprietăŃi restrictive specifice de integritatea informaŃiei;
- este structurat, astfel încât să corespundă unui model de tip bază de date;
- este accesibil, putând fi folosit de mai mulŃi operatori simultan sau succesiv.
Realizarea unei baze de date urmăreşte aceeaşi paşi pe care i-am prezentat la subcapitolul anterior. În acelaşi timp multe dintre elementele de definire şi structură a elementelor de tip baze de date sunt similare cu cele de la Capitolul 6.2 nu vom mai insista asupra lor. Şi în programul Visual FoxPro sau FoxPro sunt folosite ca elemente de bază tabelele, relaŃiile dintre tabele, formularele, rapoartele şi interogările. În acelaşi timp tipurile de date şi variabile cu mici diferenŃe sunt identice cu cele de la Capitolul 9.1, motiv pentru care nu vom mai insista asupra acestora. DiferenŃa provine din modul de definire specific bazelor de date pentru acestea.
11.2.2 Program sursă
Pentru o mai bună înŃelegere a modului de folosire şi utilizare a programului Visual FoxPro vom porni de la o aplicaŃie economică legată de
desfacerea produselor unei firme de producŃie. Pentru aceasta trebuie să avem în vedere care sunt elementele economice folosite în această fază:
- primul şi cel mai important este factura de vânzare a produselor, - al doilea avizul de transport al produselor, - al treilea este bonul de livrare a produselor, - în final pentru stingerea obligaŃiei create elementele de plată a
produselor comercializate chitanŃa, fila de CEC sau ordinul de plată.
Circuitul economic este următorul: pe baza bonului de livrare a mărfii produsele sunt eliberate din magazia de produse finite, după care cel care efectuează transportul merge la departamentul economic de livrare marfă şi ridică avizul de expediere a mărfii şi factura corespunzătoare. Transportă marfa la client unde o descarcă şi se semnează exemplarul roşu şi verde de către client, se stampilează, se întocmesc formalităŃile de plată a mărfii şi se eliberează chitanŃa pentru suma de bani primită sau se primeşte ordinul de plata sau fila CEC pentru suma de bani corespunzătoare valorii produselor livrate semnată şi ştampilată de client pentru a fi încasată suma prin bancă. Din analiza acestora pe fiecare element în parte distingem tipuri de date şir similare pentru fiecare element în parte. Astfel pe factură avem un şir de date care sunt tipărite iniŃial pe factură, aviz şi chitanŃă de identificare a furnizorului produselor. Un al doilea şir de date sunt cele de identificare a clientului. Se poate structura informaŃia pentru utilizare într-un tabel din care de fiecare când este necesară aceasta să poată fi apelată. Tabelul are structura din figura 11.1 În tabel pe prima linie cu culoare gri am trecut tipul de celulă corespunzătoare informaŃiei şi lungimea acestei celule. Este foarte importantă o alegere optimă pentru aceste celule pentru a fi satisfăcute cele două cerinŃe importante, definirea cât mai clară şi exactă a elementului cât şi o lungime cât mai mică şi egală pentru celule astfel încât să fie utilizată la maxim aceasta iar mărimea bazei de date să fie cât mai mică. O lungime mare măreşte dimensiunile bazei de date nejustificat de mult iar o lungime prea mică face ca elementele să nu poată fi diferenŃiate între ele. În partea centrală fiecare factură are un al doilea şir de date care pot fi organizate în tabelul din figura 11.2. Se observă că elementul de legătură între tabelul de clienŃi şi cel de facturi/avize este câmpul nume client. Aşa după cum se poate presupune aceste celule trebuie să aibă obligatoriu aceeaşi lungime şi să fie de acelaşi tip.
ClienŃi Nr_f Nume_cl Localit Cod Adresa Telef Banca Cont
Num7 Text20 Text32 Num6 Text64 Num16 Text32 Text32
1234567 Popescu Timisoara 334561 Negrutzi, nr.1
0741122334 BCR Timisoara
2511.1/ROL
Figura 11.1 Structură tabel clienŃi
Facturi/Avize/Bon expediŃie Nr_f Nr_av Nr_bon Data Nume_cl Valoare_
Totala
Valoare_
Neta
Valoare_
TVA
Num7 Num7 Num7 Dat zz/mm Text20 Num16 Num16 Num16
1234567 1234567 1234567 22/04 Popescu 1.190.000 1.000.000 190.000
Figura 11.2 Structură tabel facturi/avize/bon consum
Produse Nr_pr Nume_p UM Cantitate Valoare TVA Nr_f
Num7 Text20 Text6 Num12 Num16 Num16 Num7
1234567 Furtun M 10 1.000.000 190.000 1234567
Figura 11.3 Structură tabel produse
Date transport Nume Localitate Bulet Numar_m Nr_f Ora
Text32 Text20 Text10 Text12 Num7 Orahh/mm
Pop Ion Timisoara TM345689 TM08XXL 1234567 10/30
Figura 11.4 Structură tabel mijloc de transport
Stoc produse Nume_p Valoare_Neta Cantitate_int Cantitate_ies Nr_bon Sold_n
Text20 Num16 Num16 Num16 Num7
Furtun 50 50 Furtun 100.000 10 1234567 40
Figura 11.5 Structură fişă magazie
Elementul central al facturii este cel care cuprinde elementele de identificare fizică şi cantitativ valorică a acestora. În figura. 11.3 sunt centralizate aceste elemente pentru fiecare produs în parte. Elementul de legătură este câmpul număr factură. În partea inferioară se găsesc elementele de identificare ale persoanei şi mijlocului de transport cu care s-a efectuat transportul produselor. Acestea
vor fi centralizate în tabelul din figura 11.4 unde se observă că elementul de legătură este tot câmpul număr factură. Pe baza bonului de consum se descarcă la magazie fişa de magazie pe produs care se debitează pe baza stocului din luna anterioară sau a bonului de transfer din secŃia de producŃie. În figura 11.5 este prezentată structura unei fişe de magazie unde se observă că câmpul de legătură este bonul de
expediŃie. Din cele prezentate se observă că tabelul din figura 11.5 trebuie să fie individualizat pe fiecare tip de act în parte. Acesta este şi rolul acestei faze care de fapt face parte din schema logică fiind faza de definire a mărimilor care intră în program. Un pas important în această fază de realizare a schemei logice o constituie definirea modului de interconectare a tabelelor mai sus definite şi succesiunea de etape care asigură funcŃionarea programului. Pentru aceasta vom reveni la începutul exemplului şi vom încerca organizarea fluxului informaŃiilor astfel încât să se poată lucra cât mai uşor cu acest program. O primă decizie care trebuie luată este cea de a crea la fiecare început de lună fişele de magazie sau o dată pe an sau la începutul lucrului cu programul dacă am început activitatea în mijlocul perioadei calendaristice a anului. Aceeaşi decizie trebuie luată şi în ce priveşte evidenŃa livrărilor de produse şi a situaŃie livrărilor şi încasărilor pe clienŃi. Din ambele puncte de vedere este cel mai bine ca să existe opŃiunea de a avea evoluŃia stocurilor de produse zilnic, lunar sau pe o anumită perioadă de timp, în timp ce pentru situaŃia clienŃilor este necesar ca să se poată obŃine situaŃia la finele unei perioade calendaristice, iar situaŃia livrărilor de produse pe produs sau pe facturi pe client într-o anumită perioadă de timp. Cel care va lua decizia este beneficiarul de comun acord cu cel care realizează programul. Aceste opŃiuni sunt cele de tipărire pe ecran şi respectiv la imprimantă a acestor rapoarte. Pe baza acestor observaŃii a fost realizată schema bloc cu legăturile dintre toate tabelele care fac obiectul bazei de date.
În figura 11.6 este prezentată schema relaŃională.
11.2.3 Depanarea şi finalizarea programului
Faza de terminare a programului se încheie cu închiderea tuturor bazelor de date deschise, finalizarea rapoartelor la care se lucrează şi închiderea lor şi oprirea funcŃionării programului.
Figura 11.6 Schema tabelară cu legăturile dintre tabele
11.3 Limbajul de programare Visual FoxPro
11.3.1 InterfaŃa generală cu Visual FoxPro
În cazul acestui program utilizatorul poate lucra în două variante distincte:
- prima cu ajutorul meniului sistem pe bază de comenzi, - a doua prin comenzi într-o fereastră separată.
Dacă prima dintre acestea este cea standard pentru sistemul WINDOWS figura 11.8 permiŃând numai modificări ale ecranului de lucru de tip restaurare, mutare, dimensiune, micşorare, mărire şi în final închidere fereastră, a doua bară cea de meniu este mai complexă figura 11.9 fiind prezentată pe etape funcŃie de rolul fiecărui element al meniului principal.
ClienŃi Factură Aviz Bon exped
Nr_f Nr_f Nr_f Nr_avNume_cl Nr_av Nr_av Nr_bonLocalit Data Nr_bon DataCod Nume_cl Data Nume_clAdresa Val_Tot Nume_cl Val_net
Telef Val_net Val_net
Banca Val_TVA
Cont Produse Stoc_prod
Date_trans Nr_f Nr_pr
Nr_f Nr_bon Nume_prNume Nr_pr Nr_bonBulet_s Nume_pr DataLocalit_s UM Val_netNumar_m Cantit Cant_intOra Val Cant_ies
Val_net Sold_p
Val_TVA
11.3.2 FuncŃiile meniului principal ale Visual FoxPro
Prima dintre acestea este cea denumită File, ea se poate lansa cu grupul de taste Alt + F, moment în care se activează bara verticală cu instrumentele specifice grupate pe 5 blocuri prezentate în figura 11.9:
- primul este cel specific operaŃiilor de lucru cu fişierele (fişier nou, deschidere fişier existent, închidere fişier deschis),
- al doilea este cel de salvarea fişierelor, - al treilea de import şi export de fişiere, - al patrulea de tipărire şi expediere fişier către alte surse de salvare
diferite de cea a hard discului, - al cincilea de ieşire din program şi închiderea ecranului de lucru. În figura 11.7 se prezintă ecranul de lucru care apare la lansarea
programului de bază cu cele două ferestre cea de comandă mai mică dispusă în partea dreaptă şi cea mare care este prevăzută la rândul ei cu o bară de titlu, o bară de meniu şi o bară de unelte.
Figura 11.7 Ecranul principal Visual FoxPro
La apăsarea butonului New, sau a tastei N se va închide fereastra File şi se va deschie o fereastră nouă cea din mijloc din figura 11.9 care se observă că este împărŃită în două coloane, dintre care prima este la rândul ei împărŃită în 5 blocuri orizontale structurate funcŃie de tipul acestora care sunt:
- proiect nou primul bloc, - elemente noi de tip Bază de date, Tabel, RelaŃii, Legături,
Vizualizare, etc, - blocul trei se referă la modul de introducere şi afişarea
rezultatelor de tip: Format, Raport şi Label, - al patrulea se referă la programe şi clase, - iar ultimul la fişiere text şi meniuri.
Figura 11.8 Comenzi ale barei de titlu Visual FoxPro
11.3.3 FuncŃia meniu File a Visual FoxPro
Figura 11.9 Comenzi ale barei de meniu funcŃiile FILE ale Visual FoxPro
Figura 11.10 Ecran principal creare tabel în Visual FoxPro
În figura 11.10 se observă ce se întâmplă la acŃionarea butonului fişier nou tabelă. În partea stângă se deschide o fereastră care în partea de sus permite alegerea locului în care să se salveze tabela bază de date cerată, în partea de jos se introduce numele tabelei pentru cazul nostru client iar în partea dreaptă se găsesc trei butoane de validare care asigură primul salvarea
tabelei, al doilea părăsirea acestei ferestre deoarece se dorea deschiderea altui tip de fereastră, al treilea este cel de ajutor şi ultimul este un buton special
inactiv. În fereastra de comandă apare introdusă instrucŃiunea CREATE . La apăsarea butonului salvare se deschide o nouă fereastră prezentată în figura
11.11 în care se poate introduce datele pentru tabelul client.
Figura 11.11 Ecran principal desenare tabel în Visual FoxPro iniŃial
Figura 11.12 Ecran principal desenare tabel în Visual FoxPro după introducere date
În figura 11.12 se vede cum arată tabelul complectat cu datele preluate din schema logică. Se observă că s-a ales indexarea tabelului după
numărul de factură, lucru vizibil prin acŃionarea tabelului Indexes. Validarea finală se ace prin apăsarea butonului OK.
Figura 11.13 Ecran principal şi de comandă pentru apelarea unui tabel proiectat
În figura 11.13 se observă cum se poate apela un tabel creat pentru a fi vizualizat sau modificat atît pe varianta meniu căt şi pe cea a ferestrei de comandă. Vom insista de această dată pe cea de-a doua variantă deoarece prima este deja intuită.
Se observă că pentru apelarea unei tabele: - mai întâi trebuie să se introducă comanda de creare iniŃială
generală CREATE, - urmează instrucŃiunea de folosire USE urmată de calea pe care
trebuie să o urmeze programul pentru a găsi fişierul (OBS. Este de dorit ca aceasta să fie scurtă şi pentru un program dat unică, deoarece se vor tasta al fiecare apelare multe taste) şi instrucŃiunea SHARED,
- urmează instrucŃiunea BROWSE LAST, care are rolul de a arăta ultima structură a tabelei selectate,
- iar în final se activează instrucŃiune MODIFY STRUCTURE,
care are rolul de a activa comanda de modificare a structurii iniŃial create.
11.3.4 FuncŃia meniu Edit şi Format a Visual FoxPro
FuncŃia meniu Edit se apelează direct cu succesiunea de taste Alt + E este o funcŃie prezentată în figura 11.14 care asigură efectuarea a 6 blocuri de instrucŃiuni de lucru în general în modul text:
- primul bloc cuprinde comenzile de ştergere sau revenire în cazul unor operaŃii nedorite de ştergere,
- al doilea bloc se ocupă cu tipurile de instrucŃiuni de tăiere, copiere, trecere normală sau specială şi ştergere,
- al treilea se ocupă cu selectarea tuturor elementelor, - al patrulea bloc se ocupă cu căutarea în cadrul unui program a
unei lini, a căutării unice sau repetitive şi a înlocuiri unei comenzi din program,
- al cincilea bloc grupează funcŃiile de inserare obiect şi legături, - ultimul este cel de editare a proprietăŃilor.
Figura 11.14 Comenzi ale barei de meniu Edit şi Format din Visual FoxPro
FuncŃia meniu Format se apelează direct cu succesiunea de taste Alt
+ F este o funcŃie prezentată în figura 11.14 care asigură efectuarea a 3 blocuri de instrucŃiuni de lucru în general în modul text:
- primul bloc cuprinde comenzile de alegerea caracterului şi a dimensiunilor acestuia,
- al doilea se referă la spaŃiul dintre linii fiind de tip selecŃie, - ultimul fiind un set de instrucŃiuni speciale.
11.3.5 FuncŃia meniu Tools şi Program a Visual FoxPro
FuncŃia meniu Tools se apelează direct cu succesiunea de taste Alt +
T este o funcŃie prezentată în figura 11.15 care asigură efectuarea a 4 blocuri de instrucŃiuni de apelare a interfeŃelor şi instrumentelor specifice:
- primul bloc cuprinde comanda de ajutor care este structurată pe
tipurile de fişiere prezentate în partea de definire a unui fişier nou subcapitolul 3,
- al doilea bloc este cel care se referă la automatizarea procesului de lucru cu programe prin crearea de macrouri, galerii de componente şi în final rularea documentului activ,
- al treilea bloc care este unic se ocupă de faza de verificare a unui program scris în Visual FoxPro din punct de vedere al programului sursă,
- ultimul bloc care este de asemenea singular este cel care se ocupă de setările implicite ale elementelor care constituie comenzile de lucru şi lansare salvare ale interfeŃei.
Figura 11.15 Comenzi ale barei de meniu Tools şi Program din Visual FoxPro
FuncŃia meniu Program se apelează direct cu succesiunea de taste
Alt + P este o funcŃie prezentată în figura 11.15 care asigură efectuarea a 2 blocuri de instrucŃiuni de lansare şi oprire:
- primul bloc cuprinde funcŃiile care permit lansarea în execuŃie a unui program, părăsirea, suspendarea execuŃiei acestuia sau rezumarea execuŃiei lui,
- al doilea bloc unic este cel care are rolul de a verifica funcŃionare programului.
Un rol aparte îl are aşa după cum am arătat sub funcŃia Options din funcŃia meniu Tools. În figura 11.15.a se prezintă ecranul care apare ca urmare a accesării acestei opŃiuni. Primul lucru se selectează tabela File
Locations după care va apărea o înşiruirea de instrucŃiuni şi locaŃii. Se va face dublu clic cu mausul pe Default Directory moment în care se activează următoarea fereastră Change File Location în care se bifează butonul radio Use default directory după care prin apăsarea cu mausul a butonului de căutare se activează o nouă fereastră cea numită Select Directory în care se selectează calea în care se găsesc fişierele de lucru ale programului. După validarea butoanelor Select, Ok, Set As Default, Ok se va realiza încărcarea căii în care sunt salvate fişierele de lucru.
Figura 11.15.a Comanda barei de meniu Tools sub comanda Options
11.3.6 FuncŃia meniu Window şi Help a Visual FoxPro
FuncŃia meniu Window se apelează direct cu succesiunea de taste Alt
+ W este o funcŃie prezentată în figura 11.16 care asigură efectuarea a 3 blocuri de instrucŃiuni de setare a parametrilor ferestrelor de lucru:
- primul bloc cuprinde comanda de unică de aranjare a tuturor ferestrelor într-o anumită ordine verticală, orizontală, etc.,
- al doilea bloc se ocupă de ascunderea, ştergerea sau succesiunea ferestrelor,
- ultimul se ocupă de comanda ferestrelor şi sesiunea de date. FuncŃia meniu Help se apelează direct cu succesiunea de taste Alt +
H este o funcŃie prezentată în figura 11.16 care asigură generarea instrucŃiunilor specifice oricărui program WINDOWS.
Figura 11.16 Comenzi ale barei de meniu Windows şi Help din Visual FoxPro
11.3.7 Modul de lucru prin comenzi în Visual FoxPro
Acest mod de lucru este diferit de cel anterior permiŃând realizarea a metode de abordare a utilizării programului total diferite:
- prima este de tip interpretare care asigură posibilitatea de a introduce o comenzi şi prin validarea cu tasta Enter se verifică corectitudinea acesteia. Acest mod de lucru permite:
o verificarea unor idei de program, o efectuarea unor operaŃiuni manuale în baza de date, o folosirea comenzilor SQL,
o apelarea unor comenzi necuprinse iniŃial în program pentru generarea de rapoarte sau formulare,
o întreŃinerea structurii bazei de date, o relansarea în execuŃie a unei comenzi anterioare prin
selectarea ei şi apăsarea tastei Enter. o a doua este cea de a verifica programele scrise în cod
sursă deci un lucru de compilare a unui program, subprogram sau funcŃie care se va utiliza ulterior într-un program executabil. Succesiunea etapelor parcurse la realizarea unui program este prezentată în figura 11.17
unde prima fază este cea de scriere a programului ( se poate realiza prin scriere în Notpad sau cu editorul de texte încorporat în program care asigură printr-o fereastră specifică scrierea programului, lansarea acestuia se realizează prin tastarea în fereastra de comanda a comenzii MODI COMM ) şi salvarea acestuia cu extensia .prg, după care urmează faza de compilare a programului care se lansează din meniul sistem (DO)fiind generat fişierul cu extensia .fxp pentru ca în final se realizează fişierul cu extensia .exe, ( el se obŃine prin lansarea din fereastra de comandă a instrucŃiunii RUN
TIME (BULID EXE)) acest stil permite: o dezvoltarea programelor în vederea realizării unor
aplicaŃii flexibile, o utilizarea tuturor comenzilor şi funcŃiilor speciale, o utilizarea comenzilor din nucleul SQL, o apelarea unor subprograme special create de programator
şi ne introduse în programul iniŃial.
Figura 11.17 Succesiunea fazelor de realizarea unui program în Visual FoxPro
OBS. Din meniul sistemului prin intermediul comenzii DO din Program se poate lansa în execuŃie un program generându-se fişierul cu extensia .fxp dar după executarea acestuia fişierul executabil nu se va păstra ci el va fi şters. NU acelaşi lucru se întâmplă şi cu fişierul compilat.
11.3.8 InstrucŃiuni de crearea şi modificarea unei baze de date
În mod uzual elementul central al unei baze de date este cel al realizării unui tabel.
El poate fi în primă fază creat pentru ca ulterior să poată fi dacă este necesar modificat prin adăugare de câmpuri, modificare de câmpuri existente ca şi dimensiune, tip sau respectiv ştergerea de câmpuri. Este foarte important însă ca modificările să fie făcute înainte de a lansa în utilizare baza de date deoarece orice modificare a tabelelor poate produce pierderea de date prin ştergere sau lipsa unor date din tabele prin adăugare de câmpuri ulterioare.
Comanda pentru crearea unei tabele este: - tastând CREATE produs prin care se creează o bază de date cu
extensia .dbf intrându-se în faza de editare a tabelei. Obs. Câmpurile din Table Designer au anumite restricŃii specifice: - cel de tip Name nu poate fi mai lung de 10 caractere începând cu
o literă, - pentru cele de tip Type dacă sunt:
o Character nu au voie să fie mai luni de 254 caractere, o Numeric nu mai lungi de 20 caractere inclusiv +/-,
o Logic maxim un caracter, o Data maxim 8 caractere cu forma implicita ll/zz/aa,
format care se poate schimba prin lansarea comenzii SET
DATE TO, o Memo admite implicit 10 caractere dar pot fi introduse
oricâte caractere. - pentru cele de tip With se introduce valoarea numerică selectată
din schema logică tabelară, - pentru cele tip Decimal se va introduce numărul de cifre după
zero dorite, - pentru câmpul Index se poate selecta modalitatea de indexare a
tabelei la introducerea datelor în aceasta, lucru care permite din start o ordonare a tabelei fără a fin necesară o sortare ulterioară a acesteia.
Există însă şi alte modalităŃi de a crea o tabelă: - crearea unei noi tabele cu structura unei tabele existente în
director, bucla de comandă fiind: USE client
COPY STRUCTURE TO clientn
Varianta completă a instrucŃiunii este:
COPY STRUCTURE TO nume-tabel FIELDS listă-câmpuri
WITH CDX / WITH PRODUCTION DATABASES nume-bază de
date NAME nume-tabelă
unde: - nume-tabel este numele tabelei nou create; - listă-câmpuri este lista câmpurilor din noua tabelă; - nume-bază de date este numele bazei de date; - nume-tabelă este numele tabelei.
Avantajul copierii structuri unei baze de date tabelară în altă bază de
date este dat de faptul că nu se pot face greşeli de dimensiuni de câmpuri sau tip de caracter care la legarea tabelelor poate să producă erori. De aceea una dintre metodele pe care le considerăm a fi bine a se utiliza este de a crea o tabelă iniŃială unică cu toate câmpurile de legătură dintre tabele numită sursă
urmând ca după aceea prin copierea structurii acesteia în celelalte tabele şi adăugarea câmpurilor ne comune să se evite eventualele erori mai sus menŃionate.
Comanda pentru crearea unei baze de date este: - CREATE DATABASE produs prin care se creează o bază de
date cu extensia .dbc
Comanda pentru modificarea unei baze de date este: - MODIFY STRUCTURE prin care se deschide o fereastră de
dialog care permite modificarea structurii prin selectarea unei baze de date tip tabelar. Există două modalităŃi:
o prima prin folosirea buclei program şi alegerea tabelului, USE
MODIFY STRUCTURE
o a doua pe baza buclei când ştim tabelul, USE client1
MODIFY STRUCTURE
11.3.9 Deschiderea şi închiderea unei baze de date
Această operaŃie este necesară pe întreg parcursul lucrului cu bazele de date uzual de tip tabelar. Aceasta face parte din cadrul manevrelor de manipulare a bazelor de date.
Figura 11.18 Adăugarea unei înregistrări cu comanda APPEND
Prima dintre acestea este cea de adăugare de noi înregistrări într-o bază de date nou creată sau una în care s-au mai încărcat date, instrucŃiunile fiind cele de mai jos:
USE client
APPEND
În Acest caz se deschide o nouă fereastră care este prezentată în figura 11.18 cu activarea primului câmp liber din tabel. A doua este cea de modificare a unor înregistrări dintr-o tabelă existentă. Există mai multe instrucŃiuni, fiecare dintre acestea având anumite caracteristici:
- prima dintre acestea este comanda CHANGE care permite modificarea unei tabele cu ajutorul unei ferestre figura 11.19 de editare în interiorul căreia cu ajutorul cursorului luminos şi a săgeŃilor sus jos se poate ajunge la înregistrarea care se doreşte a se modifica . Se poate modifica însă şi o anumită înregistrare caz în care trebuie specificată de exemplu câmpul Nr_f (număr factură) caz în care instrucŃiunea este următoarea:
CHANGE FIELDS Nr_f
Această variantă are un dezavantaj că trebuie reŃinută denumirea câmpurilor
Figura 11.19 Modificarea unei înregistrări cu comanda CHANGE
- a doua comandă este cea BROWSE care asigură afişarea şi
editarea înregistrărilor dintr-o tabelă situaŃie prezentată în figura
11.20, în care se observă că informaŃia este organizată pe orizontală pentru fiecare înregistrare şi nu pe verticală ca în cazul anterior pentru prima comandă. În capul tabelului se găsesc denumirile câmpurilor şi succesiv fiecare înregistrare. Cu ajutorul săgeŃilor se poate realiza deplasarea pe verticală sau orizontală, iar cu pg_up sau pg_dn între pagini. Şi pentru această comandă există posibilitatea modificării unui anumit câmp ca şi pentru cealaltă comandă.
Figura 11.20 Modificare unei înregistrări cu comanda BROWSE
- a treia variantă de înlocuire a datelor este comanda REPLACE
care modifică înregistrările tabelei curente prin înlocuire cu datele conŃinute în câmpul de înlocuire. În figura 11.21 este prezentată fereastra de comandă şi la partea superioară prin folosirea comenzii BROWSE rezultatul înlocuirii numărului de factură pentru toate înregistrările cu valoarea 1. Liniile de comandă utilizate sunt cele de mai jos:
Figura 11.21 Modificare prin înlocuire a înregistrărilor cu comanda REPLACE
USE client
REPLACE ALL Nr_f WITH 1
Rezultă că această instrucŃiune poate înlocui datele dintr-un tabel cu valorile dorite noi.
Din punctul de vedere al comenzilor ca şi structură completă acestea au următoarea sintaxă: CHANGE FIELDS listă-câmpuri scope FOR expL1 WHILE
expL2 FONT expC1, expN1 STYLE expC2 FREEZE camp KEY
expr1, expr2 LAST LEDIT REDIT LPARTITION NOAPPEND
NOCLEAR NODELETE NOEDIT NOMODIFY NOLINK NOMENU
NOOPTIMIZE NORMAL NOWAIT PARTITION expN2 PREFERENCE
expC3 REAT SAVE TIMEOUT expN3 TITLE expC4 VALID :F
expL3 ERROR expC3 WHEN expL4 WIDTH expN4 WINDOW
nume-fer1 IN WINDOW nume-fer2 / IN SCREEN COLOR
SCHEME expN5 / COLOR lista-culori
unde: - listă-câmpuri afişează numai câmpurile din listă; - scope este clauza care defineşte condiŃiile de selecŃie; - expL1, expL2 sunt condiŃiile pentru care expresiile sunt
adevărate; - camp permite modificarea la un singur câmp şi afişarea acestuia; - exp reprezintă expresii sau condiŃii care trebuie îndeplinite; - nume-fer reprezintă activată în fereastra iniŃială; - lista-culori stabileşte lista de culori.
BROWSE FIELDS listă-câmpuri FONT expC1, expN1 STYLE
expC2 FOR expL1 FREEZE camp KEY expr1, expr2 LAST
LEDIT REDIT LPARTITION NOAPPEND NOCLEAR NODELETE
NOEDIT NOMODIFY NOLINK NOMENU NOOPTIMIZE NORMAL
NOWAIT PARTITION expN2 RES PREFERENCE expC3 TITLE
expC4 SAVE VALID expL2 ERROR expC5 WHEN expL3 WIDTH
expN5 WINDOW nume-fer1 IN WINDOW nume-fer2 / IN
SCREEN COLOR SCHEME expN5 / COLOR lista-culori
unde: - listă-câmpuri afişează numai câmpurile din listă; - scope este clauza care defineşte condiŃiile de selecŃie; - expL1, expL2 sunt condiŃiile pentru care expresiile sunt
adevărate; - camp permite modificarea la un singur câmp şi afişarea acestuia; - exp reprezintă expresii sau condiŃii care trebuie îndeplinite; - nume-fer reprezintă activată în fereastra iniŃială; - lista-culori stabileşte lista de culori.
Comenzile de închidere sunt de mai multe tipuri: - închide toate tipurile de fişiere: CLOSE ALL; - închide fişierele de tipul definit: CLOSE ALTERNATE; - închide toate tabelele: CLOSE DATABASE; - închide toate fişierele tip format: CLOSE FORMAT; - închide toate fişierele index: CLOSE INDEX; - închidere fişiere de proceduri: CLOSE PROCEDURE.
11.3.10 Comenzi de gestionare a fişierelor în VisualFoxpro
Lucrul cu fişiere se bazează pe mai multe tipuri de operaŃii: - copiere: Copy file nume to nume1, - redenumire: Rename nume to nume1, - ştergere: Erase nume, sau Delete file nume, - afişarea conŃinutului unui fişier: Type nume to printer,
Type nume to file nume1, - afişarea conŃinutului unui director: Dir C:/ to printer. Un set special de lucru este cel de adăugare de înregistrări în tabele. Sintaxa comenzii este:
APPEND FROM nume-fişier ? FIELDS listă-câmpuri FOR expr-
log TYPE DELIMITED WITH TAB / WITH BLANK / WITH
delimitator DIF
unde: - nume-fişier este numele fişierului de unde se importă datele; - ? va determina apariŃia ferestrei de dialog Directory din care se
va alege tabela sursă;
- listă-câmpuri reprezintă câmpurile ale căror valori vor fi
adăugate în tabela nou creată; - expr-log este condiŃia de realizare a importului; - TYPE defineşte extensia fişierului sursă care poate fi:
o DIF extensie folosită de Visicalc; o XLK extensie folosită de Microsoft Excel ver.2.0; o PDOX extensie folosită de Paradox, etc.
O altă variantă este cea de APPEND GENERAL. Este de următoarea structură: APPEND GENERAL câmp-general FROM nume-fişier DATA CEXp
LINK CLASS clasă_OLE
unde: - câmp-general conŃine numele câmpului de tip general care va fi
memorat; - nume-fişier este fişierul din care se extrage conŃinutul unui obiect
OLE; - clasă_OLE specifică în mod explicit clasa de obiecte OLE.
De exemplu importul unei foi de calcul EXCEL într-un câmp de tip general: APPEND GENERAL OBIECTOLE FROM “FOAIE1.XLC” CLASS
EXCELCHART
O altă comandă de este cea de adăugare a unei noi înregistrări într-o tabelă care este activă. Dacă lucrează mai mulŃi utilizatori simultan, în momentul activării introducerii datelor tabela este blocată pentru alŃi utilizatori, urmând ca aceştia să o poată activa numai după terminarea înregistrării. Sintaxa este: APPEND FROM ARRAY var-matrice FOR expr-log FIELDS listă-
câmpuri / FIELDS LIKE şablon / FIELD EXCEPT şablon
unde:
- var-matrice este numele masivului care va alimenta tabela; - expr-log este condiŃia de realizare a importului;
- listă-câmpuri reprezintă câmpurile ale căror valori vor fi adăugate în tabela nou creată;
- expr-log este condiŃia de realizare a importului;
11.3.11 Ştergerea datelor dintr-o bază de date
Este o operaŃie importantă ea putând anula o înregistrare greşit introdusă de exemplu s-a emis un aviz dar pe el s-a greşit o valoare constată la faza de facturare, în acest moment avizul se restituie integral se anulează prin barare înregistrarea făcută se şterge. Nu acelaşi lucru se întâmplă dacă o factură a fost înregistrată în contabilitate într-o anumită zi şi la o altă dată se constată greşeala. În acest moment se emite o factură în roşu care anulează factura iniŃială urmând ca apoi să se emită o factură nouă.
Există mai multe variante de ştergere funcŃie de scopul urmărit: - prima dintre acestea este comanda DELETE. Ea asigură
marcarea articolelor în vederea ştergerii. Dacă cumva se doreşte recuperarea lor se poate folosi comanda RECALL. Ştergerea fizică se face după comanda DELETE prin folosirea comenzii PACK.
- a doua variantă este cea care este dată de comanda ZAP. Aceasta asigură ştergerea fizică a tuturor articolelor din tabela curentă. Ea este echivalentă cu comanda DELETE ALL urmată de comanda PACK dar ca durată de timp este mai scurtă deoarece nu mai există pasul intermediar de marcare şi pasul de verificare înregistrare cu înregistrare dacă este marcată sau nu pentru ştergerea definitivă.
- a treia variantă este cea care asigură ştergerea tuturor tabelelor care se realizează cu comanda DELETE FILE.
Fişierele şterse cu această comandă nu mai sunt recuperabile!!!.
- a patra variantă este cea dată de comanda SET DELETED
ON/OFF care se foloseşte pentru a arăta dacă comenzile marcate vor fi şterse sau nu.
11.3.12 Sortarea, ordonarea, indexarea unei baze de date
Una dintre fazele cele mai importante ale lucrului cu o bază de date este cea de sortare şi ordonare după un anumit criteriu. Această fază poate uşura foarte mult lucru cu o bază de date în vederea găsirii unei informaŃii sau grup de informaŃii. Lucrul este cu atât mai necesar deoarece încărcarea datelor într-o bază de date se face în mare măsură aleatoriu fără a se face o ordonare a actelor.
Sortarea unei tabele se face cu ajutorul comenzii SORT. Ea se poate realiza la nivelul unui câmp sau la nivel de tabel. Pentru sortarea la nivelul unui câmp instrucŃiunile de comandă care sunt necesare sunt:
USE client
SORT ON Nume_cl /A TO client1
La nivel de câmp se observă că după apelarea tabelei care se doreşte
a se sorta se trece la introducerea liniei de comandă care are mai multe caracteristici. Prima este că după instrucŃiunea tipică SORT ON se va introduce numele câmpului care se va supune procesului de sortare urmat de unul din cele două moduri de sortare a câmpului:
- crescător comandă simbolizată cu /A, - descrescător comandă simbolizată cu /D.
Urmează introducerea numelui nou al tabelei în care se va trece rezultatul tabelei sortate. Rezultă deci că avem un avantaj că prin folosirea acestei comenzi se găsesc în calculator ambele tabele. Ştergerea tabelului rezultat după sortare se poate face cu seria de comenzi: DELETE FILE client1
PACK
Tabelul iniŃial
Sortarea tabelului după mai multe câmpuri se face prin selectarea succesivă a ordini după care să se realizeze sortarea în modul dorit. Liniile de comandă sunt:
USE client
SORT ON Nume_cl /A, Nr_f /A TO client1
În această situaŃie tabelul fiind sortat ascendent după numele
clientului şi pentru acelaşi client în ordinea crescătoare după numărul de factură.
Figura 11.21 Sortarea tabelului client după câmpul Nume_cl cu comanda SORT
Un alt mod de sortare este cel după o anumită condiŃie. Liniile de comandă folosite sunt:
USE client
SORT ON Nume_cl /A TO client1 FOR gigi
O altă modalitate de ordonare a unei tabele se poate realiza cu ajutorul
comenzii INDEX care este o comandă de indexare a unui tabel. Pentru un tabel cu dimensiuni mari comanda de sortare durează mult motiv pentru care se recomandă sortarea prin indexare. Un alt dezavantaj al sortării este că după orice introducere de date este necesară o nouă sortare care implică continuu ca spaŃiul folosit să crească dublu faŃă de dimensiunile iniŃiale. Comanda de indexare se poate folosi numai pentru un câmp. O modalitate eficientă de
lucru este şi aceea de a defini la începutul lucrului cu tabele la faza de creare a tabelei o cheie de indexare pe criteriul dorit în acest moment apare un fişier suplimentar cu extensia .cdx şi acelaşi nume cu cel iniŃial. Acest lucru face ca baza de date să fie indexată automat la introducerea datelor. Pentru buna funcŃionare a comenzii INDEX este necesară setarea comenzii SET TALK la valoarea ON. Linia de comandă este următoarea:
USE client
INDEX ON Nume_cl TO client1.idx
O altă modalitate este cea de indexare după mai multe câmpuri a cărei
linii de comandă sunt prezentate mai jos:
USE client
INDEX ON Nume_cl +Localit TO client1.idx UNIQUE
Indexarea se face după nume client şi localitate simultan fără a admite
înregistrări duble. Deoarece comanda nu ştie să lucreze în paralel cu variabile text şi numerice pentru a transforma o variabilă numerică în una text se va folosi instrucŃiunea STR(Nr_f, 7).
O altă modalitate este indexarea după un anumit criteriu dat prin intermediul comenzii FOR. De exemplu se va face selectarea după criteriul Localiat Timişoara. Liniile de comandă sunt:
USE client
INDEX ON Nume_cl FOR Localit=Timisoara TO client1.idx
?? NDX(1) && Afişează primul fişier indexat
? RECOUNT() && Afişează numărul de înregistrări indexate
CLOSE ALL
Se observă apariŃia faŃă de variantele anterioare a trei linii
suplimentare. Prima aşa după cum se observă şi în partea dreaptă din mesajul text de ajutor afişează numele primului fişier indexat, operaŃie necesară pentru a determina apoi numărul de înregistrări indexate în linia a patra din setul de instrucŃiuni. În final sunt închise toate tabelele deschise în linia de instrucŃiune cinci.
OBS.
- Indexarea după câmpuri numerice multiple poate să nu ofere acelaşi rezultat dorit,
- Probleme pot să apară şi dacă se uită să se activeze un anumit tabel index şi se folosesc instrucŃiuni care lucrează numai cu tabelele index active.
11.3.13 InstrucŃiuni de acces la o bază de date
Un alt set de instrucŃiuni importante este cel de acces la date care sunt cuprinse în tabel. Există comenzi care lucrează numai cu tabele indexate şi respectiv comenzi care lucrează numai cu tabele indexate.
Prima dintre acestea este comanda GO. Ea poziŃionează punctul de acces în tabel pe înregistrarea fizică specificată. Liniile de comandă sunt:
USE client
GO 3
În acest caz se poziŃionează cursorul pe înregistrarea a treia din tabelă. Pentru a vedea pe care înregistrare este poziŃionat cursorul se poate folosi instrucŃiunea RECON(). Se poate realiza şi poziŃionarea pe prima înregistrare din tabel cu instrucŃiunea GO RECON(0). O altă comandă care se poate utiliza este SKIP care permite poziŃionarea cursorului pe o anumită înregistrare faŃă de cea curentă. Linia de comandă este:
USE client
SKIP-3 IN client
Cursorul se va poziŃiona pe înregistrarea situată cu trei linii înaintea celei curente. O altă comandă este cea LOCATE. Ea permite căutarea într-o tabelă pentru o anumită condiŃie fără a fi necesară indexarea tabelului. Sistemul găseşte prima înregistrare care satisface condiŃia impusă şi abandonează căutarea celorlalte chiar dacă satisfac condiŃia. Liniile de comandă sunt:
USE client
LOCATE FOR Nr_f’=1234
O altă serie de comenzi este cea SEEK şi FIND. Aceste comenzi
USE client
INDEX ON Nr_f TO IDBEN
FIND 1234
DISP
CLOSE ALL
lucrează numai cu fişiere indexate. Liniile de comandă pentru aceste instrucŃiuni sunt:
USE client
INDEX ON Nr_f TO IDBEN
W=1234
SET INDEX TO INDEN
SEEK W sau SEEK 1234
DISP
CLOSE ALL
11.3.14 InstrucŃiuni de vizualizare a datelor dintr-o bază de date
În afară de crearea, căutarea şi prelucrarea datelor dintr-o tabelă mai avem şi afişarea înregistrărilor dintr-o tabelă. Există două modalităŃi. Prima este comanda LIST care permite vizualizarea tuturor înregistrărilor şi nu face pauză pentru liste mai mari de un ecran şi nu sunt afişate înregistrările marcate pentru ştergere dacă comanda SET DELETED este setată pe ON. Comanda specifică este de mai multe tipuri:
- pentru afişarea structurii tabelei: USE client
LIST STRUCTURE
- pentru USE client
LIST
11.3.15 Sintaxa comenzilor de configurarea mediului Visual
FoxPro
Există o serie de comenzi care se recomandă să fie setate la începerea lucrului cu programul de calcul. Rolul acestora este de a asigura funcŃionarea corespunzătoare a programului.
Primele sunt cele de starea sistemului (cu litere îngroşate este reprezentată comanda, iar cu On sau Off modul de lucru cuplat sau decuplat):
- sunet: Set Bell On/Off, - ceasul: Set Clock On/Off, - bara de stare: Set Status Bar On/Off, - clipirea ecranului: Set Blink On/Off, - afişare rezultat comenzi: Set Talk On/Off, - setare director curent: Set Default to C:/, - setare afişare ceas pe ecran: Set clock to [x,y], - setare afişare oră pe ecran: Set Hours to [12/24], Pentru configurarea tipului de date: - număr de zecimale: Set Decimals to [2], stabileşte numărul de
zecimale la 2, Pentru controlul ieşirilor de informaŃii: - ieşirea către ecran: Set Console On/Off, - ieşirea către imprimantă: Set Printer On/Off, - ieşirea spre un fişier: Set Printer to [nume fi;ier]
11.3.16 ModalităŃi de legare a tabelelor dintr-o bază de date
Legăturile servesc la manipularea informaŃiilor între tabelele unei baze de date. Această manipulare se poate realiza atât la nivelul limbajului de programare, cât şi la nivelul instrucŃiunilor printr-o comandă specială.
La nivelul programului se face prin scrierea unei proceduri care este specifică limbajului de programare.
11.3.17 Realizarea programelor în Visual FoxPro
Limbajul de programare specific conŃine comenzi la apelarea cărora se efectuează realizarea automată a anumitor faze de prelucrare a tabelelor de date.
Crearea unui program sursă se face prin intermediul instrucŃiunii
MODIFY COMMAND, care apelează editorul de texte propriu al sistemului.
11.3.18 Tipuri de extensii ale limbajului Visual FoxPro
Există câteva extensii standard recunoscute de sistem: • .dbf – tabele bază de date; • .dbc – fişier bază de date; • .prg – fişier de comenzi program; • .fpt – fişier care conŃin câmpuri memo; • .idx – fişier care conŃine indecşi; • .cdx – fişier care conŃine indecşi;
Bibliografie
1. Mirela Munteanu, ş.a. – Dezvoltarea aplicaŃiilor cu baze de
date în Visual FoxPro. Editura BIC ALL, Bucureşti, 2001. 2. Dima Gabriel şi Mihai – Fox 2.7 sub Windows Editura Teora,
Bucureşti, 2002.