Найден 201 результат

ViktorV
Ср 24 апр 2019 15:10
Форум: Universal Data Access Components
Тема: получить значение выходного параметра (select xxx from proc в TUniStoredProc)
Ответы: 15
Просмотры: 10726

Re: получить значение выходного параметра (select xxx from proc в TUniStoredProc)

Akella писал(а): Ср 24 апр 2019 14:36 На всякий случай, добавлю кусок кода SP_GET_CONTACTS

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

create or alter procedure SP_GET_CONTACTS (
    ID_USER_VAR type of column USERS.ID,
    ID_OBJ_VAR type of column APART.ID,
    ST_VAR type of column TYPES.SUPERTYPE,
    ID_TELEGRAM_VAR type of column TTELEGRAMUSERS.TELEGRAM_ID)
returns (
    RES varchar(128))
as
как видите, RES есть.
И в IDE IBExpert код выполняется без ошибок
Уточните, пожалуйста, вы пробовали предложенный нами ранее способ решения задачи?
ViktorV
Ср 24 апр 2019 14:34
Форум: Universal Data Access Components
Тема: получить значение выходного параметра (select xxx from proc в TUniStoredProc)
Ответы: 15
Просмотры: 10726

Re: получить значение выходного параметра (select xxx from proc в TUniStoredProc)

Вам не требуется вручную устанавливать свойство TUniStoredProc.SQL.Text. Когда используется свойство TIBCStoredProc.StoredProcName и вызывается метод TIBCStoredProc.Prepare, будет автоматически построен запрос на выполнение SP.
Для решения задачи, пожалуйста, попробуйте закомментировать строку кода

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

 SP_GET_CONTACTS.SQL.Text := 'SELECT RES FROM SP_GET_CONTACTS(:ID_USER_VAR, :ID_OBJ_VAR, :ST_VAR, :ID_TELEGRAM_VAR)';
ViktorV
Пт 15 мар 2019 15:10
Форум: Universal Data Access Components
Тема: Unidac Uniquery шифрование
Ответы: 5
Просмотры: 6800

Re: Unidac Uniquery шифрование

На данный момент UniDAC не поддерживает возможность отловить событие, что данные выводятся без попытки дешифрования и не поддерживает шифрование параметров.
Если Вы хотите, чтобы мы добавили указанную вами функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
ViktorV
Чт 14 мар 2019 07:51
Форум: Universal Data Access Components
Тема: UniDAC + MySQL + SSL
Ответы: 3
Просмотры: 7080

Re: UniDAC + MySQL + SSL

Да, вы правы, указанные нами библиотеки относятся к Windows платформе. Для Ubuntu следует использовать libssl.so. Но, как мы писали ранее, лучше использовать связку UniDAC - SecureBridge, так как использование библиотек OpenSSL может привести к возникновению различных проблем.
ViktorV
Ср 13 мар 2019 14:53
Форум: Universal Data Access Components
Тема: UniDAC + MySQL + SSL
Ответы: 3
Просмотры: 7080

Re: UniDAC + MySQL + SSL

UniDAC использует следующие имена библиотек OpenSSL: libeay32.dll и ssleay32.dll. Вы можете деплоить данные библиотеки со своим приложением, чтобы не зависеть от наличия данных библиотек на компьютере. Но использование библиотек OpenSSL для создания соединений SSL с MySQL сервером может привести к возникновению различных проблем. Например, версия OpenSSL может не поддерживаться сервером MySQL, битность поставляемых OpenSSL библиотек может отличаться от битности вашего приложения и т.д.
Для решения проблем вы можете использовать компоненты SecureBridge. SecureBridge позволяет устанавливать безопасные соединения в одном приложении без каких-либо внешних файлов. Вы можете узнать, как использовать SecureBridge с UniDAC в разделе «Secure connections» справки MyDAC.
Вы можете увидеть пример работы UniDAC и SecureBridge в демонстрационных проектах: %UniDACDemos%\TechnologySpecific\SecureBridge, где %UniDACDemos% - это путь установки демонстрационных проектов UniDAC на вашем компьютере.
ViktorV
Ср 13 мар 2019 14:24
Форум: Universal Data Access Components
Тема: Unidac Uniquery шифрование
Ответы: 5
Просмотры: 6800

Re: Unidac Uniquery шифрование

h9ko писал(а): Ср 06 мар 2019 21:51 И еще странное поведение использую пример из справки https://www.devart.com/unidac/docs/encryption.htm
при UniEncryptor->DataHeader=ehTag; или UniEncryptor->DataHeader=ehTagAndHash;
при вводе/выводе данных через подключенный UniTable данные шифруются/дешифруются
как пример настройки :
UniEncryptor->DataHeader=ehTagAndHash;
UniEncryptor->EncryptionAlgorithm=ehBlowfish;
UniEncryptor->HashAlgorithm=haSHA1;
UniEncryptor->InvalidHashAction=ihFail;
UniEncryptor->Password= 12345;
UniTable->Encryption->Fields= "ENAME, HIREDATE, SAL, FOTO";
в Unitable ввожу в поле "ENAME" Hello world в бд отображается:

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

