Вопрос

Во-первых, я не могу стоять кристалла! Хорошо, это от моей груди ...

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

Есть два доклада, которые практически идентичны. Я недавно не изменил их, чтобы добавить другое поле из другого стола. Когда я добавил таблицу в отчеты, хотя он добавил его в визуальный дизайнер, он не добавил его в оговорке из оператора SQL. Итак, я вручную отредактировал оператор SQL для добавления в дополнительном соединении. КО, работает отлично. Если я запускаю отчеты в режиме предварительного просмотра кристалла, они работают точно так, как ожидалось.

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

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

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

SELECT ... FROM ... 
WHERE

ORDER BY ...

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

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

PS. Я уже пытался делать База данных> Проверка базы данных Из меню, и что сказал, что доклад был все в курсе и вообще не помогло.

Это было полезно?

Решение 3

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top