Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > проверка существования поля в таблицах


Автор: JS2 18.6.2010, 11:11
в цикле нужно открывать таблицы и проверять имеют ли они поле. Посоветуйте наиболее быстрый алгоритм. Пока что сделал так:

Код

procedure chk_fld(const fld_name: string; tbl_ID: Integer;
 out fld: TField);
const
 TBL_NAME_GROUP = 'group_%d';
var
 cmp_tbl: TDBISAMTable;
 tbl_name: string;
begin
 tbl_name := Format(TBL_NAME_GROUP, [tbl_ID]);
 cmp_tbl := TDBISAMTable.Create(nil);
 try
   cmp_tbl.DatabaseName := DB_NAME;
    cmp_tbl.SessionName := SESSION_NAME;
      cmp_tbl.TableName := tbl_name;
   cmp_tbl.Open;
   fld := cmp_tbl.FindField(fld_name);
 finally
   cmp_tbl.Free;
 end;
end;

procedure Tfrm_Test.Button1Click(Sender: TObject);
var
 All, I: Integer;
begin
 for I := 0 to All - 1 do
 begin
   { ... }
   if tbl_ID_exists(tbl_ID) then
   begin
     chk_fld(fld_name, tbl_ID, fld);
     if fld <> nil then
       { ... }
     else
       { ... }
   end;
 end;
end;

Автор: Rennigth 18.6.2010, 11:43
JS2, 
1. Зачем открывать всю таблицу когда можно сделать обыкновенный (select top 0).
2. Вроде это можно спросить и у самой базы? По крайней мере в mssql-server-e что-то такое было.

п.с. Не знаю что у тебя за база и что это (TDBISAMTable) за зверь такой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)