C544E5292C9C42A5B94FE279127029012B0D67570773EDDD92CBDF2B5F4D4AE98356CB8B9D1DFF96BBF0B9924A57C30458C978399BA81A1BB6DE0B08E16C2580A5F660C91B618A341A7E503CD014247C
Если средствами бд внесу изменение в последнем символе например на

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

C544E5292C9C42A5B94FE279127029012B0D67570773EDDD92CBDF2B5F4D4AE98356CB8B9D1DFF96BBF0B9924A57C30458C978399BA81A1BB6DE0B08E16C2580A5F660C91B618A341A7E503CD014247F
При обновление UniTable выдастся ошибка "Encrypted data is corrupt - Invalid hash"
Если средствами бд внесу

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

Hello world
При обновление UniTable он не выдаст никаких ошибок и выдаст Hello world.
в чем подвох? Пробовал разные варианты UniEncryptor->InvalidHashAction, всегда аналогичное поведение
При использовании UniEncryptor->DataHeader=ehNone; хотя бы искажаются данные, но ошибок никаких
Для хранения зашифрованной информации мы сохраняем, кроме самих данных, дополнительную информацию: the GUID and the hash, когда DataHeader установлено в ehTagAndHash или ehTag. В данном случае, мы пытаемся вычитать GUID, а затем hash, так как вы изменили последний символ, hash измениться и вы получите указанную вами ошибку. В случае записи "Hello world" напрямую, мы пытаемся вычитать GUID и, если это не получиться выводим содержимое поля без попытки дешифрования.
ViktorV
Ср 13 мар 2019 14:21
Форум: Universal Data Access Components
Тема: Unidac Uniquery шифрование
Ответы: 5
Просмотры: 6800

Re: Unidac Uniquery шифрование

h9ko писал(а): Ср 06 мар 2019 11:41 Доброе время суток,
Указал в UniEncriptor поле шифрования DateMoment и пароль занес данные через Unitable c привязанным UniEncriptor.
Данные в базе зашифрованы в DBGrid все в расшифрованном виде все хорошо.
При использовании UniQuery1+DBGrid запрос ниже возвращает данные в зашифрованном виде

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

 UnicodeString sz = "SELECT * FROM OPER ";

	  UniQuery1->SQL->Clear();
	  UniQuery1->SQL->Add(sz);
	  UniQuery1->DataTypeMap->AddFieldNameRule ("DateMoment", ftString);
	  UniQuery1->Open();
При использовании UniQuery1+DBGrid запрос ниже не возвращает данные

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

 UnicodeString sz = "SELECT * FROM OPER WHERE DateMoment = '2021-03-05 00:00:00'";

	  UniQuery1->SQL->Clear();
	  UniQuery1->SQL->Add(sz);
	  UniQuery1->DataTypeMap->AddFieldNameRule ("DateMoment", ftString);
	  UniQuery1->Open();
Как делать запрос в Uniqery к зашифрованным столбцам чтобы можно было потом через методы ниже их изменять?

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

 if (!UniQuery1->IsEmpty())
	 {
	  UniQuery1->Edit();
	  UniQuery1->FieldByName("DateMoment")->AsString =  "2020-03-05 00:00:00";
	   UniQuery1->Post();
	 }else
	 {
	   UniQuery1->Insert();
	   UniQuery1->FieldByName("DateMoment")->AsString =  "2021-03-05 00:00:00";
	   UniQuery1->Post();
	  }  
При использовании запроса SELECT * FROM OPER WHERE DateMoment = '2021-03-05 00:00:00' UniDAC отправляет SELECT запрос как есть, без преобразования, а на сервере данные находятся в зашифрованном виде. Поэтому, вы получаете пустой рекордсет при выполнении указанного запроса. При использовании UniDAC Data Encryption вам следует использовать SELECT запрос без использования WHERE, тогда вы сможете использовать методы Edit .. Post для изменения данных.
ViktorV
Вт 12 фев 2019 09:59
Форум: MySQL Data Access Components
Тема: AV failure in the Refresh method in RAD Studio 10.2
Ответы: 4
Просмотры: 10798

Re: AV failure in the Refresh method in RAD Studio 10.2

Мы исправили указанную ошибку. Данное исправление войдет в следующий релиз MyDAC.
ViktorV
Чт 24 янв 2019 13:00
Форум: MySQL Data Access Components
Тема: AV failure in the Refresh method in RAD Studio 10.2
Ответы: 4
Просмотры: 10798

Re: AV failure in the Refresh method in RAD Studio 10.2

