在 Windows 2007 上,我正在嘗試使用我在 Internet 上找到的以下 Access VBA 子例程將 Access(2016 64 位)資料庫連接到另一個啟用 Web-API 的 Access(2016 64 位)資料庫以提取一些資料元素:
Sub DownloadFile0()
Dim Stm As ADODB.Stream
Dim Rec As New ADODB.Record
Dim Conn As New ADODB.Connection
Dim Url As String, Str As String
Url = "http://www.elesteshary.com/sosdata.accdb/sdr/doll_per_sdr" ' URL, database, record, and field names
Conn.Provider = "ExOLEDB.DataSource"
Conn.Open Url
Rec.Open Url, Conn
Set Stm = Rec.Fields(adDefaultStream).Value
Str = Stm.ReadText
...
Conn.Close
Rec.Close
Stm.Close
Set Conn = Nothing
Set Rec = Nothing
Set Stm = Nothing
End Sub
運行時,我收到“找不到提供程式”。建議我可以使用哪個提供商來代替“ExOLEDB”,我該如何獲得它?當我繞過“Conn.Provider”陳述句時,我收到“資料源名稱太長”。這是因為缺少提供者嗎?如果有問題,請更正代碼。如果全部設定,“Str”是否會包含“doll_per_sdr”的值?“sdr”是一個單記錄表。如果我需要從多記錄表的特定記錄中查詢欄位怎么辦。最后,這個子程式可以從Access以外的資料庫中提取資料嗎?
注意:不允許下載“sosdata.accdb”。
最好的祝福。
Said El Noshokaty,博士,資訊系統教授
uj5u.com熱心網友回復:
你不能這樣做。您發現的代碼需要特定的 URL 語法和知道如何決議它的 Web 服務器才能知道:
- 要打開的資料庫 (sosdata.accdb)
- 要在資料庫中使用的表 (sdr)
- 要從表中檢索的記錄的索引 (doll_pr_sdr)
- 回傳該記錄
沒有開箱即用的啟用 Web API 的 Access(2016 64 位)能夠做到這一點。這樣的 API 將使用發布 API 服務的 Web 服務器構建,該 API 服務(在內部)與 Access 資料庫互動。
附錄:
由于您可以下載該檔案,因此您可以使用 DAO。
- 設定參考以包括這些:

Internet.bas從我的專案VBA.PictureUrl下載并插入模塊創建一個新模塊并復制粘貼此代碼:
Option Compare Database
Option Explicit
Public Function DownloadSdrValue() As Currency
Const Url As String = "http://www.elesteshary.com/sosdata.accdb"
Dim Database As DAO.Database
Dim Records As DAO.Recordset
Dim FileName As String
Dim Value As Currency
FileName = DownloadCacheFile(Url)
Set Database = DBEngine(0).OpenDatabase(FileName)
Set Records = Database.OpenRecordset("Select * From sdr")
If Records.RecordCount > 0 Then
Records.MoveFirst
Value = Records.Fields("doll_per_sdr").Value
End If
Records.Close
Database.Close
Debug.Print "Value:", Value
DownloadSdrValue = Value
End Function
編譯并保存模塊
像這樣檢索值:
DollarPerSdr = DownloadSdrValue
- 結果:1.57
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406617.html
標籤:
上一篇:在access/SQL中,如何僅使列中的空值等于另一列中的值?
下一篇:選擇值更改前的最后一行
