суббота, 9 марта 2013 г.

Как узнать о наличии таблицы в БД MS SQL Server 2005 из Delphi?

Вариант функции, которая возвращает истину, если таблица в Базе данных существует. Если таблицы не существует, функция вернет ложь. Применяется для MS SQL Server 2005. На других версиях не тестировалось, но должно работать и на 2000 и на 2008.
В качестве аргумента в функцию передается ссылка на объект TADOQuery и два строковых параметра - имя таблицы и имя Базы Данных.
   
FUNCTION isTableExists(DataSet: TADOQuery; TableName: AnsiString;
  DataBaseName: AnsiString): Boolean;
begin
  DataSet.SQL.Text := ' USE [' + DataBaseName + '];' +
    ' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].['
    + TableName + ']'') AND type in (N''U''))' +
    ' SELECT 1 AS Answer ELSE Select 0 AS Answer;';
  DataSet.Open;
  if DataSet.FieldByName('Answer').Value = 1 then
    Result := true
  Else
    Result := False;
end;
Пример использования:
  ...
  sMMYY := 'PMC';
  if sMonthCalendarZP.Month <10 data-blogger-escaped-...="" data-blogger-escaped-:="LabelQzQp.Caption" data-blogger-escaped-begin="" data-blogger-escaped-end="" data-blogger-escaped-if="" data-blogger-escaped-ightstr="" data-blogger-escaped-inttostr="" data-blogger-escaped-istableexists="" data-blogger-escaped-labelqzqp.caption="" data-blogger-escaped-lcgetcaption="" data-blogger-escaped-m.querycommon="" data-blogger-escaped-not="" data-blogger-escaped-nttostr="" data-blogger-escaped-plane="" data-blogger-escaped-pre="" data-blogger-escaped-showmessage="" data-blogger-escaped-smmyy="" data-blogger-escaped-smonthcalendarzp.month="" data-blogger-escaped-smonthcalendarzp.year="" data-blogger-escaped-then="">

Комментариев нет:

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