В данный момент мы продолжаем исследование этого вопроса, но, к сожалению, пока не готовы предоставить никаких временных рамок.
Пока полного решения нет, вы можете воспользоваться временным решением. Для этого установите свойство FetchRows в большее значение, например 100 (этот параметр может быть меньше в зависимости от ваших условий).
Найдено 212 результатов
- Пн 29 ноя 2021 16:57
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
- Вт 02 ноя 2021 15:13
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
Re: Ошибка UNION ALL + SmartFetch
Спасибо за информацию.
Мы воспроизвели указанное вами поведение и приступили к исследованию. Мы сообщим вам как только появиться любые результаты.
Мы воспроизвели указанное вами поведение и приступили к исследованию. Мы сообщим вам как только появиться любые результаты.
- Пт 29 окт 2021 17:17
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
Re: Ошибка UNION ALL + SmartFetch
Мы не можем воспроизвести указанное вами поведение, так как в присланном вами примере используются макросы. И в вашем примере запрос ничего не возвращает. Пожалуйста, укажите точный код, чтобы мы смогли воспроизвести данное поведение на вашем примере.Akella писал(а): ↑Пт 29 окт 2021 13:27 Проблема не решена. Я получаю ошибку Record not found
Замените код на вот этот и вы получите ошибку:
я так понимаю, проблема с FetchRows.Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject); begin UniQuery1.SpecificOptions.Values['FetchAll'] := 'False'; UniQuery1.FetchRows := 1; UniQuery1.SmartFetch.LiveBlock := True; UniQuery1.SmartFetch.Enabled := True; UniQuery1.SmartFetch.Enabled := true; UniQuery1.ParamByName('PARAM1').AsString := '7451487'; UniQuery1.Open; end;
У меня используется таблица с пагинацитей.
- Пт 29 окт 2021 17:10
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
- Пт 29 окт 2021 17:08
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
Re: Ошибка UNION ALL + SmartFetch
Нет, макросы в свойстве SQLGetKeyValues заменяться не будут. Поэтому, там должен быть точный SQL запрос для получения полей, которые будут уникально идентифицировать запись.
- Вт 26 окт 2021 15:44
- Форум: Universal Data Access Components
- Тема: Ошибка UNION ALL + SmartFetch
- Ответы: 12
- Просмотры: 10637
Re: Ошибка UNION ALL + SmartFetch
При использовании SmartFetch режима UniDAC, если свойство TUniQuery.SmartFetch.SQLGetKeyValues установлено в пустую строку, UniDAC пытается составить и выполнить запрос на чтение ключевых полей и полей указанных в свойстве PrefetchedFields.
Когда SQL запрос является сложным, как в вашем случае, автоматически сгенерированный запрос может быть некорректным. В таком случае вам следует в свойстве TUniQuery.SmartFetch.SQLGetKeyValues.Text указать запрос на получения полей, которые будут уникально идентифицировать запись. Например:
Когда SQL запрос является сложным, как в вашем случае, автоматически сгенерированный запрос может быть некорректным. В таком случае вам следует в свойстве TUniQuery.SmartFetch.SQLGetKeyValues.Text указать запрос на получения полей, которые будут уникально идентифицировать запись. Например:
Код: Выделить всё
SELECT A.ID FROM UNLIST(:PARAM1) UL
INNER JOIN PHONES P ON P.TEL = UL.RES
INNER JOIN APART A ON A.ID = P.ID_APART
LEFT JOIN OPERATION O ON O.ID = A.ID_OPERATION
LEFT JOIN STREETS S ON S.ID = A.ID_STREET
UNION ALL
SELECT DISTINCT A.ID FROM UNLIST(:PARAM1) UL
INNER JOIN PHONES P ON P.TEL = UL.RES
INNER JOIN ARENDA A ON A.ID = P.ID_ARENDA
LEFT JOIN OPERATION O ON O.ID = A.ID_OPERATION
LEFT JOIN STREETS S ON S.ID = A.ID_STREET
UNION ALL
SELECT DISTINCT A.ID FROM UNLIST(:PARAM1) UL
INNER JOIN PHONES P ON P.TEL = UL.RES
INNER JOIN OFFICES A ON A.ID = P.ID_OFF
LEFT JOIN OPERATION O ON O.ID = A.ID_OPERATION
LEFT JOIN STREETS S ON S.ID = A.ID_STREET
UNION ALL
SELECT DISTINCT A.ID FROM UNLIST(:PARAM1) UL
INNER JOIN PHONES P ON P.TEL = UL.RES
INNER JOIN MEDIATORS A ON A.ID = P.ID_MEDIATOR
- Пт 13 авг 2021 12:17
- Форум: MySQL Data Access Components
- Тема: Ошибка в триггере
- Ответы: 9
- Просмотры: 13370
Re: Ошибка в триггере
Спасибо за ответ,
На современных системах данная задержка очень незначительная.
И данное незначительное уменьшение скорости работы нивелируется возможность корректно работать с любимы Unicode данными.
С уважением,
Виктор
На современных системах данная задержка очень незначительная.
И данное незначительное уменьшение скорости работы нивелируется возможность корректно работать с любимы Unicode данными.
С уважением,
Виктор
- Пт 13 авг 2021 11:16
- Форум: MySQL Data Access Components
- Тема: Ошибка в триггере
- Ответы: 9
- Просмотры: 13370
Re: Ошибка в триггере
Здравствуйте, Jane.
Рады слышать, что проблема решена.
Данное поведение связано со специфической функциональностью сервера MySQL, а не нашими компонентами. Например, если в вашем примере вы будете вместо кириллицы использовать латиницу, то ошибки не будет.
Например:
Для этого и существуют подобные опции как у наших продуктов, так и у всех клиентов MySQL.
При включённом свойстве UseUnicode вы сможете корректно работать с любимы данными.
С уважением,
Виктор
Рады слышать, что проблема решена.
Данное поведение связано со специфической функциональностью сервера MySQL, а не нашими компонентами. Например, если в вашем примере вы будете вместо кириллицы использовать латиницу, то ошибки не будет.
Например:
Код: Выделить всё
ParamByName('p1').AsString := 'Shetinin';
При включённом свойстве UseUnicode вы сможете корректно работать с любимы данными.
С уважением,
Виктор
- Пт 13 авг 2021 09:37
- Форум: MySQL Data Access Components
- Тема: Ошибка в триггере
- Ответы: 9
- Просмотры: 13370
Re: Ошибка в триггере
Здравствуйте, Вад.
Для решения задачи, пожалуйста, установите свойство TMyConnection.Options.UseUnicode в True.
Например:
Пожалуйста дайте знать если это не помогло.
С уважением,
Виктор
Для решения задачи, пожалуйста, установите свойство TMyConnection.Options.UseUnicode в True.
Например:
Код: Выделить всё
MyConnection.Options.UseUnicode: = True;
С уважением,
Виктор
- Чт 12 авг 2021 10:49
- Форум: MySQL Data Access Components
- Тема: Ошибка в триггере
- Ответы: 9
- Просмотры: 13370
Re: Ошибка в триггере
Добрый день.
Для более быстрого и точного ответа, пожалуйста, составьте и пришлите нам небольшой пример, демонстрирующий указанное вами поведение, включающий скрипты на создание и заполнения объектов БД с помощью контактной формы:
https://devart.com/company/contactform.html
С уважением,
Виктор
Для более быстрого и точного ответа, пожалуйста, составьте и пришлите нам небольшой пример, демонстрирующий указанное вами поведение, включающий скрипты на создание и заполнения объектов БД с помощью контактной формы:
https://devart.com/company/contactform.html
С уважением,
Виктор
- Чт 29 апр 2021 16:54
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 20988
Re: Исключить COMPUTED BY поля для генератора запроса
Спасибо за предоставленную информацию. Хотим сообщить, что мы уже исправили данное поведение и изменение касательно вашего вопроса войдет в следующий билд UniDAC.
- Пт 05 мар 2021 09:00
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 20988
Re: Исключить COMPUTED BY поля для генератора запроса
Спасибо за интерес к нашим продуктам.
Обращайтесь к нам, если у вас возникнут вопросы по нашим продуктам.
Обращайтесь к нам, если у вас возникнут вопросы по нашим продуктам.
- Пт 05 мар 2021 08:00
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 20988
Re: Исключить COMPUTED BY поля для генератора запроса
Мы улучшили автоопределение computed полей при генерации update-запросов для датасета. Новый билд UniDAC 8.4.1, включающий данное улучшение, уже доступен для скачивания.
- Чт 10 сен 2020 09:37
- Форум: Universal Data Access Components
- Тема: ROW_NUMBER() и селективная процедура
- Ответы: 1
- Просмотры: 11756
Re: ROW_NUMBER() и селективная процедура
Для решения вашей задачи вы можете попробовать использовать следующий код:
Код: Выделить всё
sp.SpecificOptions.Values['DescribeParams'] := 'True';
sp.PrepareSQL(True);// isQuery
sp.SQL.Text := 'SELECT ID, ST, RESULT, ROW_NUMBER() OVER (ORDER BY ID) AS ROW_NUMBER FROM SP_TELEGRAM_FIND_BY_PARAMS(:TELEGRAM_ID)';
sp.Params[0].AsLargeInt := user.ID;
sp.Open;
- Вт 03 мар 2020 15:42
- Форум: Universal Data Access Components
- Тема: Как ПРАВИЛЬНО работать с Conditions.Enable/Disable?
- Ответы: 3
- Просмотры: 9700
Re: Как ПРАВИЛЬНО работать с Conditions.Enable/Disable?
Для корректной работе с параметрами используемых в TDACondition достаточно единожды вызвать метод TDAConditions.Enable. Обратите внимание, при вызове метода метод TDAConditions.Disable все предварительно установленные значения параметров используемых в TDACondition сбросятся.Akella писал(а): ↑Сб 29 фев 2020 16:21 Ещё вопрос.
Нормально ли вызывать UniQuery.Conditions.Enable несколько раз подряд перед тем, как вызвать Open?
Почему такой вопрос.
Предыстория.
Есть код добавления условий с параметрами.Как я понял, то в SQL-запрос датасета параметры попадают только после вызова UniQuery.Conditions.Enable.Код: Выделить всё
if DateTimePicker1.DateTime <> 0 then qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True); if DateTimePicker2.DateTime <> 0 then qData.Conditions.Add('lcd_max','A.LCD <= :LCDMAX', True);
Таким образом получается, что условие приходится добавлять как бы дважды. Первый раз добавляешь условие с параметром, а потом нужно ещё и параметр заполнить.
т.е. выполнить ещё одну проверкуя к тому, что было бы удобней так:Код: Выделить всё
if Assigned(qData.Params.FindParam('LCDMIN')) then qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker1.DateTime; if Assigned(qData.Params.FindParam('LCDMAX')) then qData.ParamByName('LCDMAX').AsDateTime := DateTimePicker2.DateTime;
Теперь возвращаемся к вопросу про множественный вызов метода Enable. А можно ли делать так:Код: Выделить всё
if DateTimePicker1.DateTime <> 0 then begin qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True); qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker.DateTime; end;
Код: Выделить всё
qData.Close; if DateTimePicker1.DateTime <> 0 then begin qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True); UniQuery.Conditions.Enable; qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker.DateTime; end; if DateTimePicker2.DateTime <> 0 then begin qData.Conditions.Add('lcd_max','A.LCD <= :LCDMAX', True); UniQuery.Conditions.Enable; qData.ParamByName('LCDMAX').AsDateTime := DateTimePicker2.DateTime; end; UniQuery.Open;