Office中国论坛/Access中国论坛

标题: 用docmd.openStoredProcedure打開預存程序報錯??? [打印本页]

作者: ADAM    时间: 2005-10-7 18:54
标题: 用docmd.openStoredProcedure打開預存程序報錯???
在vba中有一段代碼,打開預存程序時報錯,如圖:

[attach]13495[/attach]



Private Sub 產量清空_Click()

On Error GoTo Err_產量清空_Click

'DoCmd.SetWarnings False

DoCmd.OpenStoredProcedure "UPDATE_BOM_Q"

Me.資料子表單.Requery

'DoCmd.SetWarnings True

Exit_產量清空_Click:

    Exit Sub

Err_產量清空_Click:

    MsgBox Err.Description

    Resume Exit_產量清空_Click

End Sub



我的解決法:強制執行,忽略錯誤,並忽略提示.將上面這段代碼改成如下:



Private Sub 產量清空_Click()

On Error Resume Next

DoCmd.SetWarnings False

DoCmd.OpenStoredProcedure "UPDATE_BOM_Q"

Me.資料子表單.Requery

DoCmd.SetWarnings True

End Sub

怪的是,程序還是執行了預存程序,但是這樣解決不了根本問題啊.有誰知道問題出在哪兒啊????

(UPDATE_BOM_Q這個預存程序是有存在的,已確認過了,也沒有拼錯)
作者: zyp    时间: 2005-10-7 19:35
换成currentproject.connection.execute("exec UPDATE_BOM_Q")试试
作者: ADAM    时间: 2005-10-8 17:15
謝謝提示

這樣是可以的,我其實有在用,不過用的太簡單,只是用currentproject.connection.execute來執行已定義的SQL語句.不知能這麼用.

當一個存儲過程需要輸入參數時,那怎麼用VAB語句來寫呢.???

還有就是DOCMD.OpenStoredProcedure這語句執行有什麼樣的限制呢.????

[此贴子已经被作者于2005-10-8 9:15:26编辑过]


作者: zyp    时间: 2005-10-8 22:19
以下是引用ADAM在2005-10-8 9:15:00的发言:



謝謝提示

這樣是可以的,我其實有在用,不過用的太簡單,只是用currentproject.connection.execute來執行已定義的SQL語句.不知能這麼用.

當一個存儲過程需要輸入參數時,那怎麼用VAB語句來寫呢.???

還有就是DOCMD.OpenStoredProcedure這語句執行有什麼樣的限制呢.????

這個用法允許有參數的,如:

currentproject.connection.execute("exec 存儲過程名 @參數1=值1,@參數2=值2,@參數3="& me.ID)
作者: ADAM    时间: 2005-10-9 00:22
十分感謝,正為這個問題煩惱著呢,查也不知哪兒查.哈......

再問一下.一個查詢窗體,上有控件:

查詢結果.(子表單)

查詢項目.(下拉式方塊)

查詢條件.(文字框)

查詢.(按鈕)

怎樣隨時實現按條件在查詢結果中顯示資料.

在MDB中,可以直接將文字框資料讀入子表單的資料來源中,在ADP中不行.

目前我想到個笨辦法,按下查詢按鈕后,將一個SQL陳述式賦值給子表單做數據源,那樣就可以讀取查詢條件,並按條件顯示,但這樣做,那VBA程式碼一點也不好讀,改也不好改.

另外一個就是將一個查詢先做好,表單載入時先存好,當按下查詢按鈕后,修改查詢的SQL語句,再更新一下子表單.關閉表單時再將查詢復原.

但在MDB中可以用CurrentDb.QueryDefs("QueryTemp").SQL ="..",來修改查詢的SQL語句,在ADP中不知用什麼屬性來改它.???

[此贴子已经被作者于2005-10-8 17:06:25编辑过]






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3