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

AndreyZ
Пт 09 ноя 2018 13:55
Форум: SQL Server Data Access Components
Тема: RAISEERROR
Ответы: 1
Просмотры: 11461

Re: RAISEERROR

WildFrag писал(а): Пт 02 ноя 2018 20:42 Msg 50000, Level 16, State 1, Procedure TestMessages, Line 20 [Batch Start Line 0]
Этот текст генерирует парсер SSMS, а не SQL Server.

WildFrag писал(а): Пт 02 ноя 2018 20:42 Реальная ошибка
Поэтому в UniDAC приходит только эта ошибка от SQL Server. И мы не можем повлиять на это поведение.

Однако, вы можете добавить RAISERROR с детальной информацией в TRY...CATCH хранимой процедуры. Например:

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

RAISERROR (15600,-1,-1, 'Реальная ошибка. Контрольная точка 42. ....');  
Более подробно на MSDN о RAISERROR: https://docs.microsoft.com/en-us/sql/t- ... rver-2017 и TRY...CATCH: https://docs.microsoft.com/en-us/sql/t- ... erver-2017
AndreyZ
Вт 17 апр 2018 10:24
Форум: Universal Data Access Components
Тема: Как выбрать данные из БД?
Ответы: 1
Просмотры: 6361

Re: Как выбрать данные из БД?

В качестве значения для свойства TUniConnection.Database необходимо указывать не путь к файлу, а полный путь к папке, в которой лежит этот файл. Т.е. в вашем примере это 'C:\mybase\'

Для выполнения SQL запроса, который возвращает данные, используйте метод TUniQuery.Open. Ниже приведен пример консольного приложения, которое выводит на экран данные из таблицы.

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

program DBF_DBFUniProvider;

{$APPTYPE CONSOLE}
{$R *.res}
uses
  SysUtils,
  Uni,
  DBFUniProvider,
  ODBCUniProvider;

var
  UniConnection: TUniConnection;
  UniQuery: TUniQuery;
  base_path: string;
  i: integer;
begin
  UniConnection := TUniConnection.Create(nil);

  UniQuery := TUniQuery.Create(nil);
  UniQuery.Connection := UniConnection;

  UniConnection.ProviderName := 'DBF';

  base_path := ExtractFileDir(ParamStr(0))+'\';
  UniConnection.Database:=base_path;

  UniConnection.SpecificOptions.Values['DBFFormat'] := 'dfFoxPro2';
  UniConnection.SpecificOptions.Values['Direct'] := 'True';
  UniConnection.Connect;

  UniQuery.SQL.Text := 'SELECT * FROM BASA';
  UniQuery.Open;
  while (not UniQuery.Eof) do begin
    for i := 0 to UniQuery.FieldCount - 1 do
        Write(UniQuery.Fields[i].AsString + ' ');
    Writeln;
    UniQuery.Next;
  end;

  UniConnection.Disconnect;

  Readln;

end.
AndreyZ
Пн 22 янв 2018 14:51
Форум: PostgreSQL Data Access Components
Тема: pgDac есть вопросы
Ответы: 3
Просмотры: 14312

Re: pgDac есть вопросы

Чтобы получить значение OUT параметра после вызова хранимой процедуры, используйте компонент TPgStoredProc. Например:

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

  PgStoredProc1.StoredProcName := 'f_baseuser_ins';
  ...
  PgStoredProc1.ExecProc;
  baseuser_id := PgStoredProc1.ParamByName('out_baseuser_id').AsLargeInt;
А присваивать полученное значение в поле набора данных вы можете в обработчике события AfterUpdateExecute:

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

procedure TForm1.PgQuery1AfterUpdateExecute(Sender: TDataSet;
  StatementTypes: TStatementTypes; Params: TDAParams);
begin
  if stInsert in StatementTypes then
  begin
    Sender.FieldByName('baseuser_id').ReadOnly := False;
    try
      Sender.FieldByName('baseuser_id').NewValue := baseuser_id;
    finally
      Sender.FieldByName('baseuser_id').ReadOnly := True;
    end;
  end;
