![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Универсальный 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