![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO + MS SQL как сделать внесение данных в разные таблицы [D7, MSSQL]
девушка © (2008-10-14 08:59:00)Добрый день!
Есть БД на MS SQL 2005 для работы с ней используются компоненты ADO.
Пользователю надо добавить некую запись (например, о Клиенте) в БД. При этом запись будет создаваться не только в таблице КЛИЕНТ, но и в нескольких связаных таблицах.
Для этого Пользователю предлагается мастер - в котором он заполняет нужные поля.
Редактирование записей происходит в разных формах с ДБ-компонентами и ADODataSet.
Мастер представляет из себя некий набор из фреймов, составляющих формы для редактирования (с нужными ограничениями).
Примерная работа мастера:
* Открываем транзакцию.
* создаем набор "пустых" записей, нужных для заполнения данных о Клиенте.
* Пользователь проходясь по вкладкам мастера редактирует эти данные.
* Пользователь нажимает на кнопку "Ок" - изменения фиксируются.
* Пользователь нажимает на кнопку "Отмена" - транзакция откатывается.
Проблема:
При открытии транзакции adocMSSQL.BeginTrans;
Блокируется вся таблица КЛИЕНТ.
Как правильно организовать работу приложения и Пользователя?
девушка (2008-10-14 09:44:00) [1]
> Ещё раз - пользователь не балуется с записями в таблицах,
> но играется с записями в наборах данных. Как максимум.
Точно! Вопрос снят :)
Спасибо
Сергей М. (2008-10-14 09:38:00) [2]
> Блокируется вся таблица
Кто тебе сказал что вся?
> Как сделать
см. справку по теме "Using batch updates"
Johnmen (2008-10-14 09:26:00) [3]Ещё раз - пользователь не балуется с записями в таблицах, но играется с записями в наборах данных. Как максимум.
Когда надо отобразить изменения на реальные таблицы - тут уж и тр-ию. стартует, и отображает, и т.д.
Такова базовая идеология, реализованная в АДО. И не только в нём...
девушка (2008-10-14 09:18:00) [4]
> Транзакция стартуется перед выполнением реальных запросов
> к БД, а не перед тисканьем компонентов редактирования.
Ваша правда!
Как сделать чтобы пользователь мог создать несколько записей в связаных таблицах, редактировать их, и при необходимости, отменить свои действия вплоть до отмены создания записей?
Johnmen (2008-10-14 09:10:00) [5]Транзакция стартуется перед выполнением реальных запросов к БД, а не перед тисканьем компонентов редактирования.
stas (2008-10-14 09:02:00) [6]в sql транзакцию запускать.
Begin tran
insert into
...
insrt into
...
update
commit tran