end;
AndreyZ
Чт 18 янв 2018 14:32
Форум: PostgreSQL Data Access Components
Тема: pgDac есть вопросы
Ответы: 3
Просмотры: 14312

Re: pgDac есть вопросы

1. Об использовании в PgDAC ключевого слова RETURNING для получения значения со стороны PostgreSQL вы можете найти в нашей онлайн-документации: http://www.devart.com/pgdac/docs/index. ... ration.htm

Также PgDAC умеет автоматически получать значение ключевого поля, которое генерируется на сервере. Например:

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

  PgQuery1.SQL.Text := 'select * from emp;';
  PgQuery1.DMLRefresh := True;
  PgQuery1.Active := True;
  PgQuery1.Insert;
  PgQuery1.FieldByName('ename').AsString := 'Testing.';
  PgQuery1.Post;
  ShowMessage('New empno = ' + PgQuery1.FieldByName('empno').AsString);
2. Пожалуйста, покажите нам INSERT SQL запрос, в котором вы используете хранимую процедуру, а также скприпт для создания этой хранимой процедуры.

3. PgDAC при вызове метода TPgConnection.Commit не закрывает датасеты, которые используют этот экземпляр соединения.
AndreyZ
Чт 09 ноя 2017 15:42
Форум: dbExpress драйверы
Тема: Отсутствует свойство SQLConnection в Delphi XE 10
Ответы: 7
Просмотры: 26647

Re: Отсутствует свойство SQLConnection в Delphi XE 10

Технология dbExpress не позволяет реализовать для датасетов использование курсоров серверного типа в SQL Server. Поэтому dbExpress-датасеты используют курсоры клиентского типа, и мы не можем повлиять на это.

Указанная вами ошибка возникает потому, что стандартный OLEDB provider и SQL Native Client не разрешают изменять данные в таблице до тех пор, пока на стороне сервера остаются невычитанные данные этой таблицы, и мы также не можем повлиять на это поведение.

Для решения проблемы попробуйте использовать Direct режим нашего драйвера. Например, это можно сделать в ран-тайм:

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

//  SQLConnection1.DriverName := 'DevartSQLServer';
//  SQLConnection1.GetDriverFunc := 'getSQLDriverSQLServer';
//  SQLConnection1.LibraryName := 'dbexpsda40.dll';
//  SQLConnection1.VendorLib := 'sqlncli11';

  SQLConnection1.DriverName := 'DevartSQLServerDirect';
  SQLConnection1.GetDriverFunc := 'getSQLDriverSQLServerDirect';
AndreyZ
Пн 23 окт 2017 08:28
Форум: Universal Data Access Components
Тема: Update Failed. Found 0 Records и Strict Update
Ответы: 3
Просмотры: 8272

Re: Update Failed. Found 0 Records и Strict Update

Пожалуйста, опишите более подробно ваш вопрос. Если у вас небольшой тестовый пример, который его демонстрирует, пожалуйста, пришлите его нам.
AndreyZ
Вт 18 июл 2017 14:18
Форум: Universal Data Access Components
Тема: Update Failed. Found 0 Records и Strict Update
Ответы: 3
Просмотры: 8272

Re: Update Failed. Found 0 Records и Strict Update

Мы не можем знать, как поведет себя пользовательский код при отключении опции StrictUpdate, кроме случаев, описанных в документации: https://www.devart.com/unidac/docs/?dev ... update.htm .

Все-таки, постарайтесь составить тестовый пример, т.к. для исследования указанной проблемы нам необходимо ее воспроизвести у себя.
AndreyZ
Пн 26 июн 2017 08:55
Форум: dbExpress драйверы
Тема: Опция SkipTransError
Ответы: 2
Просмотры: 17384

Re: Опция SkipTransError

