ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Компонент TTable
         

     

    Інформатика, програмування

    Компонент TTable.

    Зміст

    Огляд

    Створення таблиць за допомогою компонента TTable

    Висновок   Огляд  На цьому невеликому уроці ми завершимо вивчення можливостей створення      таблиць. Як Ви пам'ятаєте, ми вже освоїли два способи створення таблиць - з      допомогою утиліти Database Desktop, що входить в постачання Delphi (урок 11) і з      допомогою SQL-запитів (урок 12), які можна використовувати як у WISQL      (Windows Interactive SQL - клієнтська частина Local InterBase), так і в      компоненті TQuery. Тепер ми розглянемо, як можна створювати локальні      таблиці в режимі виконання за допомогою компонента TTable.   Створення таблиць за допомогою компонента TTable

    Для створення таблиць компонент TTable має метод CreateTable. Цей метод створює нову порожню таблицю заданої структури. Даний метод (процедура) може створювати тільки локальні таблиці формату dBase або Paradox.

    Компонент TTable можна помістити на форму в режимі проектування або створити динамічно під час виконання. В останньому випадку перед використанням його необхідно створити, наприклад, за допомогою наступної конструкції:

    · var

    Table1: TTable;

    ...

    Table1: = TTable.Create (nil);

    ...

    Перед викликом методу CreateTable необхідно встановити значення властивостей     TableType - тип таблиці     DatabaseName - база даних     TableName - ім'я таблиці     FieldDefs - масив описів полів     IndexDefs - масив описів індексів.

    Властивість TableType має тип TTableType і визначає тип таблиці в базі даних. Якщо це властивість встановлено в ttDefault, тип таблиці визначається за розширення файлу, що містить цю таблицю:     Розширення. DB або без розширення: таблиця Paradox   Розширення. DBF: таблиця dBASE   Розширення. TXT: таблиця ASCII (текстовий файл).

    Якщо значення властивості TableType не дорівнює ttDefault, що створюється таблиця завжди буде мати встановлений тип, незалежно від розширення:   ttASCII: текстовий файл   ttDBase: таблиця dBASE   ttParadox: таблиця Paradox.

    Властивість DatabaseName визначає базу даних, в якій знаходиться таблиця. Ця властивість може містити:   BDE аліас   директорій для локальних БД   директорій та ім'я файлу бази даних для Local InterBase   локальний аліас, визначений через компонент TDatabase.

    Властивість TableName визначає ім'я таблиці бази даних.

    Властивість FieldDefs (що має тип TFieldDefs) для існуючої таблиці містить інформацію про всі поля таблиці. Ця інформація доступна тільки в режимі виконання і зберігається у вигляді масиву екземплярів класу TFieldDef, що зберігають дані про фізичних полях таблиці (таким чином обчислюються на рівні клієнта поля не мають свого об'єкта TFieldDef). Число полів визначається властивістю Count, а доступ до елементів масиву здійснюється через властивість Items:

    · property Items [Index: Integer]: TFieldDef;

    При створенні таблиці, перед викликом методу CreateTable, потрібно сформувати ці елементи. Для цього у класу TFieldDefs є метод Add:

    · procedure Add (const Name: string; DataType: TFieldType; Size: Word; Required: Boolean);

    Параметр Name, що має тип string, визначає ім'я поля. Параметр DataType (тип TFieldType) означає тип поля. Він може мати одне з наступних значень, зміст яких ясний з їх назви:

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

    ftGraphic);

    Параметр Size (тип word) являє собою розмір поля. Цей параметр має сенс лише для полів типу ftString, ftBytes, ftVarBytes, ftBlob, ftMemo, ftGraphic, розмір яких може сильно варіюватися. Поля інших типів завжди мають строго фіксований розмір, так що даний параметр для них не береться до уваги. Четвертий параметр - Required - визначає, чи може поле мати пусте значення при записі в базу даних. Якщо значення цього параметра - true, то поле є "необхідним", тобто не може мати порожнього значення. В іншому разі поле не є "необхідним" і, отже, допускає запис значення NULL. Відзначимо, що в документації по Delphi і online-довіднику допущена помилка - там відсутня згадка про четвертому параметрі для методу Add .

    Якщо Ви бажаєте індексувати таблицю по одному або декількох полях, використовуйте метод Add для властивості IndexDefs, яке, як можна здогадатися, також є об'єктом, тобто екземпляром класу TIndexDefs. Властивість IndexDefs для існуючої таблиці містить інформацію про всі індекси таблиці. Ця інформація доступна тільки в режимі виконання і зберігається у вигляді масиву екземплярів класу TIndexDef, що зберігають дані про індекси таблиці. Число індексів визначається властивістю Count, а доступ до елементів масиву здійснюється через властивість Items:

    · property Items [Index: Integer]: TIndexDef;

    Метод Add класу TIndexDefs має такий вигляд:

    · procedure Add (const Name, Fields: string;
    Options: TIndexOptions);

    Параметр Name, що має тип string, визначає ім'я індексу. Параметр Fields (також має тип string) означає ім'я поля, яке повинно бути індексувати, тобто ім'я індексованих поля. Складовою індекс, який використовує кілька полів, може бути заданий списком імен полів, розділених крапкою з комою ";", наприклад: 'Field1; Field2; Field4'. Останній параметр - Options - визначає тип індексу. Він може мати набір значень, що описуються типом TIndexOptions:

    · TIndexOptions = set of (ixPrimary, ixUnique, ixDescending,

    ixCaseInsensitive, ixExpression);

    Пояснимо ці значення. ixPrimary означає первинний ключ, ixUnique - унікальний індекс, ixDescending - індекс, відсортований по зменшенню значень (для рядків - у порядку, зворотному алфавітному), ixCaseInsensitive - індекс, "нечутливий" до регістру букв, ixExpression - індекс за висловом. Відзначимо, що згадка про останньому значенні також не міститься в документації і online-довіднику. Опція ixExpression дозволяє для таблиць формату dBase створювати індекс за висловом. Для цього досить у параметрі Fields вказати бажане вираз, наприклад: 'Field1 * Field2 + Field3'. Взагалі кажучи, не всі опції індексів застосовні до всіх форматів таблиць. Нижче ми наведемо список допустимих значень для таблиць dBase і Paradox:

    · Опції індексів dBASE Paradox

    ---------------------------------------

    ixPrimary ь

    ixUnique ь ь

    ixDescending ь ь

    ixCaseInsensitive ь

    ixExpression ь

    Необхідно дотримуватися зазначеного порядку застосування опцій індексів щоб уникнути некоректної роботи. Слід зазначити, що для формату Paradox опція ixUnique може використовуватися тільки разом з опцією ixPrimary (див. приклад на диску - Рис. 0-1).

    Отже, після заповнення всіх зазначених вище властивостей і виклику методів Add для FieldDefs і IndexDefs необхідно викликати метод класу TTable - CreateTable:

    · with Table1 do

    begin

    DatabaseName: = 'dbdemos';

    TableName: = 'mytest';

    TableType: = ttParadox;

    (Створити поля)

    with FieldDefs do

    begin

    Add ( 'Surname', ftString, 30, true);

    Add ( 'Name', ftString, 25, true);

    Add ( 'Patronymic', ftString, 25, true);

    Add ( 'Age', ftInteger, 0, false);

    Add ( 'Weight', ftFloat, 0, false);

    end;

    (Згенерувати індекси)

    with IndexDefs do

    begin

    Add ( 'I_Name', 'Surname; Name; Patronymic',
    [ixPrimary, ixUnique ]);

    Add ( 'I_Age', 'Age', [ixCaseInsensitive ]);

    end;

    CreateTable;

    end;

    Індекси можна згенерувати і не тільки при створенні таблиці. Для того щоб згенерувати індекси для існуючої таблиці, потрібно викликати метод AddIndex класу TTable, набір параметрів якого повністю повторює набір параметрів для методу Add класу TIndexDefs:

    · procedure AddIndex (const Name, Fields: string;
    Options: TIndexOptions);

    При цьому для методу AddIndex справедливі всі зауваження з приводу запису полів і опцій індексів, зроблені вище.          Висновок     

    Отже, ми познайомилися з ще одним способом створення таблиць - способом, що використовує метод CreateTable класу TTable. Використання даного способу додасть Вашому додатку максимальну гнучкість, і Ви зможете будувати локальні таблиці "на льоту". Супутнім методом є метод AddIndex класу TTable, що дозволяє створювати індекси для вже існуючої таблиці. Підкреслимо ще раз, що цей спосіб застосовується тільки для локальних таблиць. Більш загальний спосіб полягає у використанні SQL-запитів, який ми розглядали на уроці 12.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status