2010-04-05 5 views
1

Во-первых, я терпеть не могу Crystal! Хорошо, что от моей груди ...Невозможно установить формулу выбора Crystal Report Programally

Теперь у нас есть старый VB6 приложения мы сохранить для клиента, который использует библиотеку Кристал автоматизации программно изменить формулы выбора записей в куче Crystal Reports 8.5 докладов.

Есть два отчета, которые ПОЛНОСТЬЮ идентичны. Я должен был изменить их недавно, чтобы добавить другое поле из другой таблицы. Когда я добавил таблицу в отчеты, хотя, добавив ее в визуальный конструктор, она не добавила ее в предложение FROM инструкции SQL. Итак, я вручную отредактировал инструкцию SQL для добавления в дополнительное соединение. KO, отлично работает. Если я запускаю отчеты в режиме предварительного просмотра Crystal, они работают точно так, как ожидалось.

Теперь пользователи отправились проверять изменения в приложении VB. Один из отчетов работает отлично и денди. В другом отчете, однако, не удается установить формулу выбора, как ожидалось.

Код устанавливает формулы выбора, используя функцию PESetSelectionFormula. Я проверил, что строка, передаваемая функции в качестве новой формулы выбора, является правильной с помощью сквозного исследования переменных. Вызов PESetSelectionFormula, похоже, работает нормально, и возвращает значение 1, которое, как я могу найти в любом месте, указывает на успех. (Другой доклад, который работает отлично от кода также возвращения 1.)

Однако в докладе не удается с сообщением об ошибке: Error Code: 534 - Error detected by database DLL. Код для целей отладки отвалов из строки SQL в настоящее время используется отчет. SQL выходит из отчета:

SELECT ... FROM ... 
WHERE 

ORDER BY ... 

Как вы можете видеть, предложение WHERE является пустым, которое я бы себе представить, почему DLL базы данных upchucking это заявление. Я не понимаю, почему библиотека автоматизации не устанавливает предложение WHERE, хотя вызов PESetSelectionFormula передается действительной строкой и возвращает успех. Я подумал, возможно, это потому, что я вручную отредактировал SQL в отчете, чтобы добавить таблицу, которую он не добавлял, но я сделал то же самое в другом почти идентичном отчете, и этот работает нормально.

У кого-нибудь есть идеи, почему PESetSelectionFormula может сообщить об успехе, но на самом деле ничего не делать?

P.S. Я уже пробовал сделать из базы данных База данных> Подтвердить базу данных, и при этом говорится, что отчет был обновлен и совсем не помог.

ответ

0

Хорошо, это типично для того, почему я просто презираю Crystal Reports.

Мой босс вернулся из отпуска и посмотрел на него ... ничего не сделал, и теперь он работает. Он показал мне, что он сделал, и он ничего не изменил или ничего не сделал для отчета, точно такие же отладочные шаги, которые я предпринял, но теперь это волшебство работает.

Мне действительно не нравится программное обеспечение, которое просто автоматически останавливается и начинает работать именно так. Спасибо за идеи.

+0

Хотя, по общему признанию, мы все еще работаем с Crystal 8.5, и я знаю, что они по крайней мере, что, 11 сейчас? Я знаю, что дизайнер был ОСОБЕННО улучшен, ... возможно, основная функциональность также была справедливой. – eidylon

+1

По состоянию на CR12/2008 ... нет, нет. CR и BOb - это ИМХО, худшее платное программное обеспечение, которое я когда-либо использовал. Только один крошечный пример из десятков: стеки модальных диалогов для каждого небольшого изменения. – 2011-01-25 20:57:28

0

Я никогда не использовал PESetSelectionFormula, но я столкнулся с проблемами импорта в противном случае приемлемого данные:

  1. использовать ли ваш окончательный SQL запрос любые необычные функции, т.е. новозеландских()? Crystal не всегда распознает функции VB, imho.

  2. У вас есть нулевые значения в импортированных данных, которые создают конфликты?

  3. После сбора данных, можете ли вы поместить его во временную таблицу и сообщить Crystal, чтобы получить данные из этой временной таблицы? Если у вас есть проблемы с # 1 или # 2, это может быть хорошим решением.

0

В некоторых версиях CR, то PESetSelectionFormula добавляет новое значение к существующей формуле записи отбора, в других вариантах, PESetSelectionFormula заменяет существующей формулу выбора записи с новым значением.

Я не помню, когда этот переключатель произошел, но вам должно быть легко определить, какое поведение происходит.

+0

Ну, проблема в том, что он ничего не делает. В любом случае поведение будет в порядке, поскольку сам отчет не имеет в нем формулы выбора записей. Итак, добавляет ли он или заменяет [НИЧЕГО], мне действительно все равно. Но он не ставит новую формулу в отчете вообще ... хотя PESetSelectionFormula возвращает УСПЕХ. – eidylon

+0

Попробуйте это: создайте Формулу выбора записей в дизайнере. Затем используйте COM-компонент для получения этого значения. Правильно ли это работает? Если это так, проверьте последний символ в строке. Является ли это символом нулевого окончания (я не могу представить себе настоящее имя)? – craig

 Смежные вопросы

  • Нет связанных вопросов^_^