Найдено 39 результатов

vso
Чт 21 мар 2013 07:40
Форум: SQL Server Data Access Components
Тема: Как временно заблокировать связь Master-Detail
Ответы: 1
Просмотры: 3989

Как временно заблокировать связь Master-Detail

Добрый день!

есть такой код

Код: Выделить всё

    fMain.MSConnection.StartTransaction;
    if dsTypeLink.State = dsInsert then
      QslTypeLink.Post;
    if QslListTerminal.UpdatesPending then
      QslListTerminal.ApplyUpdates;
    fMain.MSConnection.Commit;
  except
    fMain.MSConnection.Rollback;
  end;
где dsTypeLink это Master, а QslListTerminal это Detail.

Когда начинает работать код, то dsTypeLink.State = dsInsert, QslListTerminal.UpdatesPending = true.

Но стоить выполнить QslTypeLink.Post; как QslListTerminal.UpdatesPending = false.

Подскажите как решить эту проблему?
vso
Ср 20 мар 2013 14:06
Форум: SQL Server Data Access Components
Тема: Невозможно запустить транзакцию с клиента
Ответы: 4
Просмотры: 7866

Re: Невозможно запустить транзакцию с клиента

Сорри, ложная тревога!

я поменял в TMSCOnnection свойство
Provider с prSQL на prAuto и все заработало

Но почему так!!!! :?:
vso
Ср 20 мар 2013 13:26
Форум: SQL Server Data Access Components
Тема: Невозможно запустить транзакцию с клиента
Ответы: 4
Просмотры: 7866

Re: Невозможно запустить транзакцию с клиента

Спасибо, через Connection - работает.

но возникла другая проблема, почему-то ругается на такой запрос на обновление:

Код: Выделить всё

MERGE dbo.sys_Links_Stencil AS TARGET
USING (SELECT :Link_CabStencil, :Link_DevStencil, :Link_Name, :OLD_Link_CabStencil) AS SOURCE (A1, A2, A3, A4)
ON (Link_CabStencil = A4 AND Link_DevStencil = A2 AND Link_Name = A3)
WHEN MATCHED AND A4 = 0 THEN
  DELETE
WHEN MATCHED THEN 
  UPDATE SET Link_CabStencil = A1
WHEN NOT MATCHED THEN
  INSERT (Link_CabStencil, Link_DevStencil, Link_Name)
  VALUES (A1, A2, A3);
а ругается вот так:
Incorrect syntax near the keyword 'MERGE'.
vso
Ср 20 мар 2013 07:18
Форум: SQL Server Data Access Components
Тема: Невозможно запустить транзакцию с клиента
Ответы: 4
Просмотры: 7866

Невозможно запустить транзакцию с клиента

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

Пытаюсь запустить транзакцию

Код: Выделить всё

MSTrans.AddConnection(fMain.MSConnection);
MSTrans.StartTransaction;
но в ответ на эти мои действия получаю такой ответ
Партнерский диспетчер транзакций отключил поддержку удаленных и сетевых транзакций.
при чем пробовал выполнить запросы в dbForge Studio for SQL Server с того же самого клиента, ругательств не получил.

Самое печальное, что такая конструкция

Код: Выделить всё

ADOConnection1.BeginTrans;
не вызывает ошибки
vso
Пн 28 янв 2013 14:57
Форум: SQL Server Data Access Components
Тема: Как реализовать "цепочку" изменений?
Ответы: 10
Просмотры: 10618

Re: Как реализовать "цепочку" изменений?

Андрей, спасибо!

Скажите, а к синтаксису процедуры на стороне сервера есть какие либо требования?

Т.к. если я делаю такой запрос на сервере

Код: Выделить всё

DECLARE @ID int

exec pAddCable '4FGS4111', 3, 383, 548, @ID OUT

PRINT RTRIM(CAST(@ID AS VARCHAR(20)))
я получаю выходное значение.

