2016-05-24 3 views
2

Позвольте мне начать с того, что я веб-разработчик, наследующий приложение VB6/Crystal Reports, и я не очень хорошо знаю.Как найти причину ошибки «Здесь требуется строка»

Мой клиент использовал Access как свою базу данных, и я перенес их на SQL Server. Возвращение - это не вариант. После миграции у меня почти все приложение работает, но в Crystal Reports возникают проблемы.

Раньше я слышал об ошибке «Сервер еще не открыт». Чтобы исправить это, я преобразовал драйвер из ODBC в OLE DB. Теперь я получаю сообщение об ошибке «Строка требуется здесь». Вот и все ... нет трассировки стека, нет кнопки отладки. Поэтому я не знаю, как отследить проблему.

Все остальные подобные вопросы, которые я нашел, всегда имеют конкретную формулу, которая вызывает проблему, но вот где я застрял. Без трассировки стека или кнопки отладки или чего-либо, я не знаю, где искать ошибку.

Так что мой вопрос скорее относится к стратегии отладки, чем к конкретной проблеме с кодом. Где искать ошибку?

Если вам нужны образцы кода, я могу предоставить их, но вам нужно будет указать, как получить любые отвалы, которые вам нужно увидеть. Я использую редактор Microsoft Visual Basic 6.0. Я вижу сообщение об ошибке всякий раз, когда я нажимаю правой кнопкой мыши по полям базы данных и нажимаю . Проверяем базу данных (она сначала говорит: «База данных обновлена», а затем «Здесь требуется строка»). Я также вижу ошибку при попытке запустить фактический отчет в приложении.

Я пробовал пройти все поля Формулы и обернуть поля базы данных в CStr(...), но я все еще получаю сообщение об ошибке. Где еще я должен смотреть?

+0

Речь идет не о преобразовании в строку ... есть ли у вас какие-либо условия в полях формул ... если да, вы можете опубликовать их, то попытаетесь решить – Siva

+0

Если вы не можете предоставить проверку того, что оба и еще должны возвращать одинаковые datatype ... вы не можете вернуть строку в if и integer в else ... это один вариант отладки в соответствии с вашим вопросом, если это не работает, дайте мне знать, попробуем другой вариант отладки .... Как вы знаете кристалл очень плох в предоставлении правильных исключений – Siva

+0

@Siva - В этом сценарии, я считаю, я, возможно, только что решил проблему. Я нашел поле даты, которое использовалось непосредственно в отчете, поэтому я сделал поле формулы, которое делает некоторое преобразование и дефолт, чтобы гарантировать, что это будет строка.Но я не хочу добавлять это в качестве ответа, потому что главный вопрос заключается в том, как ** найти ошибку, а не причину этой конкретной проблемы. Я ожидаю, что в ближайшем будущем вы столкнетесь со многими из этих ошибок. Есть ли где-нибудь еще, чтобы смотреть в сторону от полей Формулы? – Travesty3

ответ

1

Из моего опыта работы с Crystal нет, нет волшебной кнопки для отладки разбитого отчета.

Я бы рекомендовал открыть отчет в Crystal Reports (в отличие от VB). Вам придется проверять обычных подозреваемых - начните с базы данных Expert; проверьте правильность настройки таблиц и соединений. Посмотрите на формулу выбора записи (отчет> Формулы выбора> запись) - используйте кнопку «Проверить» в левом верхнем углу, чтобы проверить синтаксис.

При просмотре формул и полей базы данных вы можете указать, используется ли поле/формула в отчете, если в поле есть зеленая галочка рядом с ним. Кристалл «достаточно умен» в большинстве случаев, когда он не проверяет логику, если объект не используется в отчете - это включает в себя таблицы. Если таблица объединена и ссылки не применяются, и таблица не используется ANYWHERE в отчете, Crystal даже не будет включать таблицу в SQL-запрос. Просто полезный лакомый кусочек. Наконец, вы можете экспортировать отчет в текстовый файл - нажмите «Экспорт» и выберите «Определение отчета» - это может быть полезно для поиска полей. Надеюсь, это поможет.