Чтение из базы данных, расположенной в папке Program Files с использованием ODBC - PullRequest
1 голос
/ 25 апреля 2010

У нас есть приложение, которое хранит свои файлы базы данных в подпапке каталога Program Files. Эти файлы перенаправляются в VirtualStore в Vista и Windows 7. Мы представляем данные из базы данных, используя Microsoft DataReports (VB6). Пока все хорошо.

Но теперь мы хотим использовать Crystal Reports XI для представления данных из базы данных. Наша идея состоит в том, чтобы НЕ передавать эти данные в CR из нашей программы, а чтобы CR извлекал их из базы данных, используя системный DSN через ODBC. Таким образом, мы надеемся предоставить нашим пользователям больше гибкости при составлении собственных отчетов. Однако мы хотим убедиться, что эти системные уведомления о доставке настроены правильно, когда пользователь устанавливает нашу программу или когда программа вызывает отчет Crystal Report.

Существует ли разумный способ сделать это с помощью системных переменных, например, вместо того, чтобы писать подпрограмму, которая проверяет версию ОС, включено ли UAC в ОС, сняты ли ограничения на запись в папке Program Files и т. Д. а затем настраивает системный DSN так, чтобы он указывал либо на папку C: \ Program Files \ OurApp \ Data, либо на папку C: \ Users \ User \ AppData \ VirtualStore \ Program Files \ OurApp \ Data?

Предложения по совершенно другому подходу тоже приветствуются!

Ответы [ 4 ]

3 голосов
/ 26 апреля 2010

В новых приложениях должен быть манифест приложения, в котором указывается запрашиваемый уровень исполнения. Это объявляет вашу программу «Vista Vista» и обходит попытки виртуализации.

Во время установки вы должны создать папку, например [CommonAppData] \ Company \ App \ Full, и установить в этой папке защиту, чтобы разрешить полный доступ всем (или пользователям). Поместите вашу базу данных в эту папку.

Для MDB вы можете удалить базу данных прямо здесь. Для базы данных клиент / сервер поместите файл UDL здесь. См. Также Использование файлов универсальной линии передачи данных (.udl) .

ODBC и DSN - довольно устаревшие технологии.

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

1 голос
/ 03 июня 2010

Кажется, что Virtual Store позаботится обо всем, поэтому вы можете явно указать DSN на C: \ Program Files \ MyApp \ Data \ mydb.mdb, даже если база данных была перемещена в Virtual Store.

1 голос
/ 26 апреля 2010

Это база данных Access? Вы не указали.

Для базы данных Access вам не нужно указывать DSN на конкретную базу данных при ее установке. Вы можете изменить строку подключения, чтобы она указала на разные базы данных во время выполнения ( details ). Например

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;

Можете ли вы просто прочитать путь установки во время выполнения (в VB6 это App.Path) и затем отправить другую строку подключения в Crystal Reports?

0 голосов
/ 25 апреля 2010

Текущая версия


Возможно, вы захотите определить текущую версию Windows , на которой работает система.

Это, в свою очередь, поможет вам в определении правильного ПУТИ .

Как найти номер версии Windows, номер сборки и ревизии ??

Считайте ключи реестра -

HKEY_LOCAL_MACHINE \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ CurrentBuildNumber
HKEY_LOCAL_MACHINE \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ CurrentVersion
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ EditionID
HKEY_LOCAL_MACHINE \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ ProductId HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx

CurrentBuildNumber - это ваш номер сборки Windows. Тогда значением CurrentVersion будет ваша версия Windows, то есть версия вашего Windows 7, Windows Vista, Windows XP и т. Д. EditionID и ProductId, чтобы узнать версию Windows и идентификатор продукта.

Ключ BuildLabEx содержит номер сборки и номер редакции.

Например, в значении 6001.17387.x86fre.vistasp1_gdr.070927-1921,
первые четыре цифры обозначают номер сборки, то есть 6001 и
следующие пять цифр означают номер редакции Windows, т. е. 17387.
x86 сообщает, что вы используете 32-разрядную операционную систему.

Вам также может быть интересно это:
Как определить истинную версию Windows?

GoodLuck !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...