Dbase oledb провайдер загружает данные без этой удаленной записи? - PullRequest
0 голосов
/ 24 ноября 2011

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

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

select * from YourTable where not deleted()

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

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

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

oCmdTest = new OleDbCommand («Выбрать * из YourTable», YourConnection);

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

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

1 голос
/ 25 ноября 2011

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

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

...