Спасибо за информацию. Мы исследуем данное поведение MyDAC и сообщим Вам результат.
ViktorV
Ср 23 янв 2019 11:32
Форум: MySQL Data Access Components
Тема: AV failure in the Refresh method in RAD Studio 10.2
Ответы: 4
Просмотры: 10798

Re: AV failure in the Refresh method in RAD Studio 10.2

Чтобы дать вам быстрый и полный ответ на ваш вопрос, пожалуйста, составьте и вышлите нам, с помощью контактной формы https://www.devart.com/company/contactform.html, полный пример, демонстрирующий указанное вами поведение, включающий скрипты для создания и заполнения объектов БД. Также укажите точную версию MySQl которую вы используете.
ViktorV
Ср 19 дек 2018 12:59
Форум: MySQL Data Access Components
Тема: Проблема с восстановлением соединения с сервером после простоя
Ответы: 1
Просмотры: 9924

Re: Проблема с восстановлением соединения с сервером после простоя

Обратите внимание, MyDAC автоматически не инициирует проверку соединения с сервером. Поэтому, после успешного соединения с сервером, если связь с сервером разрыватся свойство TMyConnection.Connected будет установленно в True и не возбуждаться событие OnConnectionLost пока не произойдет попытка обращения к серверу.
Для решения вашей задачи, вы можете использовать метод TMyConnection.Ping. Этот метод используется для проверки соединения с сервером MySQL, если соединение было разорвано, то возникнет ошибка и будет выполнена попытка переподключиться к серверу.
Также данный метод можно использовать для того, чтобы сервер не закрыл соединение по таймауту. В данном случае Вы можете использовать TMyConnection.Ping следующим образом - вызывать его из таймера, а интервал таймера установить в значение меньшее чем wait_timeout сервера (чтобы интервалы между получениями сервером команд не превышали wait_timeout).

OnConnectionLost событие происходит только при выполнении следующих условий:
- происходит фатальная ошибка;
- в соединении нет открытых транзакций, которые не являются ReadOnlyReadCommitted (если соединение имеет хотя бы одну открытую транзакцию, которая не является ReadCommitedReadOnly, FailOver не выполняется. Все ReadCommitedReadOnly транзакции восстанавливаются при помощи FailOver операции);
- если нет открытых или недочитанных датасетов;
- нет явно препарированных датасетов или SQL запросов.
Пожалуйста, убедитесь, что ни одно из вышеуказанных условий не нарушено.
ViktorV
Ср 28 ноя 2018 14:46
Форум: Universal Data Access Components
Тема: Автозагрузка размера текстового поля TField
Ответы: 1
Просмотры: 4631

Re: Автозагрузка размера текстового поля TField

На данный момент UniDAC не поддерживает указанную вами функциональность.
Если Вы хотите, чтобы мы добавили данную функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
ViktorV
Ср 28 ноя 2018 14:31
Форум: Universal Data Access Components
Тема: Автогенерация InsertSQL, UpdateSQL
Ответы: 1
Просмотры: 4596

Re: Автогенерация InsertSQL, UpdateSQL

Мы не видим целесообразности добавления данной функциональности. Но, если Вы хотите, чтобы мы добавили данную функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
Для решения вашей задачи, вы можете объявить наследника TUniQuery и добавить необходимые методы.
Обратите внимание, в коде задействованы внутренние методы и неправильное их использование может привести к непредсказуемым последствиям.
ViktorV
Пн 03 сен 2018 09:55
Форум: MySQL Data Access Components
Тема: итоги в TCRDBGRid
Ответы: 1
Просмотры: 8391

Re: итоги в TCRDBGRid

Для решения вашей задачи вы можете использовать следующий код:

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

var
  StrValue: string;
  Value: variant;
...
  StrValue := CRDBGrid.Columns[0].TotalString;
  Value := CRDBGrid.Columns[0].TotalValue;
ViktorV
Вт 21 авг 2018 09:48
Форум: InterBase Data Access Components
Тема: Является ли это ошибкой или нет?
Ответы: 1
Просмотры: 8683

Re: Является ли это ошибкой или нет?

1. Компоненты TUniQuery является наследником базового класса TDataSet и реализуют его интерфейс. Как указано в документации http://docwiki.embarcadero.com/Librarie ... ataSet.Eof свойство Eof устанавливается в True при вызове метода Last.
2. Свойство AutoCommit по-умолчанию имеет значение True, что приводит к автоматическому выполнению CommitRetaining или RollbackRetaining при любой модификации данных. Установив свойство в False, Вы избавитесь от такого поведения, однако, управлять транзакциями Вам придется самостоятельно.
Так как вы устанавливаете UniConnection.AutoCommit в True при вызове TUniQuery.ExecSQL будет автоматически вызван метод TUniTransaction.CommitRetaining.
Если вам требуется ручное управление транзакций - установите TUniQuery.AutoCommit в False.