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

vso
Пт 21 мар 2014 17:34
Форум: SQL Server Data Access Components
Тема: Можно ли избежать неявной транзакции?
Ответы: 19
Просмотры: 19135

Re: Можно ли избежать неявной транзакции?

Правильно ли я понимаю, что AutoCommit управляет поведение транзакции только в компоненте TMSConnection при вызове метода ApplyUpdates? А в датасетах метод ApplyUpdate автоматически не стартует транзакцию и не зависит от свойства AutoCommit компонента TMSConnection?
vso
Сб 07 сен 2013 19:42
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Да спасибо за помощь!

везде обновился и все заработало.... :D
vso
Ср 04 сен 2013 08:17
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

AndreyZ писал(а):Укажите пожалуйста точную версию SDAC которую Вы используете. Вы можете найти ее на закладке About редактора компонента TMSConnection.
Version 6.1.3 for Delphi XE2
vso
Вт 03 сен 2013 13:53
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

К сожалению я по прежнему не могу повторить ошибку. Попробуйте запустить это консольное приложение из Delphi XE2 в режиме отладки и определить конкретную строчку кода которая приводит к генерации исключения.

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

MSQuery.Post;
vso
Вт 03 сен 2013 11:02
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Microsoft SQL Server: 10.50.4000
Microsoft SQL Server Native Client 10.0: 10.50.4000.0
vso
Пн 02 сен 2013 08:23
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Приложение выдает такую ошибку:
vso
Пт 30 авг 2013 13:19
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Alexp писал(а):Добрый день,

Вам необходимо вместо Вашего кода, вставить в метод BeforeUpdateExecute приведенный мной код в предыдущем посте, тогда ошибки не возникнет
Действительно я был замечен во не внимательности, но простая операция копирования Вашего кода и вставки его в тестовый проект не принесла успеха. Ошибка все таже :cry:
vso
Пт 30 авг 2013 06:22
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Добрый день!

Сделал как Вы указали, и на своем проекте и на тестовом - результат один и тот же.

И вот он в картинках:
vso
Чт 29 авг 2013 15:21
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Спасибо за ответ, но не работает! :cry:

Все равно пишет ошибку - "Недопустимый тип параметра"
vso
Вт 27 авг 2013 08:28
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Re: Не одинаковое поведение Table-Valued Parameters

Попробовал перенести вызов процедуры в TMSQuery, написав:

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

exec spAddVolume :LINK_REPORTS READONLY, :ID_VOLUME, :NUMBER, :TITLE, :VERSION, :REF_TYPE, :SHORTNAME, :LONGNAME, :REF_BUILDING, :NUM_REVISION
но получаю ошибку:

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

Возвращающий табличное значение параметр "@P1" должен быть объявлен как READONLY.
хотя в процедуре все прописано:

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

ALTER PROCEDURE [dbo].[spAddVolume]
  @LINK_REPORTS dbo.LinkReports READONLY,
  @ID_VOLUME    INT,
  @NUMBER       VARCHAR(50),
  @TITLE        VARCHAR(510),
  @VERSION      INT,
  @REF_TYPE     INT,
  @SHORTNAME    VARCHAR(255),
  @LONGNAME     VARCHAR(255),
  @REF_BUILDING INT,
  @NUM_REVISION VARCHAR(20)
AS
vso
Пн 26 авг 2013 07:41
Форум: SQL Server Data Access Components
Тема: Не одинаковое поведение Table-Valued Parameters
Ответы: 19
Просмотры: 21946

Не одинаковое поведение Table-Valued Parameters

Добрый день!

Есть связь TMSQuery -> TMSUpdateSQL -> TMSStoredProc.

Есть два варианта кода.
Вариант 1.

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

TMSStoredProc.PrepareSQL;
TMSStoredProc.Params.ParamByName('Table').AsTable := TMSTableData.Table;
TMSQuery.Post;
Вариант 2

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

