Последняя версия DataExpress 3 beta от 15 ноября 2020 года.

Изображение Скачать | Изображение Что нового?

(memo) в объекте если неограниченное поле объекта TdxMemo

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
Иван
Интересующийся
Сообщения: 239
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 34 раза
Поблагодарили: 74 раза

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение Иван » 07 ноя 2020, 12:38

Если указывать неограниченный размер поля Memo то значение поля не отображает в объекте, пишет просто текст (memo). Возникает два вопроса.

1. Это можно обойти если оставить поле неограниченным, отображать в объекте именно значение поля?

2. Если делать запрос SQL на такое поле и записывать его в поле на форме из SQL то на удаленном ПК это поле пишет достаточно долго, такое впечатление что данные запрашивает из БД для каждой записи такого поля, а не берет значение из SQL. Это верно?

Аватара пользователя
admin
Разработчик
Сообщения: 5353
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 44 раза
Поблагодарили: 386 раз

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение admin » 07 ноя 2020, 13:50

1. Обойти не получиться, в следующей версии будет запрет на использование таких полей в объектах.
2. Blob-данные считываются из базы только при обращении к полю.

Аватара пользователя
Иван
Интересующийся
Сообщения: 239
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 34 раза
Поблагодарили: 74 раза

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение Иван » 07 ноя 2020, 17:05

admin писал(а):1. Обойти не получиться, в следующей версии будет запрет на использование таких полей в объектах.
2. Blob-данные считываются из базы только при обращении к полю.


По вопросу 2 вышло обойти прописав replace(coalesce(t.[memo поле],''''),'''','''').
Возможно это можно так же прописать для объекта и тогда не нужно исключать memo из полей для объектов?

Аватара пользователя
admin
Разработчик
Сообщения: 5353
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 44 раза
Поблагодарили: 386 раз

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение admin » 07 ноя 2020, 17:07

Что это Вы сделали?

Аватара пользователя
Иван
Интересующийся
Сообщения: 239
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 34 раза
Поблагодарили: 74 раза

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение Иван » 07 ноя 2020, 17:10

admin писал(а):Что это Вы сделали?


При формировании SQL что бы сразу прочитало поле использовал замену пустое на пустое что б выдало в результат типа новую результирующую строку, хотя по сути строка та же так как замена была пустая строка на пустую строку. Coalesce на всяк случай, если вдруг поле пустое что б не было null.

Аватара пользователя
admin
Разработчик
Сообщения: 5353
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 44 раза
Поблагодарили: 386 раз

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение admin » 07 ноя 2020, 17:18

Не пойдет. Это вынудит прочитать все блобы.

Аватара пользователя
Иван
Интересующийся
Сообщения: 239
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 34 раза
Поблагодарили: 74 раза

(memo) в объекте если неограниченное поле объекта TdxMemo

Сообщение Иван » 19 ноя 2020, 11:24

admin писал(а):Не пойдет. Это вынудит прочитать все блобы.


Нашел менее ресурсозатратный вариант, возможно было б возможно в объект выводить ознакомительную начальную часть текста мемо 1000 символов. Базу не замедлит, читает только начало по идее.

cast(t.[мое поле] as varchar(1000))

Если уже не вариант то будет на заметку тем кто из sql неограниченных мемо полей выводит данные, такое решение снимает тормоза при записи из sql запроса.


Вернуться в «Общие вопросы.»