Компонент TTable

Наиболее простым способом обращения к таблицам баз данных является использование компонента TTable, предоставляющего доступ к одной таблице. Для этой цели наиболее часто используются следующие свойства:

  • Active - указывает, открыта (true) или нет (false) данная таблица.
  • DatabaseName - имя каталога, содержащего искомую таблицу, либо псевдоним (alias) удаленной БД (псевдонимы устанавливаются с помощью утилиты конфигурации BDE, описание которой присутствует во многих источниках, посвященных продуктам Borland, либо с помощью SQL Explorer, вызываемого с помощью пункта меню Database/Explore). Это свойство может быть изменено только в случае, если таблица закрыта (ее свойство Active равно false), например:

Table1->Active = false;
Table1->DatabaseName = "BCDEMOS"
Table1->Active = true;

  • TableName - имя таблицы.
  • Exclusive - если это свойство принимает значение true, то никакой другой пользователь не может открыть таблицу, если она открыта данным приложением. Если это свойство равно false (значение по умолчанию), то другие пользователи могут открывать эту таблицу.
  • IndexName - идентифицирует вторичный индекс для таблицы. Это свойство нельзя изменить, пока таблица открыта.
  • MasterFields - определяет имя поля для создания связи с другой таблицей.
  • MasterSource - имя компонента TDataSource, с помощью которого TTable будет получать данные из связанной таблицы.
  • ReadOnly - если это свойство равно true, таблица открыта в режиме "только для чтения". Нельзя изменить свойство ReadOnly, пока таблица открыта.
  • Eof, Bof - эти свойства принимают значение true, когда указатель текущей записи расположен на последней или соответственно первой записи таблицы.
  • Fields - массив объектов TField. Используя это свойство, можно обращаться к полям по номеру, что удобно, когда заранее неизвестна структура таблицы:

Edit1->Text=Table1->Fields[2]->AsString;

Наиболее часто при работе с компонентом TTable используются следующие методы:

  • Open и Close устанавливают значения свойства Active равными True и False соответственно.
  • Refresh позволяет заново считать набор данных из БД.
  • First, Last, Next, Prior перемещают указатель текущей записи на первую, последнюю, следующую и предыдущую записи соответственно, например:

Table1->First();
while (!Table1->Eof)
{
//что-то делаем...
Table1->Next();
};

  • MoveBy перемещает указатель на указанное число строк (оно может быть и отрицательным) в пределах таблицы
  • Insert, Edit, Delete, Append - переводят таблицу в режимы вставки записи, редактирования, удаления, добавления записи соответственно.
  • Post - осуществляет физическое сохранение измененных данных. Например:

Table2->Insert();
Table2->Fields[0]->AsInteger = 100;
Table2->Fields[1]->AsString =Edit1->Text;
Table2->Post();

  • Cancel - отменяет внесенные изменения, не сохраненные физически.
  • FieldByName - предоставляет возможность обращения к данным в полях по имени поля:

S=Table1->FieldByName("area")->AsString;

  • SetKey переключает таблицу в режим поиска.
  • GotoKey начинает поиск строки, значение Fields[n] которой равно выбранному, где n - номер колонки таблицы, начиная с 0:

Table1->SetKey();
Table1->Fields[0]->AsString=Edit1->Text;
Table1->GotoKey();

  • SetRangeStart, SetRangeEnd, ApplyRange позволяют выбрать нужные строки на основе диапазона значений какого-либо поля.

Table1->SetRangeStart();
Table1->Fields[0]->AsString = Edit1->Text;
Table1->SetRangeEnd();
Table1->Fields[0]->AsString = Edit2->Text;
Table1->ApplyRange();

  • FreeBookmark, GetBookmark, GotoBookmark- позволяют создать помеченную строку в таблице и затем вернуться к ней позже. Методы Bookmark используют класс TBookmark. Метод GetBookmark устанавливает закладку на текущей cтроке таблицы. GotoBookmark осуществляет перемещение в таблице к строке, ранее отмеченной закладкой. Метод FreeBookmark используется для уничтожения объекта типа TBookmark:

TBookmark Marker =Table1->GetBookmark();
Table1->GotoBookmark(Marker);
Table1->FreeBookmark(Marker);

Cобытия компонента TTable позволяют строить и контролировать поведение приложе ий БД. Например, событие BeforePost наступает перед вставкой или изменением записи, событие AfterPost - после сохранения вставленной или измененной записи, событие AfterDelete - после удаления записи и т.д.

Чтобы внести компонент TTable в форму, нужно выполнить следующее:

1. Используя страницу Data Access палитры компонентов, разместить компонент TTable на форме или в модуле данных.

2. Свойству DatabaseName присвоить имя каталога, где находится БД, либо псевдо има БД.

3. Свойству TableName присвоить имя таблицы или выбрать таблицу из выпадающего списка.

4. Внести в форму компонент DataSource и установить значение свойства DataSet равным имени компонента TTable.

5. Внести компоненты Data Controls и связать их с компонентом DataSource для того, чтобы отобразить на экране данные из таблицы БД.