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

vso
Чт 16 апр 2015 20:20
Форум: SQL Server Data Access Components
Тема: Требование на смену пароля
Ответы: 3
Просмотры: 10263

Re: Требование на смену пароля

Андрей, спасибо! попробую...
vso
Ср 08 апр 2015 19:39
Форум: SQL Server Data Access Components
Тема: Требование на смену пароля
Ответы: 3
Просмотры: 10263

Требование на смену пароля

Добрый день!

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

Возможно ли такое?
vso
Вт 17 мар 2015 20:41
Форум: SQL Server Data Access Components
Тема: OpenNext
Ответы: 1
Просмотры: 11614

OpenNext

Добрый вечер!

у компонента TMSQuery есть метод OpenNext. Скажите, если я использую мультизапрос, я могу "достать" следующий набор данных только 1 раз?

В процессе работы я могу переключаться между наборами данных?
vso
Пн 23 июн 2014 14:13
Форум: SQL Server Data Access Components
Тема: VirtualTable портит макросы!
Ответы: 5
Просмотры: 5042

Re: VirtualTable портит макросы!

Все, проблема разрешилась.

Адресс не мог прочитать, не Ваш компонент, другой. Т.ч. пришлось присвоение макросам взять в try finally и внутри организовать DisableControl/EnableControl, и еще в некоторых местах проверять на существование и все заработало.

То, что ошибка вылетала во время трассировки на обращении к макросу связано с тем, что при присвоении макрасу значениия, датасет закрывается, а у меня в событии AfterClose происходит еще куча действий, вызывающие другие действи, и эта ошибка пряталась где-то в глубине. Наткнулся же совершенно случайно.

Спасибо за помощь.
vso
Чт 19 июн 2014 12:28
Форум: SQL Server Data Access Components
Тема: VirtualTable портит макросы!
Ответы: 5
Просмотры: 5042

Re: VirtualTable портит макросы!

Я запустил ваш пример, все сработало. решил сделать как у меня чтобы в VirtualTable копировалось в событии AfterOpen, но тоже выдает OK.

Но стоит раскомментировать две эти строчки и в момент изменения макроса приложение вылетает. :?:
vso
Ср 18 июн 2014 14:09
Форум: SQL Server Data Access Components
Тема: VirtualTable портит макросы!
Ответы: 5
Просмотры: 5042

VirtualTable портит макросы!

Добрый день!

использую такую конструкцию

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

procedure TmodData.QslImportDevAfterOpen(DataSet: TDataSet);
begin
  DataSet.Fields.FieldByName('fdFlag').ReadOnly := false;
  DataSet.Fields.FieldByName('REF_TYPE').ReadOnly := false;
  DataSet.Fields.FieldByName('REF_CONTROL').ReadOnly := false;
  QslListType.Open;
  TslListMesta.Open;
  VirtualTable.Assign(DataSet);
  VirtualTable.Active := true;
end;
при далнейшем обращении к макросам в коде вылетает ошибка о невозможности прочесть память по такому-то адресу.

