![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте. Возникла такая проблема:
Использую Access через ADO. Создаю новое поле (столбец) в бд: Код:
CurDate:=DateToStr(Now);
for i := 1 to Length(CurDate) do
if CurDate[i]='.' then
CurDate[i]:='-';
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('ALTER TABLE Таблица ADD '+CurDate+' STRING NOT NULL UNIQUE');
ADOQuery.ExecSQL; |
|
#2
|
|||
|
|||
|
Имя поля не может начинаться с чисел и содержать в себе символ '-'. Если уж очень надо создавать поля (хотя это плохая практика), то сделай имя поля что-то типа DATE_20130208
ЗЫ. Вроде, в access можно имя поля заключить в кв. скобки и тогда это прокатит, но не рекомендую пользоваться этим трюком. Привыкнешь, потом будешь тупить, когда потребуется создать такое поле в нормальной БД, а там этот фокус не работает. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Awesome (09.02.2013)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Код:
ADOQuery.SQL.Add('ALTER TABLE Таблица ADD ['+CurDate+'] VARCHAR(50) NOT NULL UNIQUE');Цитата:
|
|
#4
|
||||
|
||||
|
1. А зачем вообще такой изврат? Создавать поле с именем текущей даты.
2. А почему вы решили, что в акцессе есть тип varchar ? |
|
#5
|
|||
|
|||
|
Цитата:
Цитата:
Почитать книжки на тему проектирования БД, а именно про третью нормальную форму. Вместо добавления полей можно создать таблицу, где одним из полей будет твоя дата (только одно поле), а другим - ссылка на соотв. строку той таблицы, которую ты пытаешься модифицировать. По поводу "если не будет аксеса", то ответ простой - либо в требованиях к программе это прописываешь (ну да, будет у твоей программы такая зависимость), либо берешь другую БД, причет такую, которую ты сможешь "таскать" за собой. Варианты: SQLite (одна библиотека), FB Embedded (там много файлов, особенно в последних версиях, но зато есть другие плюсы). |