vba存儲過程
㈠ 怎樣在VBA中調用MSsql中的自定義函數
sqlserver存儲過程可以將執行結果通過返回值返回給調用他得程序得,而Access中無論是mdb還是adp都可以用ado執行存儲過程並獲得返回值。
sqlserver中得函數能在sqlserver裡面執行嗎?能!存儲過程能調用函數嗎?能!調用了函數能夠獲得函數得返回值嗎?能!能把函數得返回值賦值給存儲過程得返回值嗎?能!VBA能調用存儲過程嗎?能!VBa能取得返回值嗎?能!
這不就結了???!!!!!
㈡ vba中怎樣寫執行sql帶參的存儲過程
.Parameters.Append .CreateParameter("@FromDate", adVarChar, 1, Len(CStr(Format(Me.FromDate, "yyyy-mm-dd"))), CStr(Format(Me.FromDate, "yyyy-mm-dd")))
我是這樣寫的, 輸入輸出用1和2即可
另外未定義的錯誤信息是VBA提示,還是SQL裡面的存儲過程提示?
㈢ access的adp鏈接SQL後,如何在VBA中執行SQL中的存儲過程
聲明command對象, 你網路VB調用SQL存儲過程, 語法是一樣的,很多資料可以參考,比如
http://wenku..com/view/c44b8dc5bb4cf7ec4afed07c.html
㈣ 在vba執行程序期間,用什麼臨時存儲數值
運行期間,如果為了提高效率,盡可能使用變數存儲數據
特別是表格處理,可以考慮使用數組,動態數組,字典等
不過不考慮效率,也可以使用表格,文本等臨時存儲
具體使用什麼存儲,看樓主的具體需求。
㈤ VBA:Excel 調用 MSSQL存儲過程並返回結果,點了按鈕啥反應也沒有,也不報錯,請問該怎麼寫啊
設置rsData gobjCmd.Execute
雖然不rsData.EOF的
rsData.MoveNext
迴路
這里是給rsdate分配,
然後是有循環游標向下移動,直到邊界
當然,什麼都不會發生
DO循環中可以添加你想要什麼
㈥ VBA的語法格式,以及在excel中是如何使用的
這個問題的含金量就大了,首先VBA是OFFICE軟體內置的二次開發功能,以VB代碼作為編程語言,編輯窗口稱為VBE。下面簡單的回答下容易理解的幾個點。
在EXCEL中的使用方法:使用快捷鍵ALT+F11 或者在菜單欄中通過「開發工具」---「Visual Basic」選項卡都可以進入VBE窗口進行編輯VBA代碼。
如果找不到「開發工具」選項卡,對照2007和2010版本的EXCEL可以點擊「文件」(2007是圓形的OFFICE圖標)--「選項」---「自定義功能選項」,勾選「開發工具」並確定,如下圖
sub示例()
msgboxsheet1.name'調用sheet1的名稱,並彈出。這是調用對象的屬性
shett1.name="表1"'對shhet1進行命名,這是對象的賦值方法
endsub㈦ 如何在VBA中調用存儲過程
方法有幾種
1、
SetConn=Server.CreateObject("ADODB.Connection")
Conn.openstrConn
iferr.number<>0then
response.Write"資料庫鏈接失敗。"'&err.Description
response.End
endIf
setRs=server.CreateObject("adodb.recordset")
'調用存儲過程:[dbo].[Usp_GetUserMenu]
strsql="[dbo].[Usp_GetUserMenu]@UserID='"&Session(g_SessionName&"_UserID")&"'"
'這句話是關鍵,CursorLocation意思是游標本地化
rs.CursorLocation=3
Rs.openstrsql,conn,1,1
iferr.number<>0Then
conn.close
setconn=nothing
endif
fori=1tors.RecordCount
iMenuType=rs("MenuType")
......
rs.MoveNext
next
rs.Close
setrs=nothing
conn.close
setconn=nothing2. 使用adobd.Command對象
VB6.0調用存儲過程的例子
(說明:以下代碼摘自微軟的MSDN,經過測試沒問題。使用該方法的前提條件是必須知道將要使用的參數化命令的詳細情況。)
打開Form1窗體,Copy以下的代碼到窗體中,該段代碼將測試存儲過程ADOTestRPE的返回值、輸入參數及輸出參數,測試的過程中,可能需要修改鏈接字元串。
SubCreateParms()
DimADOCmdAsNewADODB.Command
DimADOPrmAsNewADODB.Parameter
DimADOConAsADODB.Connection
DimADORsAsADODB.Recordset
DimsParmNameAsString
DimstrConnectAsString
DimrStrAsString
OnErrorGoToErrHandler
strConnect="driver={SQLServer};server=(local);uid=sa;pwd=;database=pubs"
SetADOCon=NewADODB.Connection
WithADOCon
.Provider="MSDASQL"
.CursorLocation=adUseServer'MustuseServersidecursor.
.ConnectionString=strConnect
.Open
EndWith
SetADOCmd.ActiveConnection=ADOCon
WithADOCmd
.CommandType=adCmdStoredProc
.CommandText="ADOTestRPE"
EndWith
'.
sParmName="Return"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamReturnValue,,0)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=-1
'
'parameter.
sParmName="Output"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamOutput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sP
armName).Value=999
'Parameter2
sParmName="R1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=1
'Parameter3
sParmName="P1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter4
sParmName="E1Num"'
'1.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter5
sParmName="R2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=2
'Parameter6
sParmName="P2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter7
sParmName="E2Num"'
'2.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
SetADORs=ADOCmd.Execute
DoWhile(NotADORsIsNothing)
IfADORs.State=adStateClosedThenExitDo
WhileNotADORs.EOF
Fori=0ToADORs.Fields.Count-1
rStr=rStr&":"&ADORs(i)
Nexti
Debug.PrintMid(rStr,3,Len(rStr))
ADORs.MoveNext
rStr=""
Wend
Debug.Print"----------------------"
SetADORs=ADORs.NextRecordset
Loop
Debug.Print"Return:"&ADOCmd.Parameters("Return").Value
Debug.Print"Output:"&ADOCmd.Parameters("Output").Value
GoToShutdown
ErrHandler:
CallErrHandler(ADOCon)
ResumeNext
Shutdown:
SetADOCmd=Nothing
SetADOPrm=Nothing
SetADORs=Nothing
SetADOCon=Nothing
EndSub
PrivateSubCommand1_Click()
CallCreateParms
EndSub
SubErrHandler(objConAsObject)
DimADOErrAsADODB.Error
DimstrErrorAsString
ForEachADOErrInobjCon.Errors
strError="Error#"&ADOErr.Number&vbCrLf&ADOErr.Description_
&vbCr&_
"(Source:"&ADOErr.Source&")"&vbCr&_
"(SQLState:"&ADOErr.SQLState&")"&vbCr&_
"(NativeError:"&ADOErr.NativeError&")"&vbCr
IfADOErr.HelpFile=""Then
strError=strError&"NoHelpfileavailable"&vbCr&vbCr
Else
strError=strError&"(HelpFile:"&ADOErr.HelpFile&")"_
&vbCr&"(HelpContext:"&ADOErr.HelpContext&")"&_
vbCr&vbCr
EndIf
Debug.PrintstrError
Next
objCon.Errors.Clear
EndSub㈧ EXCEL中VBA怎麼執行SQL SERVER 2005存儲過程
您好:
給您找了一段VBA的代碼,請參考,未測試。
Subtest()
DimstrconAsString
DimcnAsNewADODB.Connection
DimrsAsNewADODB.Recordset
strcon="Driver={SQLServer};Server=**********;UID=**;PWD=*********;DataBase=***"
cn.Openstrcon
strsql="exec存儲過程名'"&Sheet2.Cells(2,2).Value&"','"&Sheet2.Cells(3,2).Value&"'"'參數可選
rs.Openstrsql,cn,adOpenDynamic,adLockBatchOptimistic
r=6
Sheet2.Range(Cells(6,1),Cells(50000,20)).ClearContents
Fori=0Tors.Fields.Count-1
Sheet2.Cells(5,i+1).Value=rs.Fields(i).Name
Nexti
WhileNotrs.EOF
Fori=0Tors.Fields.Count-1
Sheet2.Cells(r,i+1).Rows.Value=rs.Fields(i).Value
Nexti
r=r+1
rs.MoveNext
Wend
EndSub㈨ EXCEL的VBA中「ontime」如何使用,語法怎樣,我是初學者,請高手盡量說詳細
Application.OnTime 方法
安排一個過程在將來的特定時間運行(既可以是具體指定的某個時間,也可以是指定的一段時間之後)。
語法
表達式.OnTime(EarliestTime, Procere, LatestTime, Schele)
表達式 一個代表 Application 對象的變數。
參數
名稱 必選/可選 數據類型 描述
EarliestTime 必選 Variant 希望此過程運行的時間。
Procere 必選 String 要運行的過程名。
LatestTime 可選 Variant 過程開始運行的最晚時間。例如,如果 LatestTime 參數設置為 EarliestTime + 30,且當到達 EarliestTime 時間時,由於其他過程處於運行狀態而導致 Microsoft Excel 不能處於「就緒」、「復制」、「剪切」或「查找」模式,則 Microsoft Excel 將等待 30 秒讓第一個過程先完成。如果 Microsoft Excel 不能在 30 秒內回到「就緒」模式,則不運行此過程。如果省略該參數,Microsoft Excel 將一直等待到可以運行該過程為止。
Schele 可選 Variant 如果為 True,則預定一個新的 OnTime 過程。如果為 False,則清除先前設置的過程。默認值為 True。
說明
使用 Now + TimeValue(time) 可安排經過一段時間(從現在開始計時)之後運行某個過程。使用 TimeValue(time) 可安排某個過程只運行指定的時間。
示例
本示例設置從現在開始 15 秒後運行 my_Procere。
Visual Basic for Applications
Application.OnTime Now + TimeValue("00:00:15"), "my_Procere"
本示例設置 my_Procere 在下午 5 點開始運行。
Visual Basic for Applications
Application.OnTime TimeValue("17:00:00"), "my_Procere"
本示例撤消前一個示例對 OnTime 的設置。
Visual Basic for Applications
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
Procere:="my_Procere", Schele:=False
其實像這種EXCEL VBA內置函數,你可以打開幫助查找F1