Capitolul 38 Lucrul cu dbf

Implementarea bazelor de date DBF înseamnă că fiecare tabelă este stocată într-un fișier separat. Prin urmare, în viitor vom folosi termenul "fișier de bază de date" sau "fișier de bază de date", referindu-se la tabela de baze de date.







Pentru a organiza ordonarea conținutului unui fișier de bază de date și căutarea în el cu valoarea unuia sau mai multor câmpuri, se utilizează mecanismul index. Aplicarea sa poate fi comparată cu sortarea fișierului cu un anumit semn (set de caracteristici). Cu toate acestea, spre deosebire de un fișier de card, un fișier de bază de date poate avea mai multe indexuri simultan și, prin urmare, poate fi comandat simultan de mai multe caracteristici. Fiecare index are un nume. dovada originalității. expresia indexului și a filtrului. Numele indexului este utilizat pentru a identifica indexul. expresii index și filtru sunt scrise în expresii limbaj special, calcula valoarea care, pentru fiecare intrare pentru a determina sa mi-o sută atunci când comanda și nevoia de plasarea într-un somn-suc ordonat (indicele poate conține referințe nu toate înregistrările de masă, și Acoperișuri la despre satisfacerea expresiei filtrului). Expresiile index și filtru, aplicate obiectelor XBase, sunt discutate mai detaliat la sfârșitul acestei secțiuni. Un index unic (având un set de caracteristici unic) permite trimiterea indexului la intrări cu o valoare diferită a expresiei index.

Indicii sunt stocați într-un fișier index. Un fișier index poate conține informații despre mai multe indici.

Alocarea tipului de date agregate XBase

Pentru a lucra cu bazele de date DBF din sistem, puteți utiliza un tip de date agregat special - XBase. Motorul bazei de date DBF este proiectat pentru a putea fi manipulat direct de la limba încorporată a programului 1C: Enterprise. Fiecare obiect XBase poate fi asociat unui singur fișier de bază de date.

Obiectele XBase au un set de atribute în schimbare dinamic, compoziția și tipul cărora depind de structura fișierului bazei de date la care este asociat obiectul special. Obiectul conține informații despre o înregistrare curentă în atributele sale. Fiecare câmp din fișierul bazei de date corespunde unui atribut al obiectului. Numele atributului este același cu numele câmpului.

Fiecare obiect este o structură de date aflată în memoria calculatorului și schimbarea conținutului atributelor sale nu provoacă o schimbare lentă în fișierele bazei de date. În cazul în care modul de autosalvare intrarea de conținut facilitate în fișierele bazei de date are loc la poziția de schimbare-SRI (trecerea la următoarele intrări, cheie de căutare și altele asemenea. D.), în cazul în care înregistrarea AutoSave off schimbarea modului are loc la metoda Acoperișuri corespunzătoare atunci când obiectul.

Trebuie avut în vedere că simultan obiectul XBase poate fi conectat cu nu mai mult de un fișier index. Toate modificările aduse bazei de date în sesiune cu un singur fișier index nu afectează restul. Prin urmare, nu este recomandat să aveți mai mult de un fișier index pentru baza de date. În caz contrar, după ce fiecare bază de date este deschisă cu un alt fișier index decât cel deschis în sesiunea anterioară cu baza de date, trebuie să efectuați reindexarea (actualizarea conținutului fișierului index).

Metoda de comprimare de bază determină distrugerea fizică a înregistrărilor marcate ca șterse. Metoda de curățare de bază determină distrugerea fizică a tuturor înregistrărilor. După aplicarea acestor metode, restaurarea înregistrărilor șterse devine imposibilă.

În plus față de lucrul cu bazele de date existente, de tip agregat XBase are un set de metode pentru a crea o nouă bază de date a oricărei structuri, noi indici și un nou fișier index. Trebuie remarcat faptul că, în cazul în care utilizarea de tehnici care modifică structura bazei de date este posibilă numai pentru obiecte care nu sunt asociate cu baza de date (de ex., E. Pentru baza de date nou creată), este posibilă crearea de noi indici și fișier index, atât pentru a construi o bază de date, și pentru deja existente și deschise.

Obiectivul principal al obiectelor XBase este organizarea exportului de informatii catre / din fisiere externe DBF. Utilizarea metodelor Xbase pentru accesarea directă a datelor din baza de date 1C: Enterprise nu este recomandată.