А вот выполняя такую инструкцию через MSQuery

Код: Выделить всё

Execute pAddCable @KKS=:KKS, @REF_TYPE=:REF_TYPE, @REF_BOX=:REF_BOX, @REF_DEST=:REF_DESTINATION, @ID_CABLE=:ID_CABLE
и написав присвоение типа, как Вы написали выше я в dbMonitor вижу, что у этого параметра тип и правду стоит OUT, In Value = NULL и OUT Value = NULL????

Так и не удается достичь желаемого результата :cry:
vso
Вс 27 янв 2013 10:36
Форум: SQL Server Data Access Components
Тема: Как реализовать "цепочку" изменений?
Ответы: 10
Просмотры: 10618

Re: Как реализовать "цепочку" изменений?

Андрей, спасибо!

А скажите, я воспользовался вашей рекомендацией и создал процедуру, в TMSQuery в свойство InsertSQL написал:

Код: Выделить всё

Execute spAdd @par1=:field1 @par2=:field2 @par3 OUTPUT
Третий параметр у меня объявлен как выходной, вопрос как правильно написать что бы @par3 воспринималась как выходная переменная, присваивалась полю в датасете и далее использовалась бы в свойстве RefreshSQL????
vso
Чт 24 янв 2013 18:01
Форум: SQL Server Data Access Components
Тема: Как реализовать "цепочку" изменений?
Ответы: 10
Просмотры: 10618

Re: Как реализовать "цепочку" изменений?

Спасибо!

Но каково тогда предназначения TMSUpdateSQL????

Просто я встречал ранее компонент с почти таким же названием, когда делал приложения для Firebird, так вот он использовался именно для того чтобы выстраивать цепочку действий.

Там можно было указать до/после какого действия(вставка, изменение, удаление) он работает и можно было делать длинную цепочку из этих компонентов, указав порядок выполнения. При этом возвращаемые значения автоматом подставлялись в следующее звено и т.д.
vso
Чт 24 янв 2013 14:26
Форум: SQL Server Data Access Components
Тема: Как реализовать "цепочку" изменений?
Ответы: 10
Просмотры: 10618

Re: Как реализовать "цепочку" изменений?

У меня лежит компонент на форме TMSQuery и у него в свойстве SelectSQL выполняется такой запрос

Код: Выделить всё

SELECT DISTINCT dbo.Cable.ID_CABLE, dbo.Cable.KKS, dbo.Cable.REF_TYPE, dbo.Cable.REF_BOX, dbo.Track.REF_DESTINATION
FROM dbo.Cable INNER JOIN
    dbo.Track ON dbo.Cable.ID_CABLE = dbo.Track.REF_CABLE
затем после выполнения команды MSQuery.Insert и заполнения данных нужно осуществить вставку в две таблицы.

Код: Выделить всё

INSERT INTO dbo.Cable
  (KKS, REF_TYPE, REF_BOX)
VALUES
  (:KKS, :REF_TYPE, :REF_BOX)
SET :ID_CABLE = SCOPE_IDENTITY()
и

Код: Выделить всё

INSERT INTO dbo.Track
  (REF_DESTINATION, REF_CABLE)
VALUES
  (:REF_DESTINATION, :ID_CABLE)
причем :ID_CABLE это возвращенное значение при вставке в первую таблицу
vso
Чт 24 янв 2013 11:23
Форум: SQL Server Data Access Components
Тема: Как реализовать "цепочку" изменений?
Ответы: 10
Просмотры: 10618

Как реализовать "цепочку" изменений?

Все добрый день!

Есть MSQuery с запросом на выборку данных из нескольких таблиц. После редактирования или вставки новых данных необходимо сделать изменения или вставить новые данные в разные таблицы.
Как правильно организовать эту операцию?

Причем если мы вставляем значения то нам нужно получить идентификатор записи присвоенный при вставке данных в первую таблицу и отправить его в следующем запросе на вставку данных во вторую таблицу...