Полный список полей таблицы

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Есть множество причин, для чего может понадобиться запрос на получение структуры используемой программой таблицы. Одна из причин — необходимость во время выполнения программы создавать TField-компоненты, работающие с полями таблицы. Полученная информация о структуре таблицы как раз и ложится в основу создания TField-компонентов.

Приведенный ниже пример демонстрирует технологию полного воспроизведения доступных полей в компоненте TTable или TQuery. Программа извлекает информацию о доступных полях и отображает ее в компоненте TListBox; эта информация необходима для динамического построения потомков TField. В данном примере источником данных служит компонент TTable, но той же цели может служить и TQuery (TTable и TQuery для доступа к полям таблицы используют одно и то же свойство Fields).

procedure TForm1.Button1Click(Sender: TObject);

var

i: Integer;

F: TFieldDef;

D: string;

begin

Table1.Active := True;

ListBox1.Items.Clear;

with Table1 do

begin

for i := 0 to FieldDefs.Count — 1 do

begin

F := FieldDefs.Items[i];

case F.DataType of

ftUnknown: D := ‘Unknown’;

ftString: D := ‘String’;

ftSmallint: D := ‘SmallInt’;

ftInteger: D := ‘Integer’;

ftWord: D := ‘Word’;

ftBoolean: D := ‘Boolean’;

ftFloat: D := ‘Float’;

ftCurrency: D := ‘Currency’;

ftBCD: D := ‘BCD’;

ftDate: D := ‘Date’;

ftTime: D := ‘Time’;

ftDateTime: D := ‘DateTime’;

ftBytes: D := ‘Bytes’;

ftVarBytes: D := »;

ftBlob: D := ‘BLOB’;

ftMemo: D := ‘Memo’;

ftGraphic: D := ‘Graphic’;

else

D := »;

end;

ListBox1.Items.Add(F.Name ‘, ‘ D);

end;

end;

Table1.Active := False;

end;

{/codecitation}

Добавить комментарий