Obiectele XBase nu acceptă câmpuri tip memo (consultați Adăugare câmp).

Funcțiile suportate de obiectul XBase care pot fi utilizate în expresii și filtre index sunt listate în secțiunea "Filtrare expresie și index".

Obiectele XBase suportă doar accesul exclusiv la fișiere. Obiectele XBase suportă fișiere index în format CDX. Cu toate acestea, utilizarea de programe externe (de exemplu, FoxBase) fișiere index create cu obiecte XBase, precum și utilizarea de fișiere index obiecte-TER create de programe externe, nu este recomandată din cauza posibila incompatibilitate a versiunilor.







Contextul colaborării cu XBase

În toate modulele de program, trebuie să utilizați obiecte de tip XBase pentru a lucra cu bazele de date DBF. Puteți crea un număr arbitrar de obiecte XBase utilizând funcția CreateObject. Pentru a se referi la un atribut al unui obiect sau apela metoda sa, numele atributului sau al metodei (cu parametrii necesari) se scrie prin punct dupa numele obiectului.

Scrierea în limba rusă a cuvântului cheie XBase lipsește.

FS Selectați fișierul (0, numele fișierului, denumirea căii. "*. *".);

PathBD = PathName + NumeFile;

Dacă DBF este deschis () = 1 Apoi

Avertizare ("baza de date este deschisă", 2);

Nume = DBP. FIO; // Se presupune că domeniul FIO se află în baza de date deschisă

Avertizare ("Primul din" + Path + DB + "este menționat." + Prenume, 5);

Avertizare ("Nu am putut deschide baza!", 2);

Atributele obiectelor XBase

Oferă acces la câmpul înregistrării numit "Câmp". Numele câmpului trebuie să se potrivească cu numele câmpului bazei de date cu care este asociat obiectul.

atribut <Поле> oferă acces la câmpul înregistrării numit "Câmp". În textul modulului software, termenul <Поле> este numele coloanei specifice a fișierului bazei de date la care este asociat obiectul.

Atributul are sens numai dacă fișierul bazei de date este în stare deschisă.

Compoziția atributelor obiectului poate fi schimbată dinamic în timpul execuției 1C: Enterprise și este determinată de setul de câmpuri din fișierul bazei de date cu care obiectul este legat la momentul dat.

Oferă acces la tipul de date agregat al tipului "cheie".

Tipul de date agregat de tip "cheie" are numai atribute. Compoziția atributelor repetă complet atributele obiectului XBase, cu excepția faptului că lipseste atributul "Key". Valorile atributelor sunt utilizate de obiectul XBase pentru a calcula expresia indexului atunci când se utilizează metoda Find-to-Key.

Metode obiect XBase

O expresie numerică. Înregistrează modul de căutare:

0 - caută o potrivire exactă pentru cheie (=);

1 - caută o intrare pentru o potrivire exactă cu o cheie sau una mare (> =);

2 - căutări pentru o înregistrare cu o cheie mare (>);

-1 (minus unul) - caută o înregistrare pentru o potrivire exactă cu o cheie sau una mai mică (<=);

-2 (minus două) - căutări pentru o înregistrare cu o cheie mai mică (<).

Numărul: 1 - dacă acțiunea este finalizată (înregistrare găsită); 0 - dacă acțiunea nu este efectuată.

Metoda de căutare vă permite să găsiți o intrare corespunzătoare unei valori date <Ключ> cheie pe indexul curent și modul de căutare transmis ca parametru. Indicatorul este plasat pe înregistrarea găsită.

Trebuie notat că calculul valorii indexului când obiectul XBase rulează cu baza de date este realizat de obiect independent pe baza expresiei care a fost transmisă la crearea cheii (a se vedea descrierea metodei Add Index). Când apelați această metodă, valoarea <Ключ> trebuie calculată cu ajutorul limbajului încorporat, care poate fi definit dificultăți Nye în cazul în care indicele compozit, câmpurile incluse în expresie index, diferit de șirul, și așa mai departe. d. Prin urmare, aplicabilitatea acestei metode este limitată la caz, utilizarea indicelui simplu expresie șir. În cazuri mai complexe, ar trebui să utilizați metoda universală Find-to-Key.

RecordFound = DBF.Find ("Ivanov", 0);

Găsiți înregistrarea după index.

O expresie numerică. Înregistrează modul de căutare:

0 - caută o potrivire exactă pentru cheie (=);

