2013-01-07 105 views
1

我有一個模塊將Excel文件導入到MS Access數據庫表中。 我得到:MS Access數據庫引擎找不到對象'REPORTCONFIG'。 表REPORTCONFIG確實存在,並且由代碼'拾取',因爲在我導入excel之前,我首先清空表(它工作正常)。 我確信我的excel中的選項卡與表格名稱相同。 (REPORTCONFIG)VB.Net:MS Access數據庫引擎找不到對象

這是我的模塊:

Dim MyExcelFileDialogBox As New OpenFileDialog() 
     If MyExcelFileDialogBox.ShowDialog = DialogResult.OK Then 
      MyExcelFullFileName = MyExcelFileDialogBox.FileName 
      MyExcelFile = Dir(MyExcelFileDialogBox.FileName) 
      MyExcelFilePath = Path.GetDirectoryName(MyExcelFileDialogBox.FileName) 
      ModuleConnection.AccessConnect() 
      ModuleTables.DeleteTableContent(MyTableName) 
      Dim MyExcelInsertSQL As String = "INSERT INTO [" & MyTableName & "] SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & MyExcelFullFileName & "].[" & MyTableName & "];" 
      Dim MyCommand As OleDbCommand = New OleDbCommand(MyExcelInsertSQL, MyAccessConnection) 
      Try 
       MyCommand.ExecuteNonQuery() 
       MyCommand.Dispose() 
      Catch ex As Exception 
       MsgBox(ex.ToString) 
      End Try 
      MyAccessConnection.Close() 
     End If 

任何幫助表示讚賞。

+0

您是否嘗試過將MS Access中的查詢粘貼到sql視圖中?你的Excel連接字符串看起來不合適。 – Fionnuala

+0

該模塊正常工作的另一個Excel文件,我導入到不同的表。我覺得奇怪的是,如果我用這種方式添加數據,那麼它就可以工作。 所以,你會說,問題出在excel連接字符串上,但正如我剛纔提到的,它對於不同的Excel文檔來說工作正常 –

回答

1

當使用工作表作爲查詢的數據源時,在工作表名稱後添加一個美元符號($),以便找到它。

有了這個簡單的SELECT查詢,數據庫引擎會抱怨找不到REPORTCONFIG

SELECT * 
FROM [Excel 12.0;DATABASE=C:\share\Access\MyWorkBook.xlsx;HDR=YES].[REPORTCONFIG]; 

然而,FROM子句中使用REPORTCONFIG$時,下面的查詢返回的數據沒有錯誤。

SELECT * 
FROM [Excel 12.0;DATABASE=C:\share\Access\MyWorkBook.xlsx;HDR=YES].[REPORTCONFIG$]; 
+0

HansUp,$做到了這一點對於我的文檔與REPORTCONFIG作爲選項卡名稱,但現在其他文檔的選項卡名稱包含下劃線(rpt_bank_krediet_mg_comm_cns)不再導入了。是否與下劃線? –

+0

HansUp,我發現問題。變量MyTableName問題。再次感謝您的幫助。 –

相關問題