OleDbException Не удается открыть файл DBF - PullRequest
0 голосов
/ 08 января 2019

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

System.Data.OleDb.OleDbException: «Невозможно открыть файл \\ some-server \ some-share \ SomeTable.dbf. '

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

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

1 Ответ

0 голосов
/ 08 января 2019
use

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

use in (select('SomeTable'))

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

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

Проще было бы выполнить:

set exclusive off

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

Или сделайте эту постоянную настройку, перейдя к Tools -> Options -> Data и сняв флажок «Open Exclusive»: options screenshot

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

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

...