Visual FoxPro и VS2008 не отображают все записи DBF. Отдельная сборка делает

Я работаю над проектом в Visual Studio 2008 (в vb.net). Приложению необходимо импортировать данные из базы данных Visual FoxPro (файл dbc). Не спрашивайте, почему именно FoxPro. Это должен быть vfp, и база данных обновляется ежедневно другим приложением; поэтому я не могу использовать какой-либо другой формат базы данных.

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

Проблема: не все записи отображаются при компиляции и запуске кода.

Однако, когда я запускаю скомпилированную версию из папки Release (в каталоге bin), приложение отображает больше записей.

Что еще более озадачивает, когда я открываю тот же файл с данными в Visual FoxPro 9.0, я вижу только те данные, которые отображаются в VS2008 (не в версии Realease). Однако, если я открываю dbf в OpenOffice Calc, он показывает все записи, то есть те же записи, что и версия Release моего приложения.

Моей первой мыслью было: если он не показывает все в VFP 9, файлы должны быть созданы в другой версии VFP, поэтому я должен изменить строку подключения. Однако почему скомпилированная версия Release показывает все правильные данные? Строка подключения должна быть в порядке.

Я загрузил DBF Viewer Plus, чтобы посмотреть мои dbfs в другом приложении, но он не может посмотреть все записи тоже.

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

Я разрабатываю под Windows Vista.

Спасибо за твою помощь!


person jfrej    schedule 21.11.2009    source источник


Ответы (3)


Я не работал с foxpro в течение нескольких лет, но раньше это была «особенность» файлов dbf: когда вы удаляете запись, она фактически не исчезает, пока вы не «упаковываете» файл. Он просто устанавливает флаг, который указывает на то, что запись удалена, и большинство представлений foxpro файла отфильтровывают ее соответствующим образом, но она все еще там и видна для соединений oledb.

изменить: другая возможность - это индекс, который вы используете - если он указывает "уникальный", он отфильтрует все, кроме одной из "повторяющихся" записей в определенном представлении.

person kloucks    schedule 21.11.2009
comment
Боюсь, дело не в этом. FoxPro показывает записи, помеченные как удаленные, но не показывает некоторые другие. Те, которые мне нужны. Я вижу их, только когда запускаю сборку своего приложения или в OpenOffice Calc. Кстати, OOffice не может видеть записи, отмеченные как удаленные в FoxPro. - person jfrej; 21.11.2009
comment
Что касается того, что я вижу - я не могу увидеть всю таблицу в FoxPro - все индексы уникальны. Это может быть причиной, но почему скомпилированная сборка без проблем показывает все записи? Я думаю, что есть проблема где-то между компиляцией / отладкой VS и сборкой выпуска VS. Может какие настройки VS? Поведение в среде VS отличается от поведения вне ее. - person jfrej; 21.11.2009
comment
К вашему сведению. В строке подключения OLE DB есть параметр DELETED для включения / исключения удаленных записей: connectionstrings.com/ visual-foxpro - person Keith; 18.12.2014

По опыту могу сказать, что я никогда не видел, чтобы провайдер вел себя подобным образом.

VFP может устанавливать «фильтры», влияющие на то, что вы видите, иногда неочевидными способами. Они могут храниться в DBC - возможно ли, что другое приложение устанавливает фильтры?

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

Если это вообще возможно, я бы порекомендовал вам получить копию среды разработки VFP9 и открыть в ней DBC - это даст вам гораздо больше возможностей для продолжения.

person user50380    schedule 24.11.2009

Возможно ли, что среда разработки смотрит на другой набор данных? Другая строка подключения или настройки DSN для среды разработки?

Рик Шаммер VFP MVP

person Rick Schummer    schedule 28.11.2009
comment
Я думаю, что это возможно. И он ведет себя так, как будто была другая строка подключения (или настройки DSN), но где ее установить? Я не менял никаких настроек VS по умолчанию и не использую Dataset Designer - все делается программно. - person jfrej; 22.12.2009
comment
Не совсем уверен, так как я еще не разработчик Visual Studio. Хотел бы я быть более полезным. - person Rick Schummer; 23.12.2009