TMSStoredProc.PrepareSQL;
TMSStoredProc.Params.ParamByName('Table').AsTable := TMSTableData.Table;
TMSStoredProc.ExecProc;
Так вот если использовать вариант 1, то возникает ошибка. SQL возвращает "Недопустимый тип параметра".
Если же использовать Вариант 2, то все работает, но тогда состояние TMSQuery, после выполнения TMSStoredProc так же в dsInsert или dsEdit.
А надо бы чтобы изменилось и отработало свойство Refresh.

Подскажите как быть?
vso
Пн 01 апр 2013 09:58
Форум: SQL Server Data Access Components
Тема: Порядок изменений
Ответы: 7
Просмотры: 8582

Re: Порядок изменений

Такое поле существует у таблицы
CREATE TABLE Table1(
ID_STENCIL INT IDENTITY
а GRADE используется для сортировки в пределах поля Ref_NameTerminal

получается, что выход только в отказе от уникального индекса и в надежде что данные будут вноситься только через программу?
vso
Пт 29 мар 2013 13:46
Форум: SQL Server Data Access Components
Тема: Порядок изменений
Ответы: 7
Просмотры: 8582

Re: Порядок изменений

Алгоритм пересчета изменений следующий

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

procedure TfAddDev.QslListTerminalBeforeInsert(DataSet: TDataSet);
begin
  AIsLastRec := (DataSet.RecordCount = DataSet.RecNo);
  AOldRec := DataSet.Bookmark;
  if not AIsLastRec then
  begin
    try
      AGrade := DataSet['GADE'];
      DataSet.DisableControls;
      Dataset.GotoBookmark(AOldRec);
      while not DataSet.Eof do
      begin
        DataSet.Edit;
        DataSet['GRADE'] := DataSet['GRADE'] + 1;
        DataSet.Next;
      end;
      DataSet.GotoBookmark(AOldRec);
    finally
      DataSet.EnableControls;
    end;
  end;
end;

procedure TfAddDev.QslListTerminalAfterInsert(DataSet: TDataSet);
begin
  if not AIsLastRec then
    DataSet['GRADE'] := AGrade
  else begin
    if VarIsNull(DataSet['GRADE']) then
      DataSet['GRADE'] := DataSet.RecordCount + 1;
  end;
end;
vso
Чт 28 мар 2013 11:24
Форум: SQL Server Data Access Components
Тема: Порядок изменений
Ответы: 7
Просмотры: 8582

Re: Порядок изменений

Спасибо за ответ!

но я имел ввиду другое, мне нужно чтобы внутри какого-то действия ([ukUpdate]) можно было бы задавать порядок отправки изменений на сервер.

Поясню, есть таблица

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

CREATE TABLE Table1(
  ID_STENCIL INT IDENTITY,
  Ref_NameTerminal INT NULL,
  TERMINAL NVARCHAR(10) NULL,
  GRADE INT NOT NULL,
  CONSTRAINT PK_Table1 PRIMARY KEY (ID_STENCIL),
  CONSTRAINT FK_Table1_Table2 FOREIGN KEY (Ref_NameTerminal) REFERENCES Table2 (ID_NameTerminalStencil) ON DELETE CASCADE ON UPDATE CASCADE
) ON [PRIMARY]
GO

CREATE UNIQUE INDEX IX_sys_swgStencil ON Table1 (Ref_NameTerminal, GRADE) ON [PRIMARY]
как видно поля GRADE и TERMINAL создают уникальный индекс, в этой таблице редактировать необходимо только эти два поля. Если я добавляю запись, то поле GRADE пересчитывается.
Происходит нарушение уникальности, но если я буду отправлять на сервер записи от максимального GRADE к минимальному, то нарушения не произойдет.
vso
Ср 27 мар 2013 14:33
Форум: SQL Server Data Access Components
Тема: Порядок изменений
Ответы: 7
Просмотры: 8582

Порядок изменений

Добрый день!

Подскажите, возможно ли в режиме CachedUpdates := true, когда выполняешь процедуру ApplyUpdates изменить порядок (хотя бы) в котором изменения отсылаются на сервер?