Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2013, 11:50
cyborgg4655 cyborgg4655 вне форума
Начинающий
 
Регистрация: 16.03.2013
Сообщения: 151
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию Добавление уникального столбца в таблицу

Если столбец уже существует, то не добавлять. А если существует то добавить. Пробывал так:

Код:
 try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('ALTER TABLE s1 ADD column 1 number(2) UNIQUE');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
except
  adoquery1.SQL.Text:='Select * from s1';
  adoquery1.Open;
end;

Но потом проблемы начинаются, если удаляю строку пишет ошибку, потом перезахожу в программу, а таблица полностью стерта..
Ответить с цитированием
  #2  
Старый 18.04.2013, 11:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

ADOCommand используй.
И вообще, в рантайме изменять структуру базы - это по моему не правильно.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 18.04.2013 в 11:59.
Ответить с цитированием
  #3  
Старый 18.04.2013, 13:13
cyborgg4655 cyborgg4655 вне форума
Начинающий
 
Регистрация: 16.03.2013
Сообщения: 151
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
ADOCommand используй.
И вообще, в рантайме изменять структуру базы - это по моему не правильно.
В рантайме вынуждне делать, чтобы обновилась таблица у действующих клиентов и приэтом данные не потерялись....
Подскажи пжлста, как с помощью ADOCommand реализовать, то что мне нужно?
Ответить с цитированием
  #4  
Старый 18.04.2013, 13:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ну так же.
Код:
adocommand.sql.text := 'blabla'
adocommand.exec
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
cyborgg4655 (18.04.2013)
  #5  
Старый 18.04.2013, 14:04
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вообще-то так делать не стоит уже хотя-бы потому-что любое изменение структуры таблицы может привести к необратимой потере данных. Клиенты вам будут очень "благодарны" за такой подарок. К тому-же изменение структуры может занять очень много времени, что тоже не радует.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 18.04.2013, 14:19
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Смотря какая база.
Оракл вроде адекватно на альтер тэйбл реагирует.
Если так уж надо, то надо создать копию исходной таблицы, чтоб потом данные в измененную таблицу перелить.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 18.04.2013, 17:08
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Страдалецъ
Вообще-то так делать не стоит уже хотя-бы потому-что любое изменение структуры таблицы может привести к необратимой потере данных.
На самом деле СУБД этим и отличается от простого файла, что изменение структуры данных в ней -- штатная операция. Вот только относится ли Access к нормальным СУБД, это большой вопрос. Или через ADO не Access, а MS SQL Server?
Ответить с цитированием
  #8  
Старый 18.04.2013, 17:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Если имеется журнал транзакций, то да. Достаточно безопасно, даже если питание выключится в процессе, а вот на Акцесе, DBF, FoxPro может очень печально закончится. Помнится в Акцесе одно время был замечательный баг, когда в процессе упаковки пользователь нажимал Esc, то все что не успевало упаковаться благополучно стиралось.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:30.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter