|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi и SQL (ADO, Access)
Здравствуйте. Возникла такая проблема:
Использую 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 (там много файлов, особенно в последних версиях, но зато есть другие плюсы). |