Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Универсальный SQL-запрос [D7, MsAccess]


kyn66 ©   (2007-06-04 11:57:00) 

Для добавления в существующу таблицу новых полей использую универсальную процедуру:

procedure TMainFrm.AddColumn(TabName, ColName, Typ : String);
begin
 with TADOQuery.Create(nil) do
   try
     Connection := Connection1;
     ParamCheck := True;
     SQL.Clear;
     SQL.Add(Format('ALTER TABLE %s ADD %s %s DEFAULT 0' , [TabName, ColName, Typ]));
     ExecSQL;
     CLose;
   finally
     Free;
   end;
end;

...

AddColumn('Rpts', 'Nabor', 'BIT');

Здесь по умолчанию я выставляю значение 0. Но это подходит для числовых полей. А что будет, если мне нужно добавить новое поле типа "Текст" и "Дата" ? Будет ли этот запрос  универсальным? Мало того, при добавлении поля типа "Дата", необходимо указать, что формат поля для него - Краткий формат даты (01.01.2007)Как это сделать правильно и унверсально через одну процедуру?


kyn66   (2007-06-04 14:52:00) [1]

>sniknik Да, спасибо.
> Sergey13
ДА не то чтбы постоянно, просто есть утилита для апдейта структуры базы и только.


sniknik   (2007-06-04 14:25:00) [2]

> не совсем понял...
тип поля в базе всегда datetime, без вариантов, а все что ты видиш дизайнере аксесса, типа "Краткий формат даты"/длинный/время/... это все настройка отображения, в визуальных компонентах, аналог которого в дельфях это дисплейформат.

так понятнее?


Sergey13   (2007-06-04 14:07:00) [3]

> [0] kyn66 ©   (04.06.07 11:57)

А что за задача такая, если добавлять поля постоянно приходится?


kyn66   (2007-06-04 13:59:00) [4]


> в дельфи это дисплейформат свойство компонента "поле".
не совсем понял...


Johnmen   (2007-06-04 13:58:00) [5]


> kyn66 ©   (04.06.07 13:38) [7]

Тагда анализируй Typ для формирования нужного текста запроса...


sniknik   (2007-06-04 13:51:00) [6]

> что формат поля для него - Краткий формат даты
нет в аксессе(базе) типа полей краткого формата дат... есть формат отображения в аксессе (который тебе не нужен), в дельфи это дисплейформат свойство компонента "поле".


kyn66   (2007-06-04 13:38:00) [7]

> Johnmen
Согласен, было взято из текта, где это использовалось раньше. Здесь ща не актуально, спасибо. Но вопрос остался открытым...


Johnmen   (2007-06-04 13:28:00) [8]

Какой смысл в этих строчках
ParamCheck := True;
SQL.Clear;
CLose;
?


kyn66   (2007-06-04 13:24:00) [9]

C дефолтами ладно, как реализовать вторую часть моего вопроса... А именно, как указать для поля типа "Дата", чтобы установился параметр формат поля- Краткий формат даты?


clickmaker   (2007-06-04 12:15:00) [10]

можно же вообще гибридный вариант сделать. Доп. параметр, если Null, то берешь из таблицы дефолтов, если нет - то его самого


clickmaker   (2007-06-04 12:14:00) [11]


> [2] kyn66 ©   (04.06.07 12:07)

ну, если дефолты меняются по ситуации, то да


kyn66   (2007-06-04 12:07:00) [12]

А думал может подставить ешшо один параметр типа Variant...


clickmaker   (2007-06-04 11:59:00) [13]

использовать что-то типа таблицы дефолтов для разных типов. Например, с помощью TStringList Names - Values


Наверх

Титульная страница Поиск, карта сайта Написать письмо