OleDbException Не удается открыть файл DBF

После того, как я запускаю запрос, SELECT SomeColumn FROM SomeTable через командное окно в VFP я не могу получить доступ к этой таблице из C# с помощью поставщика OleDb, пока я не закрою VFP.

System.Data.OleDb.OleDbException: "Не удается открыть файл \\some-server\some-share\SomeTable.dbf.'

Как будто VFP не закрывает дескриптор файла после выполнения запроса.

Как сказать VFP закрыть файл / таблицу без необходимости закрытия VFP?

1 ответ

Решение
use

без аргументов закрывает таблицу \ курсор в текущей рабочей области.

use in (select('SomeTable'))

закрывает его в любой рабочей области, только если он открыт.

Обе команды относятся к текущему сеансу данных. Если вы используете какие-либо сеансы, отличные от сеансов по умолчанию, то вам нужно зациклить эти сеансы и закрыть там.

Более простым способом было бы выполнить:

set exclusive off

в VFP перед открытием любых таблиц. Тогда таблицы будут открыты для общего доступа, и вы сможете открыть их как из VFP, так и снаружи.

Или сделайте это постоянной настройкой, перейдя в Tools -> Options -> Data и сняв галочку "Открыть эксклюзив":

Кстати, я ответил, думая о любой таблице, которую вы бы открыли, используя "use" или "select... from thatTable".

Ваш вопрос неясен, хотя, может быть, вы имеете в виду, что таблица создана в результате запроса (хотя у вашего запроса нет этого места назначения). Если это так, то созданная таблица находится в исключительном использовании, пока вы не закроете ее (используя одну из команд сверху).

Другие вопросы по тегам