1 - caută o intrare pentru o potrivire exactă cu o cheie sau una mare (> =);

2 - căutări pentru o înregistrare cu o cheie mare (>);

-1 (minus unul) - caută o înregistrare pentru o potrivire exactă cu o cheie sau una mai mică (<=);

-2 (minus două) - căutări pentru o înregistrare cu o cheie mai mică (<).

Numărul: 1 - dacă acțiunea este finalizată (înregistrare găsită); 0 - dacă acțiunea nu este efectuată.

Metoda Find To Key vă permite să găsiți o intrare corespunzătoare valorilor atributului obiectului agregat al tipului "Key" al obiectului XBase la indexul curent și modul de căutare trecut ca parametru. Pointerul este setat la înregistrarea găsită. Înainte de a apela metoda, trebuie să setați valorile tuturor atributelor obiectului agregat de tip "Cheie", care participă la calcularea expresiei indexului curent (a se vedea descrierea metodei Add Index).

DBF.KEY.DIV_ID = 15; // departamentul de noi dezvoltări

RecordFound = DBF.Find cheia (0); // căutați o cheie compusă, eterogenă

Obțineți valoarea câmpului de înregistrare.

Când se lucrează cu indexuri la timpul de execuție 1C: Obiectele XBase ale întreprinderilor calculează expresiile index și filtru. Expresia unui index și a unui filtru sunt expresii de șir, scrise în limba specială a obiectelor XBase.

Expresia index este utilizată pentru a calcula valoarea cheie pentru fiecare intrare de bază de date. Rezultatul expresiei de evaluare trebuie să fie o valoare a unuia dintre următoarele tipuri: numeric, șir, dată sau boolean. Expresia filtrului trebuie să returneze un rezultat boolean. În cazul în care valoarea unei expresii de filtrare pentru o anumită intrare bază de date este adevărat, informații despre această înregistrare vor fi incluse în fișierul index, în caz contrar fișierul index nu va conține informații despre înregistrarea și poziția-TION la această intrare XBase-obiect cu indicele de curent nu vor fi produse.

Atributele (cu excepția "cheie"), constantele și funcțiile pot fi folosite ca părți ale expresiilor. Părțile unei expresii pot fi combinate cu alte funcții sau operatori. Expresia cea mai simplă poate fi numele atributului: "FULL_NAME". În acest caz, tipul de expresie va corespunde tipului de atribut.

Constantele pot avea un tip numeric, șir și tip boolean. Conțintele de coarde sunt închise în citate simple ("Constanta șirului"). Dacă este necesar, includeți un simbol cu ​​două cifre în constanta string, acesta ar trebui să fie precedat de un backslash, de exemplu firma "Vega". Constantele booleene sunt scrise ca. TRUE. sau. T. pentru desemnarea adevărului și. FALS. sau. F. altfel.

Operatorii sunt folosiți pentru a combina părți ale unei expresii. Părțile expresiei trebuie să aibă tipul corespunzător operatorului, de exemplu, operatorul (diviziunea) "/" funcționează cu două valori numerice.

Ordinea de execuție a operatorilor în expresie corespunde ordinului general acceptat, ținând cont de parantezele și prioritățile operatorilor. De exemplu, expresia "1 + 2 * 3" va returna 7 și "(1 + 2) * 3" va reveni 9.

Operatorul "Combine 2" este puțin diferit prin faptul că spațiile de la capătul primei linii vor fi mutate la sfârșitul rezultatului. De exemplu, rezultatul calculului expresiei "Ivanov" + "II" "vor fi" Ivanov II "și" Ivanov "-" I. I. " "-" Ivanov I.I. ".

Mai puțin sau egal cu

Mai mare sau egală cu

"CD" 'ABCD' "va reveni" T. "

„8 <7 " вернет ". F ."

Tipul de date. Data sistemului.

Numărul. Numărul zilei dintr-o lună.

String. Reprezentarea datei în format MM / DD / YY

String. Reprezentarea datei în formatul YYYYMMDD

IIF (Log, IfTrue, IfFalse)

Log - expresie de tip boolean.

IfTrue. Dacă tipul False este definit la timpul de execuție. Trebuie să aibă aceeași lungime și tip.

Tipul este același ca și IfTrue și IfFalse.

Returnează ifTrue dacă valoarea expresiei calculate este Log, iar IfFalse altfel.







Articole similare

Trimiteți-le prietenilor: