2011-03-15 54 views

回答

0

您需要將程序編譯爲32位;它仍然可以在64位操作系統上正常運行。將平臺目標更改爲「x86」而不是「任何CPU」或「x64」。然後,您可以使用Visual FoxPro Ole Db提供程序來訪問dbf文件。

1

首先,你需要訪問64位可再發行,網址: http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

然後,你可以配置的控制面板,管理工具,數據源(ODBC)ODBC數據源。

然後,我可以在C#中完成以下工作:這應該在VB.NET是相似的:

var connectionString = "Driver={Microsoft dBASE Driver (*.dbf)};" + 
                 "Driverid=277;" + 
                 @"Dbq=C:\temp\"; 

var query = "SELECT * FROM UPDATED" //file is "updated.dbf" 


using (var oConn = new OdbcConnection { ConnectionString = connectionString }) 
      { 
       try 
       { 
        oConn.Open(); 
        var oCmd = oConn.CreateCommand(); 
        oCmd.CommandText = Query; 

        var dr = oCmd.ExecuteReader(); 

        if (dr.HasRows) 
        { 
         while (dr.Read()) 
         { 

       // get your data from your dbf! 
         } 
        } 
       } 
       finally 
       { 
        oConn.Close(); 
       } 
      } 
+1

小心問心無愧的dBase的驅動程序,但 - 它才能正常工作,如果你的DBF文件確實是dBASE文件,而不是例如FoxPro文件。 – Eyvind 2011-03-15 12:47:33

+0

我無法找到有關該軟件包中是否還包含x64 FoxPro驅動程序的任何信息。如果這種方式對你不起作用,或者你無法確定DBF的「風味」,那麼按照Eyvind的建議,專門針對x86可能會更好。但是,如果您在類庫中這樣做,請記住,此x86決策需要漣漪式引用,或者通過引入服務層來緩解。 – JNadal 2011-03-15 12:59:11

0

相反Microsoft.Jet.OLEDB的......你必須使用Microsoft.ACE.OLEDB ......在Win7的連接的字符串中。更多信息可以從www.connectionstrings.com獲得accdb部分。您可以按照表的形式連接到DBF文件並查詢數據/模式。

如果您的Win7是64位並且MS Office是32位安裝的(Taskmanager winword.exe * 32),則ACE驅動程序將以32位模式安裝,因此您的程序/源代碼將無法連接到DBF文件。

如何找到。

在C:\ windows \ sysWoW64 \ odbcad32.exe打開32位ODBC emulater並轉到「驅動程序」選項卡。您必須看到許多連接的驅動程序,您可以在其中找到ACE提供程序。

在C:\ windows \ system32 \ odbcad32.exe打開64位ODBC管理員,然後轉到「驅動程序」選項卡。您必須僅看到「SQL Server」驅動程序或少數驅動程序特定於64位而不是ACE驅動程序。

解決方案

  1. 在x86的模式編譯當前程序中使用32位仿真器的驅動程序。
  2. 另一種解決方案是找到是否可以卸載32位MS Office並獲得64位版本。這將自動解決所有問題。

好運

Venkat

相關問題