2016-09-22 2 views
0

Ich versuche, eine Excel-Datei in eine Access DB via VB.net importieren die Idee ist der Kunde kann die Daten in Excel exportieren, ändern, hinzufügen, löschen sie importieren es zurück.Hochladen von Excel-Datei in MS Access mit vb.net

Die exportierten Daten haben genau das gleiche Format wie die zu importierende Tabelle. ich den Code unten bin mit:

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 

Ich habe immer eine Fehlermeldung, die besagt:

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

Der Weg richtig ist, und ich verstehe nicht, warum das Format nicht erkannt werden würde.

+0

dunno, wenn es eine Option für Sie ist, aber ich habe ähnliche getan, indem Sie eine Funktion für den Import in der Zugriffs-DB VBA haben, und rufen Sie dann diese Funktion von VB.NET –

+0

Sie können nicht zwei verschiedene [ Datenbankquelle] in einer SQL-Zeile .. Sie müssen zuerst die Daten lesen und dann die Verbindung zur Zieldatenbank öffnen und dort einfügen! –

Antwort

0

Ok Ich habe das Problem gefunden. Die OLE DB-Provider Version war nicht die richtige (4.0 ist nicht Zugang .accdb Format, aber alt .mdb Format nur lesen) Ersetzen:

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

mit:

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

funktioniert perfekt.

Verwandte Themen