limbajul visual foxpro

34
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

Upload: mona1910

Post on 18-Jun-2015

1.476 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Limbajul Visual FoxPro

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

Page 2: Limbajul Visual FoxPro

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

Page 3: Limbajul Visual FoxPro

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.

Page 4: Limbajul Visual FoxPro

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

Page 5: Limbajul Visual FoxPro

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.

Page 6: Limbajul Visual FoxPro

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

Page 7: Limbajul Visual FoxPro

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:

Page 8: Limbajul Visual FoxPro

- 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

Page 9: Limbajul 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

Page 10: Limbajul Visual FoxPro

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ă

Page 11: Limbajul Visual FoxPro

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,

Page 12: Limbajul Visual FoxPro

- 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.

Page 13: Limbajul Visual FoxPro

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:

Page 14: Limbajul Visual FoxPro

- 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,

Page 15: Limbajul Visual FoxPro

- 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

Page 16: Limbajul Visual FoxPro

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,

Page 17: Limbajul Visual FoxPro

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.

Page 18: Limbajul Visual FoxPro

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 +/-,

Page 19: Limbajul Visual FoxPro

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ă

Page 20: Limbajul Visual FoxPro

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.

Page 21: Limbajul Visual FoxPro

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

Page 22: Limbajul Visual FoxPro

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ă.

Page 23: Limbajul Visual FoxPro

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:

Page 24: Limbajul Visual FoxPro

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

Page 25: Limbajul Visual FoxPro

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ă;

Page 26: Limbajul Visual FoxPro

- 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;

Page 27: Limbajul Visual FoxPro

- 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.

Page 28: Limbajul Visual FoxPro

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

Page 29: Limbajul Visual FoxPro

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

Page 30: Limbajul Visual FoxPro

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.

Page 31: Limbajul Visual FoxPro

- 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

Page 32: Limbajul Visual FoxPro

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

Page 33: Limbajul Visual FoxPro

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.

Page 34: Limbajul Visual FoxPro

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.