Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

проверка существования поля в таблицах   Найти похожие ветки 

 
LDV   (2010-06-18 12:08) [0]

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


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;


 
Ega23 ©   (2010-06-18 12:21) [1]

Select 1 from sysobjects where id=object_id(N"[ttt]") and OBJECTPROPERTY(id, N"IsProcedure")=1


 
Ega23 ©   (2010-06-18 12:25) [2]

А, стоп. Тебе поле.
Тогда так:
select COLUMNPROPERTY(OBJECT_ID(N"[Имя_таблицы]"), "Имя_столбца", "precision")


 
LDV   (2010-06-18 12:28) [3]

то что надо. спасибо. тему можно закрывать



Страницы: 1 вся ветка

Текущий архив: 2010.09.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1276727283
TechnoDreamer
2010-06-17 02:28
2010.09.12
Zoom в TWebBrowser (обработка мыши)


2-1276295129
HRustBB
2010-06-12 02:25
2010.09.12
как получить указатель на экземпляр класса


2-1276357423
DROWSY
2010-06-12 19:43
2010.09.12
2 запроса в Firebird 1.5


15-1276415015
AKE
2010-06-13 11:43
2010.09.12
Какое правильно "перевести"...


15-1276584640
Неокубинец
2010-06-15 10:50
2010.09.12
Автоматизированный загрузчик