Microsoft.Jet.OLEDB.4.0 未从 DBF 中检索删除标记的记录
Microsoft.Jet.OLEDB.4.0 not retrieving delete marked records from 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.0
或 Microsoft.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
用来包含删除的记录。
我正在使用以下代码从 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.0
或 Microsoft.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
用来包含删除的记录。