2013-04-18 16 views
0

我用下面的函數從OLEDB架構表得到一個工作表名稱:OLEDB獲取表格文檔 - 工作表名稱是完全數值

Public Function GetSheetName(ByVal dtSchema As DataTable) As String 
     Dim sheetName As String = "" 
     Try 

      If Not dtSchema.Rows(0)("TABLE_NAME").ToString().Contains("#") Then 
       sheetName = dtSchema.Rows(0)("TABLE_NAME").ToString() 
      End If 

     Catch ex As Exception 
      BuildResultTraceString("Exception in GetSheetName") 
      BuildResultTraceString(ex.Message) 
     End Try 

     Return sheetName 
    End Function 

然後我得到的表像這樣:

sql.Append("SELECT * FROM [" & sheetName & "A22:T10000]") 
dt = _dh.GetTable(sql.ToString()) 

但是,當我嘗試加載一個名爲「20130418113010937」表,該表獲取方法捕獲此異常:

The Microsoft Access database engine could not find the object ''20130418113010937$'A2:I10000'

它適用於我正在使用的所有其他圖紙名稱,但它不適用於此版本。我認爲這是因爲它完全是數字。有沒有解決方法?這個過程是自動化的,所以我不能手動改變工作表名稱,除非我以某種方式編程。

謝謝!

回答

1

你是對的,問題是數字表名。當你使用OleDB檢索工作表名稱時,它通過用單引號括起數字名稱(大概是保留其粘性)來爲你「提供幫助」。

sheetName = dtSchema.Rows(0)("TABLE_NAME").ToString().Trim("'") 
+0

我剛剛發現您的文章在此之前:

從表名的兩端取下單引號,你應該是不錯的。謝謝! – TimeBomb006

相關問題