Конференция "Базы" » ADO + MS SQL как сделать внесение данных в разные таблицы [D7, MSSQL]
 
  • девушка (14.10.08 08:59) [0]
    Добрый день!

    Есть БД на MS SQL 2005 для работы с ней используются компоненты ADO.

    Пользователю надо добавить некую запись (например, о Клиенте) в БД. При этом запись будет создаваться не только в таблице КЛИЕНТ, но и в нескольких связаных таблицах.

    Для этого Пользователю предлагается мастер - в котором он заполняет нужные поля.

    Редактирование записей происходит в разных формах с ДБ-компонентами и ADODataSet.
    Мастер представляет из себя некий набор из фреймов, составляющих формы для редактирования (с нужными ограничениями).
    Примерная работа мастера:
    * Открываем транзакцию.
    * создаем набор "пустых" записей, нужных для заполнения данных о Клиенте.
    * Пользователь проходясь по вкладкам мастера редактирует эти данные.
    * Пользователь нажимает на кнопку "Ок" - изменения фиксируются.
    * Пользователь нажимает на кнопку "Отмена" - транзакция откатывается.

    Проблема:
    При открытии транзакции adocMSSQL.BeginTrans;
    Блокируется вся таблица КЛИЕНТ.

    Как правильно организовать работу приложения и Пользователя?
  • stas © (14.10.08 09:02) [1]
    в sql транзакцию запускать.
    Begin tran
    insert into
    ...
    insrt into
    ...
    update
    commit tran
  • Johnmen © (14.10.08 09:10) [2]
    Транзакция стартуется перед выполнением реальных запросов к БД, а не перед тисканьем компонентов редактирования.
  • девушка (14.10.08 09:18) [3]

    > Транзакция стартуется перед выполнением реальных запросов
    > к БД, а не перед тисканьем компонентов редактирования.


    Ваша правда!

    Как сделать чтобы пользователь мог создать несколько записей в связаных таблицах, редактировать их, и при необходимости, отменить свои действия вплоть до отмены создания записей?
  • Johnmen © (14.10.08 09:26) [4]
    Ещё раз - пользователь не балуется с записями в таблицах, но играется с записями в наборах данных. Как максимум.
    Когда надо отобразить изменения на реальные таблицы - тут уж и тр-ию. стартует, и отображает, и т.д.
    Такова базовая идеология, реализованная в АДО. И не только в нём...
  • Сергей М. © (14.10.08 09:38) [5]

    > Блокируется вся таблица


    Кто тебе сказал что вся ?


    > Как сделать


    см. справку по теме "Using batch updates"
  • девушка (14.10.08 09:44) [6]

    > Ещё раз - пользователь не балуется с записями в таблицах,
    >  но играется с записями в наборах данных. Как максимум.


    Точно! Вопрос снят :)
    Спасибо
 
Конференция "Базы" » ADO + MS SQL как сделать внесение данных в разные таблицы [D7, MSSQL]
Есть новые Нет новых   [134473   +33][b:0][p:0]