В dbExpress для SQL Server нет расширенной опции SkipTransError. Однако вы можете добавить свое предложение на нашем UserVoice ( https://devart.uservoice.com/forums/104 ... components ). Если это предложение наберет достаточное количество голосов, мы рассмотрим возможность его реализации.
AndreyZ
Пт 02 июн 2017 08:35
Форум: Universal Data Access Components
Тема: Не сохраняется дробная часть десятичной дроби
Ответы: 1
Просмотры: 4881

Re: Не сохраняется дробная часть десятичной дроби

К сожалению, мы не можем воспроизвести указанную вами проблему. Пожалуйста, составьте небольшой пример для ее воспроизведения с использованием стандартных Data Controls (TDBGrid, TDBEDit и пр.) и пришлите нам для исследования. Пример вы можете прислать, используя форму контакта на нашем сайте: http://www.devart.com/company/contactform.html .
AndreyZ
Пн 22 май 2017 09:26
Форум: dbExpress драйверы
Тема: Отсутствует свойство SQLConnection в Delphi XE 10
Ответы: 7
Просмотры: 26647

Re: Отсутствует свойство SQLConnection в Delphi XE 10

В свойстве соединения TSQLConnection.Params имена и значения параметров необходимо задавать как строковые значения. Например, чтобы задать параметру FetchAll логическое значение False используйте:

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

SQLConnection1.Params.Values['FetchAll'] := 'False';
AndreyZ
Пт 19 май 2017 10:33
Форум: dbExpress драйверы
Тема: Отсутствует свойство SQLConnection в Delphi XE 10
Ответы: 7
Просмотры: 26647

Re: Отсутствует свойство SQLConnection в Delphi XE 10

Начиная с RAD Studio 2007 и более поздних, вы можете задавать расширенные опции dbExpress driver for SQL Server используя свойство соединения TSQLConnection.Params . Более подробно о расширенных опциях драйвера вы можете прочесть в файле Readme.html, который находится в папке, куда был установлен продукт dbExpress driver for SQL Server.
AndreyZ
Пт 19 май 2017 08:12
Форум: dbExpress драйверы
Тема: Отсутствует свойство SQLConnection в Delphi XE 10
Ответы: 7
Просмотры: 26647

Re: Отсутствует свойство SQLConnection в Delphi XE 10

В RAD Studio 10 Seattle вы можете задать расширенной опции драйвера BCDPrecision значение 14,4 при помощи такого кода:

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

SQLConnection1.Params.Values['BCDPrecision'] := '14,4';
AndreyZ
Чт 04 май 2017 09:45
Форум: SQL Server Data Access Components
Тема: xml поле
Ответы: 2
Просмотры: 14975

Re: xml поле

Чтобы SQL Server возвращал результат SQL запроса не как BLOB, а как XML, добавьте ключевое слово TYPE в выражение FOR XML. Например:

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

SELECT * FROM xxx FOR XML PATH, TYPE
AndreyZ
Пн 03 апр 2017 11:16
Форум: Universal Data Access Components
Тема: Unable to open file 'ODBCPROVIDER150.OBJ'. Помогите решить проблему
Ответы: 1
Просмотры: 5148

Re: Unable to open file 'ODBCPROVIDER150.OBJ'. Помогите решить проблему

Для устранения этой ошибки вам необходимо открыть файл ODBCUniProvider.hpp, который находится в подпапке UniDAC-продукта "\Include" и заменить строку

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

#pragma comment(lib, "odbcprovider150")
на

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

#pragma comment(lib, "odbcprovider150.bpi")
AndreyZ
Пн 03 апр 2017 09:46
Форум: SQL Server Data Access Components
Тема: Сохранение после отмены транзакции
Ответы: 1
Просмотры: 11833

Re: Сохранение после отмены транзакции

Пожалуйста уточните, воспроизводится ли данная проблема на нашем SDACDemo проекте? Он находится в папке "Demos\SDACDemo\" относительно пути, куда были проинсталлированы демо проекты SDAC.

Если указанная вами проблема не воспроизводится на нашем демо, постарайтесь составить небольшой пример для ее демонстрации и пришлите используя форму контакта на нашем сайте http://www.devart.com/company/contactform.html . В пример также включите скрипты для создания тестовых таблиц и хранимых процедур.