2016-09-22 15 views
0

vb.net経由でAccessデータベースにExcelファイルをインポートしようとしています。お客様がExcelにデータをエクスポートして変更、追加、削除することができます。それは戻ってくる。vb.netを使用してMS AccessにExcelファイルをアップロードする

エクスポートされるデータは、インポートするテーブルとまったく同じ形式です。 私は以下のコードを使用しています:

Try 
    Dim strFileName As String = String.Empty 
    Dim XLda As New OleDbDataAdapter 
    Dim ExcelTables As New DataTable 
    Dim StrSelect = "SELECT * FROM [{0}]" 

    OpenFileDialog1.FileName = "" 
    OpenFileDialog1.InitialDirectory = mdlGlobalStuff.sMasterDataPath 
    OpenFileDialog1.Filter = "Excel|*.xls|All files (*.*)|*.*" 
    If OpenFileDialog1.ShowDialog() <> Windows.Forms.DialogResult.OK Then 
     Exit Sub 
    End If 
    strFileName = OpenFileDialog1.FileName 
    Dim MyXLConnection As New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

    Using MyXLConnection 
     Using cmd As New OleDbCommand 
      cmd.Connection = MyXLConnection 
      cmd.CommandText = "INSERT INTO [MS Access;Database=InvoicingToolDB.accdb].[tbl_Bases] SELECT * FROM [Sheet1$]" 
      If MyXLConnection.State = ConnectionState.Open Then 
       MyXLConnection.Close() 
      End If 
      MyXLConnection.Open() 
      cmd.ExecuteNonQuery() 
     End Using 
    End Using 

Catch ex As Exception 
    MsgBox("ImportLinkLabel_LinkClicked: Importing Base data" & vbCrLf & ErrorToString()) 
End Try 

を私はいつもというエラーメッセージがあります。

Unrecognized database format 'c:\--path to db--\InvoicingToolDB.accdb' 

パスが正しく、フォーマットが認識されない理由を私は理解していないが。

+0

あなたのためのオプションであればdunnoですが、アクセスDBのVBA内でインポートのための関数を持つことで同様のことが起こりました。VB.NETからその関数を呼び出してください。 –

+0

2つの異なる[データベースソース]を1つのsql行に追加する必要があります。まずデータを読み込んでから、ターゲットデータベースへの接続を開いてそこに挿入する必要があります。 –

答えて

0

私は問題を発見しました。

Dim MyXLConnection As New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

付:完全

Dim MyXLConnection As New leDbConnection("provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

作品OLEDBプロバイダのバージョンが を交換(4.0のみアクセスの.accdb形式が、古い.MDB形式を読んでいません)正しいものではなかったです。

関連する問題