2016-09-22 81 views
0
我使用下面的代碼從 DBF文件中檢索數據

刪除標記的記錄...Microsoft.Jet.OLEDB.4.0未檢索從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作爲提供者的已刪除記錄?任何幫助非常感謝..

+0

試試這個,然後不要使用修改後的OleDbCommand。 dbfConnectionString =「Provider = Microsoft.Jet.OLEDB.4.0; Extended Properties = \」DBASE IV; Deleted = 0「; Data Source =」+ appPath +「test \\ sales \\」+ DateTime.Now.ToString(「 yyyyMM「)+」\\「; –

+0

這不工作,但沒有錯誤.. –

+0

也試過'Microsoft.ACE.OLEDB.12.0'。 –

回答

0

嗯,我找不到方法來讀Microsoft.Jet.OLEDB.4.0Microsoft.ACE.OLEDB.12.0DBF文件刪除的記錄。但是當我使用不同的供應商時,事情就像一個魅力,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用於包含已刪除的記錄。

相關問題