Как узнать перечень таблиц базы и количество записей в них?

procedure TForm1.Button1Click(Sender: TObject);
var
 SL: TStrings;
 index: Integer;
begin
 SL := TStringList.Create;
 try
  ADOConnection1.GetTableNames(SL, False);
  for index := 0 to (SL.Count - 1) do begin
  Table1.Insert;
  Table1.FieldByName('Name').AsString := SL[index];
  ADOTable1.TableName := SL[index];
  ADOTable1.Open;
  Table1.FieldByName('Records').AsInteger :=
  ADOTable1.RecordCount;
  Table1.Post;
  end;
 finally
  SL.Free;
  ADOTable1.Close;
 end;
end;


Взято с http://delphiworld.narod.ru
Комментарий Vit: открытие больших таблиц, особенно на удалённых серверах баз данных может быть исключительно длительным процессом. ADO оптимизированно для работы через запросы, поэтому количество записей можно значительно быстрее узнать составляя query и выполняя её:

procedure TForm1.Button1Click(Sender: TObject);

{©Drkb v.3(2007): <a href="http://www.drkb.ru" title="www.drkb.ru">www.drkb.ru</a>,

 ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}


var

 SL: TStrings;

 index: Integer;

begin

 SL := TStringList.Create;

 try

  ADOConnection1.GetTableNames(SL, False);

  for index := 0 to (SL.Count - 1) do begin

  Table1.Insert;

  Table1.FieldByName('Name').AsString := SL[index];

  ADOQuery1.sql.text := 'Select Count(*) From '+SL[index];

  ADOQuery1.Open;

  Table1.FieldByName('Records').AsInteger :=ADOQuery1.fields[0].AsInteger;

  Table1.Post;

  ADOQuery1.Close;

  end;

 finally

  SL.Free;

 end;

end;

Выше описанный код выведет НЕ только имена таблиц в бд Access, но и имена запросов, форм, отчётов и дт.

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...