Microsoft.Jet.OLEDB.4.0无法从DBF中检索删除标记的记录



我使用以下代码从DBF文件检索数据…

dbfConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="DBASE IV";Data Source=" + appPath + "test\sales\" + DateTime.Now.ToString("yyyyMM") + "\";
OleDbConnection odconnection = new OleDbConnection(dbfConnectionString);
odconnection.Open();
OleDbCommand oCmdTest = new OleDbCommand("select  * from payment", odconnection);
oCmdTest.ExecuteNonQuery();
oledbDataAdapter = new OleDbDataAdapter(oCmdTest);
oledbDataAdapter.Fill(dataSet);
dataTable = dataSet.Tables[0];

除了不检索标记为已删除的记录外,这工作得很好。我能够成功地检索已删除的记录与VFPOLEDB.1作为提供者,并执行一些额外的代码(FoxPro是优秀的,但给了我一些关于字段格式的问题:- Error reading certain numeric values with VFPOLEDB driver,这可以通过铸造这些字段来修复,但问题是我的表太大了,所以我必须找出并铸造许多字段)

OleDbCommand oCmdTest1 = new OleDbCommand("SET DELETED OFF", odconnection);
oCmdTest1.ExecuteNonQuery();

但是这个额外的代码不能与Microsoft.Jet.OLEDB.4.0一起工作。如何从dbf文件中检索Microsoft.Jet.OLEDB.4.0作为提供者的已删除记录?任何帮助都是非常感谢的。

嗯,我找不到从DBF文件中读取Microsoft.Jet.OLEDB.4.0Microsoft.ACE.OLEDB.12.0删除记录的方法。但当我使用不同的供应商Advantage OLE DB Provider时,事情就像有了魔力一样。安装它并引用32位.dll(因为我的解决方案针对Any Cpu)。连接字符串被修改为..

dbfConnectionString = @"Provider=Advantage.OLEDB.1;User ID=adssys;Data Source=" + appPath + "test\sales\" + DateTime.Now.ToString("yyyyMM") + "\;TableType=ADS_CDX;ShowDeleted=TRUE;Advantage Server Type=ADS_LOCAL_SERVER;";

此处ShowDeleted=TRUE用于包含已删除的记录

最新更新