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".
Ваш вопрос неясен, хотя, может быть, вы имеете в виду, что таблица создана в результате запроса (хотя у вашего запроса нет этого места назначения). Если это так, то созданная таблица находится в исключительном использовании, пока вы не закроете ее (используя одну из команд сверху).