Comenzi FoxPro

 

Formatul general al unei comenzi:

nume_comanda [domeniu] [prelucrare] [clauza1] [clauza2] [...] [destinatie/ sursa]
Unde :
-nume_comanda este de obicei un verb, cuvant cheie
-numele comenzii poate fi specificat in intregime sau prescurtat la primele 4 caractere
-domeniu, specifica zona din tabela pe care se aplica comanda (ALL, NEXT n, REST, RECORD n)
-prelucrare, nume de campuri asupra carora se face prelucrarea sau modalitatea in care se face aceasta
-destinatie/ sursa, numele destinatiei rezultatelor prelucrarii, respectiv sursei din care se vor prelua date

  1. Comenzi de lucru cu directoare
    1. SET DEFAULT TO <dir> -- setarea directorului de lucru curent
      Exemplu:
      SET DEFAULT TO "d:\12_a"
    2. SET DIRE TO <dir> -- setarea directorului de lucru curent
      Exemplu:
      SET DIRE TO "d:\12_a"
    3. SET PATH TO <lista_dir> -- indicarea directoarelor de cautare; Daca fisierul indicat intr-o comanda nu se gaseste in directorul de lucru curent, se extinde cautarea si in directoarele din lista_dir
      Exemplu:
      SET PATH TO "d:\12_b, c:\"
  2. Comenzi de lucru cu structura tabelelor
    1. Crearea unei tabele
      1. Folosind optiunile de meniu File/New/<< OK >> -- initiaza crearea unei tabele in directorul de lucru curent folosind meniuri
      2. CREATE nume_tabela -- initiaza crearea unei tabele in directorul de lucru curent
        Exemplu:
        CREATE fructe
      3. CREATE TABLE/ DBF nume_tabela (<lista_definitii>) -- creeaza o tabela in directorul de lucru curent
        Exemplu:
        CREATE TABLE fructe (nume C(10), pret N(8))

        Observatii:
        -<definitie>: =<nume_camp> <tip>[([<lungime>] [,<zecimale>])]
        -constructia <tip> este una din literele asociate tipurilor de date {C, N, D, L, M, G}
        -numele unei tabele contine maxim 8 caractere
        -numele unui camp contine maxim 10 caractere
        -la punctul c. intre numele tabelei "fructe" si paranteza deschisa "(" trebuie sa fie un spatiu
    2. MODIFY STRUCTURE -- permite accesul utilizatorului la structura tabelei curente
    3. LIST/ DISPLAY STRUCTURE -- afisarea structurii tabelei curente
    4. COPY STRUCTURE TO nume_tabela_noua [FIELDS lista_campuri/ FIELDS LIKE sablon/ FIELDS EXCEPT sablon] -- crearea unei noi tabele pornind de la cea activa prin preluarea unei submultimi de campuri
      Exemplu:
      Daca tabela fructe (nume C(10), pret N(8)) este activa putem crea o alte tabele astfel:
      COPY STRUCTURE TO fructe1 FIELDS nume -- noua tabela contine coloana nume
      COPY STRUCTURE TO pret2 FIELDS LIKE pr* -- noua tabela contine coloana pret
      COPY STRUCTURE TO fructe3 FIELDS EXCEPT p?re* -- noua tabela contine coloana nume
    5. COPY TO nume_tabela_noua [domeniu] [FIELDS lista_campuri] [FOR/ WHILE conditie] -- copiaza articole ale tabelei curente intr-o noua tabela
      Exemplu:
      Daca tabela fructe (nume C(10), pret N(8)) este activa putem crea o alta tabela astfel:
      COPY TO fructe2 FIELDS nume NEXT 3 FOR pret >100 -- din tabela curenta vor fi extrase incepand cu randul curent trei inregistrari consecutive. Acestea vor fi depuse intr-o noua tabela care contine doar coloana nume.
      Clauza FOR conditie permite selectarea articolelor din domeniu care verifica conditia.
      Clauza WHILE conditie permite selectarea articolelor din domeniu cata vreme conditia este adevarata.

  3. Afisarea articolelor unei tabele
    1. LIST/ DISPLAY [domeniu] [lista_campuri] [FOR/ WHILE conditie] [OFF]
      Observatii:
      -domeniul implicit pentru comanda LIST este ALL
      -domeniul implicit pentru comanda DISPLAY este articolul curent
      -clauza OFF inhiba afisarea numarului de articol inaintea primului camp
      -comanda DISPLAY face o pauza la umplerea unui ecran
      -in lista de campuri pot avea si campuri calculate

  4. Mod de lucru program
    1. MODIFY COMMAND nume_fisier_program -- deschide o fereastra de editare atat pentru crearea cat si pentru modificarea unui program sursa
    2. DO nume_fisier_program -- lanseaza in executie un program
      Observatii:
      -numele fisierului program trebuie sa aiba cel mult opt caractere
      -programul se executa pana la terminarera fisierului sau pana la intalnirea comenzii RETURN

  5. Modificarea articolelor dintr-o tabela
    1. EDIT [domeniu] [FIELDS lista_campuri] [FOR/ WHILE conditie] -- afiseaza campurile articolelor pentru editare
    2. REPLACE [domeniu] camp1 WITH expresie1 [, camp2 WITH expresie2 ] [,…] [FOR/ WHILE conditie] -- inlocuirea valorii existente in campul camp1 cu valoarea expresiei expresie1, a valorii existente in campul camp2 cu valoarea expresiei expresie2,...
      Observatii:
      -domeniul implicit este articolul curent
    3. BROWSE [domeniu] [FIELDS camp1 [:R] [:V= exp1] [:H= sir1] [, camp2 [:R] [:V= exp2] [:H= sir2] [...] [LOCK nr ] [FOR conditie] [FREEZE nume_camp] [NOAPPEND] [NOEDIT] [NODELETE] -- afiseaza o fereastra Browse pentru vizualizarea si actualizarea datelor din una sau mai multe tabele
      Observatii:
      -clauza FIELDS permite enumerarea campurilor care vor forma coloanete tabelului ferestrei
      -in lista de campuri pot aparea si campuri calculate care vor putea fi doar vizualizate, nu si editate
      -pentru un camp putem interzice editarea [:R]
      -pentru un camp putem preciza conditia de validare la introducerea valorilor [:V= exp]
      -schimbarea numelui campului [: H= sir]
      -clauza LOCK nr permite inghetarea pe ecran a primelor nr coloane (campuri) in timpul defilarii tabloului Browse spre stanga sau spre dreapta
      -clauza FREEZE nume_camp permite mentinerea cursorului pe o singura coloana
      -clauza NOAPPEND interzice adaugarea de noi articole in tabela
      -clauza NOEDIT interzice editarea articolelor
      -clauza NODELETE impiedica stergerea accidentala de articole

  6. Adaugarea articolelor intr-o tabela
    1. APPEND [ BLANK ] -- adauga un articol vid la sfârsitul tabelei, permiand si editarea lui daca lipseste BLANK
    2. INSERT BLANK [ BEFORE ] – adauga o inregistrare vida dupa inregistrarea curenta, sau inaintea ei
    3. APPEND FROM nume_tabela [ FIELDS lista_câmpuri ] [ FOR conditie ] – preia articole din tabela nume_tabela si le adauga in tabela activa

  7. Stergerea articolelor dintr-o tabela
    1. DELETE [ domeniu ] [ FOR/ WHILE conditie ] – marcheaza articolele pentru stergere (stergerea logica)
    2. RECALL [ domeniu ] [ FOR conditie ] – demarcheaza articolele marcate pentru stergere
    3. PACK – sterge efectiv (fizic) articolele marcate pentru stergere
    4. ZAP – sterge toate articolele dintr-o tabela (se pastreaza doar structura tabelei)
      Observatii:
      -Functia DELETED( ) – returneaza .T. daca articolul curent este marcat pentru stergere si .F. in caz contrar.
      -Comutatorul SET DELETED ON/ OFF, setat pe ON, determina ignorarea articolelor marcate pentru stergere

  8. Pozitionarea intr-o tabela
    1. GO n, GO TOP, GO BOTTOM – pozitionare absoluta
    2. SKIP [ n ] – pozitionare relativa
    3. LOCATE [ domeniu ] FOR conditie – pozitioneaza pointerul de inregistrare pe primul articol care indeplineste conditia data
    4. CONTINUE – cauta in continuare articole care indeplinesc conditia din ultimul LOCATE
    5. LOOKUP (camp1, expresie, camp2) – cauta prima aparitie a expresiei date in cadrul câmpului camp2 si returneaza valoarea lui camp1 a inregistrarii gasite
    6. FOUND() – functie care intoarce .T. daca in urma comenzii LOCATE a fost gasit un articol care indeplineste conditia si .F., altfel

  9. Functii articole
    1. RECNO( ) – intoarce numarul de inregistrare al articolului curent (Record Number)
    2. RECCOUNT( )– intoarce numarul total de articole (Record Counter)
    3. EOF( )– intoarce .T. daca pointerul de inregistrare se afla dupa ultima inregistrare (End Of File)
    4. BOF( )– intoarce .T. daca pointerul de inregistrare se afla inaintea primei inregistrari (Begin Of File)

  10. Comenzi pentru efectuarea unor calcule
    1. SUM [domeniu] [lista_expresii] [FOR/ WHILE conditie] [TO lista_memovariabile] -- insumarea valorilor articolelor selectate conform conditiilor FOR/ WHILE
    2. AVERAGE [domeniu] [lista_expresii] [FOR/ WHILE conditie] [TO lista_memovariabile] -- calculul mediei aritmetice a valorilor expresiilor din lista_expresii pentru articolele selectate conform conditiilor FOR/ WHILE
    3. CALCULATE [domeniu] [lista_expresii] [FOR/ WHILE conditie] [TO lista_memovariabile] -- calculeaza valorile mai multor expresii. In alcatuirea unei expresii pot intra urmatoarele functii:
      -AVG(exp_num) -- calculul mediei aritmetice a expresiei exp_num ce poate contine campuri numerice ale tabelei active
      -CNT() -- numararea articolelor din tabela activa
      -SUM(exp_num) -- insumarea valorilor expresiei exp_num ce poate contine campuri numerice ale tabelei active
      -MAX(exp_num) --extrage cea mai mare valoarea a expresiei exp_num calculata pentru fiecare articol selectat al tabelei active
      -MIN(exp_num) --extrage cea mai mica valoarea a expresiei exp_num calculata pentru fiecare articol selectat al tabelei active
    4. COUNT [domeniu] [FOR/ WHILE conditie] [TO lista_memovariabile] -- numara articolele din tabela activa,depunand eventual rezultatul intr-o variabila

    5. ...

  11. Sortare
    1. SORT TO fis.dbf ON criteriu [/A][/D][/C] [ASCENDING/ DESCENDING] [FIELDS lista_campuri] [domeniu] [FOR conditie] [ WHILE conditie]

  12. Diverse
    1. USE nume_tabela -- deschide tabela nume_tabela, aceasta devenind tabela de lucru curenta
    2. CLOSE DATABASES -- inchiderea tuturor tabelelor indiferent de zona in care au fost deschise
    3. SET DECIMALS TO expn – seteaza numarul de zecimale care vor fi afisate in cazul datelor reale. Implicit, afisarile se fac cu 2 zecimale.