2

以下のコードを使用して、dbf ファイルをインポートしています。

しかし、私はエラーが発生しています:

「外部テーブルが予期された形式ではありません」

if (ofdDBF.ShowDialog()==DialogResult.OK) 
{ 
   string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ofdDBF.FileName.Substring(0, ofdDBF.FileName.LastIndexOf("\\")) + ";Extended Properties=dBASE IV;";     
   OleDbConnection conn = new OleDbConnection(connStr); 
   conn.Open();

   string cmd_string = "select * from " + ofdDBF.SafeFileName.Substring(0, ofdDBF.SafeFileName.IndexOf(".")); 
   MessageBox.Show(cmd_string); 
   OleDbDataAdapter da = new OleDbDataAdapter(cmd_string, conn); 
   DataSet ds = new DataSet(); 
   da.Fill(ds); 
   dgvImport.DataSource = ds.Tables[0]; 
} 

何か助けはありますか?

4

2 に答える 2

5

同じ問題 (64Bit システム上)、解決策

ダウンロード: http://download.microsoft.com/download/b/f/b/bfbfa4b8-7f91-4649-8dab-9a6476360365/VFPOLEDBSetup.msi

string connString = @"Provider=vfpoledb;Data Source=C:\Directory;Collating Sequence=machine;";
        using (OleDbConnection con = new OleDbConnection(connString))
        {
            con.Open();

                OleDbCommand command = new OleDbCommand("Select * from Table.DBF", con);
                OleDbDataReader reader = command.ExecuteReader();
                ...
        }
于 2013-05-16T21:03:22.363 に答える
0

dBase/FoxPro のデータ ソースを扱う場合、ソースは通常、データベース名またはパスのみを参照します。

それが開かれたら、あなたはただすることができます

select * from YourTable

(クエリには .dbf ファイル名サフィックスは必要ありません。パスまたは接続されたデータベースを調べることで解決されます)。

于 2013-03-11T15:34:34.827 に答える