Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 17:46   #1
crocklam
 
Регистрация: 25.04.2010
Сообщений: 6
По умолчанию ADO с 2х компов, проблема с транзакциями Delphi

Добрый день всем!

У меня следующая проблема:

База данных, собранная в Access перенесена на MS SQL Server 2000
Я подключаюсь к ней с 2х компов одновременно с помощью компонента ADOConnection. Когда я пытаюсь записатьв одну и ту же таблицу через ADOTable с 2х компов одновременно или даже через пару секунд, все виснит.

Вот такой код выполняется а на обоих компах одновременно.

ADOSystemTable.Edit;

ADOSystemTable.FieldByName('Кол-во').AsInteger:=ADOSystemTable.Fiel dByName('Кол-во').AsInteger+kolvo;

ADOSystemTable.FieldByName('Сумма') .AsCurrency:=ADOSystemTable.FieldBy Name('Кол-во').AsInteger*ADOSystemTable.Field ByName('Цена').AsCurrency;

ADOSystemTable.Post;



Как сделать чтоб транзакции становились в очередь?
crocklam вне форума Ответить с цитированием
Старый 25.04.2010, 17:54   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

во первых выкинуть ADOTable и использовать ADOQuery, ADODataSet и управлять транзакциями самому Commit и Rollback
dron-s вне форума Ответить с цитированием
Старый 25.04.2010, 18:00   #3
crocklam
 
Регистрация: 25.04.2010
Сообщений: 6
По умолчанию

Вот вот как раз Commit и Rollback
Какойнить пример можно?
Как узнать что таблица занята и как что освободилась?
crocklam вне форума Ответить с цитированием
Старый 25.04.2010, 18:57   #4
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от crocklam Посмотреть сообщение
Вот вот как раз Commit и Rollback
Какойнить пример можно?
Пример с ADOCommand. Главное - обрати внимание на строчки с ADOConnection.
Код:
  ADOConnection.BeginTrans;  

  try
    ADOCommand.CommandType := cmdStoredProc;
    ADOCommand.CommandText := '...';
    ADOCommand.Parameters.Refresh;
    ADOCommand.Parameters.ParamByName( '...' ).Value := ...;
    ADOCommand.Parameters.ParamByName( '...' ).Value := ...;
        
    ADOCommand.Execute;
    ADOConnection.CommitTrans;
  except on E:Exception do
    begin
     ADOConnection.RollbackTrans;
      ...
    end;
  end;
P.S. Но проблема может быть вовсе и не в этом...
edgy вне форума Ответить с цитированием
Старый 25.04.2010, 22:17   #5
crocklam
 
Регистрация: 25.04.2010
Сообщений: 6
По умолчанию

Спасибо, понял)
crocklam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с транзакциями kate158 БД в Delphi 1 26.08.2009 15:49
Проблема: ася работает только на одном из двух компов (через роутер) Sazary Свободное общение 4 13.03.2009 15:04
проблема доступа к запароленной БД (ADO) azat БД в Delphi 5 20.09.2008 13:34
управление транзакциями Ary БД в Delphi 11 30.03.2008 17:33