Board logo

標題: [發問] VBA 連結 Access 的問題請教 [打印本頁]

作者: uf023630    時間: 2012-5-17 16:33     標題: VBA 連結 Access 的問題請教

因為特殊工作需求一定要用Excel 與Access作連結,所以我依照範例寫了一個測試程序,
它會把資料貼在 Sheet 內的A2,我要如何把RUN出來的之料放進變數內?
我最主要的目的是 用EXCEL2007 開Access2003的資料庫,從中篩選案件狀態='2'
的P1總時間作加總
希望有人能幫我
  1. Sub aa()
  2. Dim cnn As New ADODB.Connection
  3. Dim rst As New ADODB.Recordset

  4. cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & ThisWorkbook.Path & "\CCBO.MDB"

  5. sq1 = "select AVG(P1總時間) from CCBO where 案件狀態='2'"

  6. [a2].CopyFromRecordset cnn.Execute(sql)

  7. cnn.Close
  8. Set cnn = Nothing
  9. End Sub
複製代碼

作者: alexliou    時間: 2012-5-17 17:39

回復 1# uf023630
看不出錯誤在哪
提醒一下
資料庫的名字叫CCBO
你要查詢的資料表也叫CCBO嗎?
作者: uf023630    時間: 2012-5-17 17:48

RUN 起來是沒問題
但是 [a2].CopyFromRecordset cnn.Execute(sql) 會把資料貼到sheet去,但是我要的是
將RUN 出來的資料放到變數去
作者: kimbal    時間: 2012-5-18 00:05

RUN 起來是沒問題
但是 [a2].CopyFromRecordset cnn.Execute(sql) 會把資料貼到sheet去,但是我要的是
將 ...
uf023630 發表於 2012-5-17 17:48


可以參考一下這裡範例
http://kimbalko-chi.blogspot.com/2010/06/how-toexcel-vba-sql.html

把sql轉為
    sq1 = "select AVG(P1總時間) as P1_avg_time from CCBO where 案件狀態='2'"

不用這個
[a2].CopyFromRecordset cnn.Execute(sql)
轉為用record set接上
Set rst = cnn.Execute(strQuery)
最後把數值放到變數
變數 = rst.Fields("P1_avg_time").Value




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)