標題:
如何擷取出Recordset的Table Name
[打印本頁]
作者:
clio
時間:
2018-2-5 09:39
標題:
如何擷取出Recordset的Table Name
請教各位大大
不知道是如有辨法由ADODB內的Connection或是Recordset來取得他原先連線的Table Name為何呢?
作者:
GBKEE
時間:
2018-2-5 13:14
回復
1#
clio
試試看
工具-設定引用項目,選中 "Microsoft DAO3.6 Object Library”
Option Explicit
Sub Ex()
Dim Da As DAO.Database, ta As DAO.TableDef
Set Da = DAO.OpenDatabase("路徑\Database.mdb")
For Each ta In Da.TableDefs
If InStr(ta.Name, "MSys") = 0 Then Debug.Print ta.Name
Next
Da.Close
End Sub
複製代碼
作者:
clio
時間:
2018-2-5 14:29
回復
2#
GBKEE
Hi GBKEE,
我在載入Microsoft DAO 3.6 Object Libaray時發生錯誤,不知道有方法可以解嗎?
作者:
c_c_lai
時間:
2018-2-7 06:57
本帖最後由 c_c_lai 於 2018-2-7 07:00 編輯
回復
1#
clio
回復
2#
GBKEE
GBKEE 版大,新年快樂!
步驟一:
在你的 C:\Program Files (x86)\Common Files\microsoft shared\DAO 找找看是否有 DAO 目錄 ? 且內有 Dao360.dll ?
[attach]28337[/attach]
步驟二:
將該 DAO 目錄整個複製到 C:\Program Files\Common Files\microsoft shared 內 (假設你電腦是 64 位元)
[attach]28338[/attach]
[尚未註冊]
Type the following command: regsvr32 /u dao360.dll.
Hit ENTER. This will UN-REGISTER your file.
[重新註冊]
Type the following command: regsvr32 /i dao360.dll.
Hit ENTER. This will RE-REGISTER your file.
步驟三:
關閉命令提示字元,再測試你的問題。
Close the command prompt window.
作者:
c_c_lai
時間:
2018-2-7 07:11
回復
3#
clio
[attach]28339[/attach]
作者:
clio
時間:
2018-2-7 09:21
回復
4#
c_c_lai
感謝c_clai
經過您的告知檔案路徑後,我直接在Excel裡面指定路徑的方式就能抓取了,感謝您的協助。
作者:
clio
時間:
2018-2-7 09:33
回復
2#
GBKEE
Hi GBKEE,
感謝您的協助,我也試過了,這個是否是給Access使用,因為那個路徑我不清楚,所以試不出來,
我是用Excel裡面的VBA去抓SQL或是ORACLE等多個Database,一開始是把連線到的資料轉回Recordset,再使用Recordset來做後續找搜比對的工作,
因為有新增一個工能,需要作代有萬用字元的比對,所以無法使用Recordset.Find的方法來完成,只好需要重新連結SQL或ORACLE,然後從Recordset的資訊,好像又無法快速得到Table Name
才想請教大大,是否有更好的方法,還是我只能從Recordset.Source的字串資訊來擷取嗎?
對不起由於我對這方面不是很了解,或許會問了很奇怪的問題,還請見諒,感謝您。
作者:
GBKEE
時間:
2018-2-7 11:02
本帖最後由 GBKEE 於 2018-2-7 11:04 編輯
回復
7#
clio
Option Explicit
'引用:Microsoft Ado Ext.2.x For DDL And Security
Sub Ex_Ado()
Dim myCat As New ADOX.Catalog, myBook As String, i As Integer
Dim strUser As String, strPWD As String, Msg As String
myBook = "d:\excel\資料庫.xlsx" '指定要查詢的工作簿完整名稱
Msg = UCase(Split(myBook, ".")(UBound(Split(myBook, "."))))
Select Case Msg '建立與指定工作薄的連接
Case "XLS"
myCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Extended Properties=Excel 8.0;" & "Data Source=" & myBook
Case Is = "XLSM", Is = "XLSX"
myCat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Extended Properties=""Excel 12.0 xml"";" & "Data Source=" & myBook
Case "MDB"
myCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myBook & _
";User ID=" & strUser & ";Jet OLEDB:Database Password=""" & strPWD & """;"
End Select
Cells.Clear
Range("A1:B1") = Array("查詢出的名稱", "處理後的名稱")
With myCat.Tables
For i = 0 To .Count - 1
Cells(i + 2, 1) = .Item(i).Name
If Msg <> "MDB" Then Cells(i + 2, 2) = Mid(.Item(i).Name, 1, Len(.Item(i).Name) - 1)
Next
End With
End Sub
複製代碼
作者:
clio
時間:
2018-2-8 09:56
回復
8#
GBKEE
感謝GBKEE大大的解答,完全符合我的需求,讓我解決了這個問題,另一個問題是想請教一下
引用:Microsoft Ado Ext.2.x For DDL And Security
我裡面有看到有二個選擇
Microsoft Ado Ext. 2.8 For DDL And Security
Microsoft Ado Ext. 6.0 For DDL And Security
不知道這二者的差異在那邊呢?
作者:
c_c_lai
時間:
2018-2-8 11:22
回復
9#
clio
請參考:
https://www.google.com.tw/search ... grc=jNigEDSJFz8OfM:
作者:
clio
時間:
2018-2-9 09:13
回復
10#
c_c_lai
感謝c_c_lai,的幫忙,:)
作者:
clio
時間:
2018-2-9 09:15
回復
10#
c_c_lai
感謝c_c_lai的熱心協助,我大約知道了,萬分感謝您
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)