Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

Универсальный 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.065 c
15-1179990326
Pazitron_Brain
2007-05-24 11:05
2007.06.24
Ценителям советской аудиотехники


1-1176969878
IGray
2007-04-19 12:04
2007.06.24
Что делал пользователь до глюка?


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


2-1180688001
Fly____
2007-06-01 12:53
2007.06.24
Нет ли у кого функции получения кода цвета из строки?


15-1180331454
Kolan
2007-05-28 09:50
2007.06.24
Не поделитесь ли функцией «Обратное преобразование фурье»?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский