Crystal 8 и 11 - Почему 11 запросов blobs используются в отчете отдельно от представления oracle db?

Предыстория. Существует приложение, созданное для использования Crystal 11. Сам rpt-файл довольно прост: основан на одном представлении базы данных Oracle, которое включает два столбца blob (один содержит фотографию, а другой - изображение подписи). До этого у нас также была более старая версия того же приложения, использующая Crystal 8. Насколько я помню, когда файл * .rpt был преобразован, ничего особенного не было сделано. Он по-прежнему использует одно и то же представление базы данных Oracle.

Мой администратор базы данных, используя v $ sql, заметил, что когда мы запускаем отчет, он теперь запрашивает представление базы данных ТРИ РАЗ. До этого он отправлял только ОДИН запрос. Эти ДВА дополнительных запроса выполняются в том же представлении, что и первый, но без предложения where и ищут только соответствующие отдельные столбцы больших двоичных объектов.

Это было НЕ то, как это было, когда мы использовали Crystal 8. Он подтвердил это.

Crystal 8 запрашивает представление только один раз и получает все нужные столбцы.

Crystal 11 также отправляет тот же запрос, который также включает столбцы BLOB-объектов.

Crystal 11 не нужно отправлять эти два дополнительных запроса.

Никаких формул в rpt-файле Crystal 11 не добавлено. Обе версии этого rpt-файла для Crystal 8 и 11 имеют только формулу выбора уровня записи. Я искал каждый из этих объектов blob в макете дизайна, чтобы убедиться, что он получает их из одного и того же представления и т. Д.

Играя с ним дальше, я сделал следующее: * Я избавился от всех объектов базы данных в макете дизайна. * Я добавил обратно два текстовых столбца (столбцы с большими двоичными объектами не использовались) * Администратор базы данных подтвердил, что выполнялся только ОДИН запрос к представлению.

  • Затем я снова добавил фото.
  • DBA сообщает, что отображаются ДВА запроса. Предыдущий упомянутый, и один для фото-блоба.

  • Затем я добавил ту же самую фотографию, чтобы на экране была дубликат фотографии.

  • Администратор базы данных говорит, что изменений нет. По-прежнему показывает только ДВА запроса.

  • Затем я добавил ДРУГОЙ blob для изображения подписи.

  • Администратор базы данных говорит, что теперь он видит ТРИ запроса.

Что здесь происходит!?

Почему Crystal 8 так себя не вел? Является ли это известной ошибкой и как ее обойти, не переделывая весь отчет по-другому?

Дополнительная информация: я проверил, что файл rpt ссылается только на одно представление базы данных.

Я проверил, что есть только одна формула. Это существует только на уровне выбора записи. Он не содержит ссылок на фото-блоб.

Одна вещь, которая мне показалась интересной, была в списке «Поля отчета» в редакторе формул. Я вижу все поля, используемые в дизайнере / формуле отчета, за исключением Фото и Подпись, которые там не перечислены. Это заставляет меня думать, что Crystal обрабатывает их отдельно.

Подотчеты не используются.


person user3612650    schedule 23.03.2015    source источник


Ответы (1)


Я пока не мог понять этого. Но я изучаю создание команды SQL из мастера баз данных, которая специально запрашивает этот столбец большого двоичного объекта и имеет соответствующее предложение where. Затем оно станет полем blob, которое я использую, а не из самого представления. По-прежнему возникают некоторые ошибки, но администратор базы данных видит дополнительный запрос, теперь использующий предложение where - до того, как он не отображал какое-либо предложение where для этого второго запроса. Отчет также работает быстрее. Просто нужно придумать, как заставить все остальное работать (отдельная история в другой раз).

person user3612650    schedule 25.03.2015