Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
ADO [17]
ASCII и CSV [12]
Access [20]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [0]
ODBC [10]
Oracle [0]
Paradox [0]
SQL [29]
Sybase [1]
База данных [0]
Закладки [2]
Записи [0]
Индексы [10]
Компоненты и Базы данных [0]
Модуль данных [3]
Отчеты [2]
Ошибки БД [17]
Поиск [16]
Поля [0]
Сортировка и Фильтр [6]
Таблицы [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 8
Гостей: 8
Пользователей: 0

Форма входа

Главная » Статьи » Базы данных » ADO

Найти все таблицы базы данных при помощи ADO
//How to retrieve all database tables with ADO 

unit dbTables;

 interface

 uses ADODb;

 type
  TTableType = (ttTable, ttView, ttSynonym, ttSystemTable, ttAccessTable);

 type
  TTableTypes = set of TTableType;

 type
  TTableItem = record
  ItemName: string;
  ItemType: string;
  end;

 type
  TTableItems = array of TTableItem;

 function addFilter(string1, string2: string): string;
 function ADODbTables(ADOConnection: TADOConnection; types: TTableTypes): TTableItems;

 implementation

 function addFilter(string1, string2: string): string;
 begin
  if string1 <> '' then
  Result := string1 + ' or ' + string2
  else
  Result := string2;
 end;

 function ADODbTables(ADOConnection: TADOConnection; types: TTableTypes): TTableItems;
 var
  ADODataSet: TADODataSet;
  i: integer;
 begin
  ADODataSet := TADODataSet.Create(nil);
  ADODataSet.Connection := ADOConnection;
  ADOConnection.OpenSchema(siTables, EmptyParam, EmptyParam, ADODataSet);

  if (ttTable in types) then
  ADODataSet.Filter := addFilter(ADODataSet.Filter, '(TABLE_TYPE = ''TABLE'')');

  if (ttView in types) then
  ADODataSet.Filter := addFilter(ADODataSet.Filter, '(TABLE_TYPE = ''VIEW'')');

  if (ttSynonym in types) then
  ADODataSet.Filter := addFilter(ADODataSet.Filter, '(TABLE_TYPE = ''SYNONYM'')');

  if (ttSystemTable in types) then
  ADODataSet.Filter := addFilter(ADODataSet.Filter, '(TABLE_TYPE = ''SYSTEM TABLE'')');

  if (ttAccessTable in types) then
  ADODataSet.Filter := addFilter(ADODataSet.Filter, '(TABLE_TYPE = ''ACCESS TABLE'')');

  ADODataSet.Filtered := True;

  SetLength(Result, ADODataSet.RecordCount);

  i := 0;
  with ADODataSet do
  begin
  First;
  while not EOF do
  begin
  with Result[i] do
  begin
  ItemName := FieldByName('TABLE_NAME').AsString;
  ItemType := FieldByName('TABLE_TYPE').AsString;
  end;
  Inc(i);
  Next;
  end;
  end;

  ADODataSet.Free;
 end;

 end.

 { 
Example: create a new project and add a TADOConnection (ADOConnection1), 
a TButton (Button1) and a TMemo (Memo1); assign a ConnectionString to the 
TADOConnection component and set "ADOConnection1.Active := True" 
}

 procedure TForm1.Button1Click(Sender: TObject);
 var
  output: ttableitems;
  i: integer;
 begin
  output := ADODbTables(ADOConnection1, [ttTable, ttView, ttSynonym]);
  // output := ADODbTables(ADOConnection1, [ttSystemTable, ttAccessTable]); 
  for i := Low(output) to High(output) do
  begin
  Memo1.Lines.Add(output[i].ItemName + '---' + output[i].ItemType);
  end;
  output := nil;
 end;
Категория: ADO | Добавил: Skinner (03.07.2008) | Автор: DeeCo W
Просмотров: 471 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz