Как узнать перечень таблиц базы и количество записей в них? |
Previous Top Next |
Code: |
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; |
©Drkb::02659
Взято с http://delphiworld.narod.ru
Комментарий Vit: открытие больших таблиц, особенно на удалённых серверах баз данных может быть исключительно длительным процессом. ADO оптимизированно для работы через запросы, поэтому количество записей можно значительно быстрее узнать составляя query и выполняя её:
Code: |
procedure TForm1.Button1Click(Sender: TObject); {©Drkb v.3(2007): www.drkb.ru, ®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; |
©Drkb::02660