2013-06-04 3 views
3

Я пишу приложение, которое должно открыть существующую базу данных BDE, которая была сохранена третьей стороной.Открытие базы данных Paradox; Обходной путь «PDOXUSRS.NET»?

В этом приложении я в настоящее время есть TDatabase (DriverName: STANDARD) с path установлен правильно Params.
Теперь я могу установить Connected в true без сообщения об ошибке.

Существует также TTable с DatabaseName набором для значений TDatabase и TableName набора в .db-файл, который находится в папке (название заполняется автоматически, я только шляпу, чтобы выбрать его).

Теперь проблема:
Если установить Active истинно, сообщение об ошибке сообщает об отсутствии прав доступа к C:\PDOXUSRS.NET.
Я знаю, что могу установить другой путь, используя BDEADMIN, но мне нужно решить это в своем приложении - я не могу ожидать, что каждый клиент сделает это изменение. Кроме того, у меня есть тестовая машина с запущенным сторонним приложением - она ​​может обращаться к базе данных без каких-либо ошибок, в то время как мое приложение выдает вышеупомянутую ошибку. Это приводит меня к подозрению, что может быть обходной путь.

Есть ли такое обходное решение?
Мне нужен только доступ для чтения к базе данных.

+2

Вы можете попытаться изменить его программно http://edn.embarcadero.com/article/23231 – bummi

+1

Если все остальное не удается, вы можете попробовать пропустить BDE и получить доступ к таблицам Paradox с помощью драйвера ddExpress ODBC, как этот : https://sourceforge.net/projects/open-dbexpress/ –

+0

Вы используете Windows 7? Вероятно, вы не можете получить доступ к корню C :. Попробуйте изменить каталог сетевого файла на каталог под своим именем пользователя. Вы должны сделать это с помощью программы BDEAdmin. –

ответ

5

Решено это благодаря link of bummi
Большое спасибо.

Цитата:

Как изменить NET DIR программно, так что сохраняется
[...]
Вы также должны помнить, что если у вас есть программы, которые меняют свои места NET DIR во время выполнения, используя либо функцию DbiSetProp, либо свойство NetFileDir компонента TSession, это переопределит значение NET DIR в файле конфигурации.

Он указал мне на возможность изменения NET DIR в коде:

Session.NetFileDir := MyCustomTempDir; 

После выполнения этого Table1.active := true работы и данные показывают, в связном TDBGrid.

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