Поставщик Dbase oledb загружает данные без этих удаленных записей?

Я импортирую данные из dbase в sql и использую следующую строку подключения для чтения данных:

      "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:\GS\Source;"
                    + "Extended Properties=dbase 5.0;User ID=Admin;Password=;"

Данные успешно прочитаны, но я обнаружил, что они также включают строки DELETED. согласно dbase, в качестве первого символа будет звездочка, однако мы обнаруживаем, что ни файл не исключается, ни звездочка не появляется в виде столбца.

Так как же нам загрузить данные без этих удаленных записей?


person Pramod Pallath Vasudevan    schedule 24.11.2011    source источник


Ответы (2)


На самом деле удаленные записи внутренне отмечены флагом, а не знаком «*», к которому вы можете обратиться. Тем не менее, у VFP есть функция для проверки этого удаленного флага, но она действительно применима только при работе с одной таблицей, а не с несколькими/объединениями, поскольку она не будет знать, какая таблица вам интересна... Пример:

select * from YourTable where not deleted()

При этом у VFP есть некоторые другие команды настройки «среды», которые МОГУТ работать через OleDB, но я никогда не пробовал ЭТО.

Когда у вас есть подключение и оно открыто, запустите следующий ExecNonQuery, который может помочь...

OleDbCommand oCmdTest = new OleDbCommand("SET DELETED OFF", YourConnection); OCmdTest.ExecuteNonQuery();

oCmdTest = new OleDbCommand("Выберите * из вашей таблицы", YourConnection);

выполните его в набор результатов таблицы данных, как вы, и все должно быть хорошо.

Еще одна часть. Я бы не стал использовать Jet OleDB, а использовал драйвер Microsoft VFP OleDb.

person DRapp    schedule 25.11.2011
comment
Это выглядит великолепно, я отмечу это как ответ, как только попробую!! Спасибо!! - person Pramod Pallath Vasudevan; 25.11.2011

В dBase после удаления должна быть дана команда «упаковать все», чтобы удаленные записи были удалены безвозвратно.

Если у вас есть доступ к dBase, используйте соответствующий файл, а затем дайте команду pack all

person G.BADARIVISHAL    schedule 25.11.2011
comment
Пожалуйста, не подписывайте и не датируйте свои сообщения. В любом случае мы можем видеть эту информацию в правом нижнем углу каждого поста. - person Brandon; 25.11.2011