32 lecții despre Delfi

32 Lecții Delphi

Lecția 20: Componenta TTable. crearea tabelelor
prin componenta TTable


Pe acest mic tutorial, vom finaliza tabelele de studiu, de a crea oportunități. După cum vă amintiți, ne-am însușit deja două moduri de a crea un tabel - folosind utilitarul Desktop Baza de date la pachet cu Delphi (lecția 11), și folosind SQL-interogări (lecția 12), care poate fi utilizat în WISQL (Windows SQL Interactiv - partea de client InterBase locală), și componenta TQuery. Acum ne vom uita la modul de a crea un tabel local, în modul de execuție folosind TTable.
  • Crearea tabelelor folosind TTable
  • Pentru a crea tabelele componente TTable are metoda CreateTable. Această metodă creează o nouă tabelă goală dintr-o anumită structură. Această metodă (procedură) se poate crea doar dBase tabele locale sau în format Paradox.

    componenta TTable poate fi plasat pe un formular în timp de proiectare sau creați dinamic în timpul rulării. În acest din urmă caz, înainte de a utiliza pentru a crea, de exemplu, prin următoarea construcție:

    Înainte de a apela CreateTable nevoie pentru a seta valorile de proprietate

    TABLETYPE - tip de tabel

    Databasename - baza de date

    Nume_tabelă - numele tabelului

    FieldDefs - o serie de definiții de câmp

    IndexDefs - o serie de descrieri ale indicilor.

    Proprietatea are de tip TABLETYPE TTableType și determină tipul de tabel de baze de date. Dacă această proprietate este setată la ttDefault. tip de tabel este determinată de o extensie de fișier, acest tabel cuprinzând:

    Extinderea .db sau fără extensie: Tabel Paradox

    alias local, definit prin componenta TDatabase.

    Nume_tabelă proprietate specifică numele bazei de date tabel.

    FieldDefs proprietate (având tip TFieldDefs) la un tabel existent conține informații despre toate câmpurile de masă. Această informație este disponibilă numai în modul de funcționare și este stocat într-o matrice TFieldDef instanță. stocarea datelor privind câmpurile fizice de masă (astfel calculată la nivelul de câmp al clientului nu au obiect TFieldDef). Numărul de domenii este determinat de proprietatea contelui. și accesul la elementele de matrice prin proprietatea elemente.

    proprietate de articole [Index: Integer]: TFieldDef;

    La crearea unui tabel, înainte de a apela CreateTable. aveți nevoie pentru a crea aceste elemente. În acest scop, există o clasă TFieldDefs Adăugați o metodă.

    Procedura Adauga (Nume Const: string; DataType: TFieldType; Dimensiune: Word; Obligatoriu: Boolean);

    Numele parametrului. având un tip de șir. definește numele câmpului. Tipul de date parametru (tip TFieldType) reprezintă tipul câmpului. Ea poate avea una dintre aceste valori, al cărei sens este clar din numele lor:

    TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftBlob, ftMemo,

    Dimensiune Parametru (tip cuvânt) este dimensiunea câmpului. Această opțiune are sens doar pentru câmpurile de tip ftString. ftBytes. ftVarBytes. ftBlob. ftMemo. ftGraphic. a cărei mărime poate varia foarte mult. Domenii alte tipuri au întotdeauna o dimensiune strict fixă, astfel încât această opțiune nu este luată în considerare pentru ei. A patra opțiune - Necesar - determină dacă câmpul poate fi nul la scrierea la baza de date. Dacă acest parametru este - adevărat. atunci câmpul este „necesară“, adică Ea nu poate avea o valoare goală. În caz contrar, câmpul nu este „necesară“ și, prin urmare, pot fi scrise valoare NULL. Rețineți că documentația pentru Delphi și greșeală online de referință - nu există nici o mențiune cu privire la a patra opțiune pentru metodaAdd.

    Dacă doriți să indexeze tabelul cu unul sau mai multe câmpuri, utilizați metoda Add pentru IndexDefs de proprietate. care, după cum poate fi ghicit, de asemenea, obiectul, adică TIndexDefs instanță a clasei. IndexDefs proprietate într-un tabel existent conține informații despre toți indicii de pe masa. Această informație este disponibilă numai în modul de funcționare și este stocat într-o matrice TIndexDef instanță. stocarea datelor pe masa de index. Numărul de indici definit Count proprietate. și accesul la elementele de matrice prin proprietatea elemente.

    proprietate de articole [Index: Integer]: TIndexDef;

    Adăugați o metodă de clasa TIndexDefs este după cum urmează:

    Procedura Adauga (Nume Const, Domenii: string;
    Opțiuni: TIndexOptions);

    Numele parametrului. având un tip de șir. determină numele indicelui. Parametru Fields (având, de asemenea, un tip string) desemnează un nume de domeniu, care ar trebui să fie indexat, adică numele câmpului indexat. Indicele compozit, care utilizează un număr de domenii pot da o listă de nume de câmpuri separate prin punct și virgulă „; „De exemplu: 'Câmpul 1, câmpul 2; Field4'. Ultimul parametru - Options - definește tipul de index. Ar putea avea un set de valori care descriu TIndexOptions tip.

    TIndexOptions = set de (ixPrimary, ixUnique, ixDescending,

    Noi explicăm aceste valori. ixPrimary reprezintă cheia primară, ixUnique - index unic, ixDescending - indicele sortate după scăderea valorilor (șiruri - în ordinea alfabetică inversă), ixCaseInsensitive - indicele "insensibil" sensibil caz, ixExpression - expresie index. Trebuie remarcat faptul că referirea la această din urmă valoare este, de asemenea, lipsește în documentația și on-line-director. ixExpression opțiune permite tabele în format dBase pentru a crea un index pe o expresie. Este suficient parametrul Fields pentru a specifica expresia dorită, de exemplu: „* Câmpul 1 + câmpul 2 Field3“. În general vorbind, nu toate opțiunile se aplică tuturor în format indexurile de masă. Mai jos, oferim o listă de valori valide pentru tabele dBase și Paradox:

    Index Opțiuni dBASE Paradox

    ixDescending bb

    Este necesar să se respecte ordinea specificată de opțiuni index cerere pentru a se evita funcționarea incorectă. Trebuie remarcat faptul că pentru formatul Paradox opțiunea ixUnique poate fi utilizat numai împreună cu opțiunea ixPrimary (a se vedea exemplul de pe disc -! .. Fig textul de eroare stilul specificat în documentul îi lipsește -a.).

    Așa că, după completarea toate proprietățile de mai sus, și apela metoda Add a FieldDefs și IndexDefs nevoie de a apela o metodă pe o TTable clasa - CreateTable.

    cu FieldDefs do

    Adăugați ( 'Nume', ftString, 30, true);

    Adăugați ( 'Nume', ftString, 25, true);