Если закомментировать строчки с VirtualTable, то работоспособность восстанавливается, но при это завязанная на использовании VirtualTable функциональность пропадает. :(
vso
Пн 07 апр 2014 11:36
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

Ok, получается что, если вставку/обновление осущиствить в стороннем компоненте, то основной датасет останится в состоянии вставки/обновления. Как сделать грамотно, чтобы он вышел из этого состояния и обновил даные/обновленную строчку, т.е. сымитировать свойство RefreshOptions = [roAfterInsert, roAfterUpdate]?
vso
Сб 05 апр 2014 19:11
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

Вот таблица:

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

CREATE TABLE dbo.LISTVOLUME (
  ID_LISTVOLUME int IDENTITY,
  NAME varchar(510) NOT NULL,
  PAGE int NOT NULL,
  TYPEPAGE int NULL,
  NOTICE varchar(255) NULL,
  REF_REV int NOT NULL,
  CONSTRAINT PK_LISTVOLUME PRIMARY KEY (ID_LISTVOLUME),
  CONSTRAINT KEY_LISTVOLUME UNIQUE (REF_REV, PAGE),
  CONSTRAINT FK_LISTVOLUME_1 FOREIGN KEY (REF_REV) REFERENCES dbo.REVISIONS (ID_REVISIONS),
  CONSTRAINT FK_LISTVOLUME_2 FOREIGN KEY (TYPEPAGE) REFERENCES dbo.TYPEPAGE (ID_PAGE_TYP)
) ON Data
это ее триггер:

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

CREATE TRIGGER trListVolume_Insert
ON dbo.[LISTVOLUME] WITH EXECUTE AS CALLER
INSTEAD OF INSERT
AS
BEGIN
  DECLARE @MPage int;

  SET NOCOUNT ON;
  
  SELECT @MPage = ISNULL(MAX(l.PAGE), 1)
  FROM LISTVOLUME l, INSERTED i
  WHERE i.REF_REV = l.REF_REV
  
  INSERT INTO LISTVOLUME (NAME, PAGE, TYPEPAGE, NOTICE, REF_REV)
    SELECT i.NAME,
          @MPage + ROW_NUMBER() OVER (ORDER BY i.PAGE),
          i.TYPEPAGE,
          i.NOTICE,
          i.REF_REV
    FROM INSERTED i;
  
  SELECT SCOPE_IDENTITY();
END
На самом деле я еще раз взглянул на то что получается в MSSMS и поня что это не результат действий OUTPUT, а результат работу выражения

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

SELECT SCOPE_IDENTITY();
в конце триггера. И он выглядит как результат работы запроса, т.е. MSSMS отображает возвращаемые данные оператором SELECT.

Раз MSSMS может работать с возвращенными данными, может есть возможность то, что возвращается вернуть и в TMSQuery???
vso
Чт 03 апр 2014 16:12
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

у меня стоит это в инспекторе объектов, не программно...

сейчас еще раз сделал запрос в MSSMS

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

DECLARE @Return TABLE (
  ID int
);

INSERT INTO LISTVOLUME ( NAME, TYPEPAGE, NOTICE, REF_REV)
OUTPUT INSERTED.ID_LISTVOLUME INTO @Return
  VALUES ('Тест', NULL, NULL, 117);

SELECT ID FROM @Return
P.S. у меня sdac 6.7.13

результат возвращает
vso
Чт 03 апр 2014 14:54
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

Alexp писал(а):

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

procedure TForm1.MSQuery1BeforeUpdateExecute(Sender: TCustomMSDataSet;
  StatementTypes: TStatementTypes; Params: TMSParams);
begin
  Params.ParamByName('ID_LISTVOLUME').ParamType := ptOutput;
end;
к сожалению это не помогло возвращается 0 и соответсвенно не работает Refresh после вставки. :(
vso
Ср 02 апр 2014 08:30
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

На просторах интернета, я нашел как решить проблему
http://wiki.alphasoftware.com/Scope_Ide ... F+triggers

Правда она позволяет только в инструкции OUTPUT получить значение не равное NULL. Scope_Identity продолжает возвращать NULL.

Но когда я делаю такой запрос

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

DECLARE @Return TABLE (id int);

INSERT INTO LISTVOLUME (NAME, NOTICE, REF_REV)
OUTPUT INSERTED.ID_LISTVOLUME INTO @Return
  VALUES (:Name, :NOTICE, :ID_REVISIONS);

SELECT :ID_LISTVOLUME = id FROM @Return;
в студии (предварительно подправив синтаксис и вставив реальные значения) то результат возвращается, а TMSQuery возвращается 0?
vso
Вт 01 апр 2014 19:44
Форум: SQL Server Data Access Components
Тема: Представление и TMSQuery
Ответы: 1
Просмотры: 2734

Представление и TMSQuery

Добрый день!!

у меня есть представление из нескольких таблиц. У этого представления написаны триггеры instead of INSERT, DELETE, UPDATE.

Во время проектирования у свойства UpdateTable есть возможность выбрать как любую таблицу из этого представления, так и само представление.

Так вот когда выбираешь какую либо таблицу, то появляется возможность редактировать (run-time) только поля этой таблицы. Если выбрать представление, то весь датасет в ReadOnly.

Проблему можно решить только явно создав поля в датасете? и там задав у свойства ReadOnly = false????

или еще как-то можно?

P.S. А то не хочется создавать столько полей... :cry:
vso
Чт 27 мар 2014 15:51
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Re: Возвращение ID при вставке

Разобрался, это шутил триггер ISTEAD OF INSERT, почему то если есть такой триггер функция scope_identity() не работает, пришлось воспользоваться вместо нее - IDENT_CURRENT('LISTVOLUME').

Но это не хорошее решение
vso
Чт 27 мар 2014 14:23
Форум: SQL Server Data Access Components
Тема: Возвращение ID при вставке
Ответы: 12
Просмотры: 11427

Возвращение ID при вставке

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

есть такой SQL:

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

SELECT Lv.ID_LISTVOLUME,
       Lv.NAME,
       Lv.PAGE,
       Lv.TYPEPAGE,
       Lv.NOTICE,
       Lv.REF_REV AS ID_REVISIONS
FROM dbo.LISTVOLUME Lv
WHERE Lv.REF_REV = :ID_REVISIONS
ORDER BY PAGE
и есть такой код в SQLInsert:

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

INSERT INTO LISTVOLUME (NAME, NOTICE, REF_REV)
VALUES (:Name, :NOTICE, :ID_REVISIONS)
SET :ID_LISTVOLUME = scope_identity()
так же в документации написано
Use the ReturnParams property to return the new values of fields to dataset after insert or update.When ReturnParams is True, OUT parameters of the SQLInsert and SQLUpdate statements is assigned to corresponding fields. The default value is False.
Но суди по мониторингу (DBMonitor) ID_LISTVOLUME = NULL, подскажите как заставить возвращать только что вставленный ID