Можно ли настроить Crystal Report для использования DSN без сохранения имени базы данных? - PullRequest
0 голосов
/ 04 августа 2020

DSN - очень полезные вещи. Я могу настроить DSN так, чтобы он указывал на базу данных разработки, а когда я закончу разработку, просто перенастрою его, чтобы он указывал на производственную базу данных, и все готово. Нет необходимости вносить какие-либо изменения в мою программу или ее конфигурацию.

Но если я создаю отчет Crystal Reports XI с использованием соединения ODB C и указываю конкретный DSN, CR просматривает DSN, чтобы найти имя текущей базы данных и использует это имя в своих запросах. Если я изменю базу данных, на которую указывает DSN, в отчете будет использоваться старая база данных. Например, у меня есть DSN с именем «WinCaps», который указывает на базу данных с именем «Anneal». Я создал отчет и предоставил строку подключения типа «DSN = WinCaps; user = caps; passwd = xyz» (синтаксис может быть несовершенным). Затем мне было предложено ввести имя хоста, имя пользователя и пароль, которые были предоставлены в DSN и не должны были быть необходимыми. Я сохранил отчет и закрыл его, а затем изменил DSN, чтобы он указывал на базу данных с именем «Worthington HS Control». Я снова открыл отчет и выбрал «Показать SQL запрос». Я видел, что запрос выбирал данные из базы данных Anneal. Есть ли способ изменить это поведение? Последняя версия CR ведет себя так же?

1 Ответ

0 голосов
/ 11 августа 2020

Когда вы устанавливаете соединение ODB C с базой данных сервера, Crystal запросит имя базы данных. Насколько мне известно, вы можете изменить имя базы данных либо в коде, либо с помощью дизайнера Crystal. Невозможно изменить DSN и заставить Crystal использовать его. Вы можете использовать такой инструмент, как http://r-tag.com/Pages/CRDataSource.aspx, который может обрабатывать целую папку отчетов и полностью перезаписывать соединения. Однако это полезно в экстремальных ситуациях ios, например, когда вам нужно заменить ODB C на соединение OLEDB. Ваш сценарий довольно прост, вам не нужно перезаписывать соединение (я), просто чтобы обновить имя базы данных. Это можно сделать с помощью того же кода, который устанавливает пароль. У вас есть контроль над приложением, которое запускает отчет?

...