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

Вниз

Универсальный SQL-запрос   Найти похожие ветки 

 
kyn66 ©   (2007-06-04 11:57) [0]

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

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) Как это сделать правильно и унверсально через одну процедуру?


 
clickmaker ©   (2007-06-04 11:59) [1]

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


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

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


 
clickmaker ©   (2007-06-04 12:14) [3]


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

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


 
clickmaker ©   (2007-06-04 12:15) [4]

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


 
kyn66 ©   (2007-06-04 13:24) [5]

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


 
Johnmen ©   (2007-06-04 13:28) [6]

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


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

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


 
sniknik ©   (2007-06-04 13:51) [8]

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


 
Johnmen ©   (2007-06-04 13:58) [9]


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

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


 
kyn66 ©   (2007-06-04 13:59) [10]


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


 
Sergey13 ©   (2007-06-04 14:07) [11]

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

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


 
sniknik ©   (2007-06-04 14:25) [12]

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

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


 
kyn66 ©   (2007-06-04 14:52) [13]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
11-1163444119
SysError
2006-11-13 21:55
2007.06.24
InputQuery


2-1180512545
MAXH0
2007-05-30 12:09
2007.06.24
Взаимодействие с другим приложением


1-1177328322
Ганна Юхимівна
2007-04-23 15:38
2007.06.24
Операции с данными класса - как организовать ?


2-1180336290
Abcdef123
2007-05-28 11:11
2007.06.24
Проблемка с использованием TDBCheckBox


15-1180298315
WEF
2007-05-28 00:38
2007.06.24
На чем опаснее ездить: на автомобиле или на мотоцикле?