當前位置:首頁 » 編程語言 » vba如何調用sql存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vba如何調用sql存儲過程

發布時間: 2023-04-26 18:38:05

1. 用vba如何使用sql

一、界面設計

各控制項名稱屬性分別為:label1 、text1 、label2、text2、commandok、cmdcancel

代碼設計如下:

'首先添加一個模塊,寫上以下通用聲明和Sub main():


Public conn As ADODB.Connection '通用(聲明)

Sub main()

Set conn = New ADODB.Connection '通用(main)

conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;" _

+ "User ID=sa;password=123;Initial Catalog=denglu;Data Source=127.0.0.1" '連接資料庫代碼

conn.Open

frmLogin.Show '首先顯示登錄界面。也可以在工程屬性中設置啟動對象為Sub main()或者frmlogin窗體

End Sub

'在Frmlogin 代碼窗口,為cmdok控制項寫以下代碼:

Private Sub cmdok_Click()

If text1.Text = "" Then

MsgBox "用戶名不能為空!", vbOKOnly + vbInformation, "友情提示"

text1.SetFocus

Exit Sub '若用戶名文本框內為空,則出現提示框

End If

If text2.Text = "" Then

MsgBox "密碼不能為空!", vbOKOnly + vbInformation, "友情提示"

text2.SetFocus

Exit Sub '若輸入密碼文本框為空,也出現提示框

End If

Dim strSQl As String

strSQl = "select * from User1 where username='" & Trim$(text1.Text) & "' and pwd='" & Trim$(text2.Text) & "' "

'書寫SQL代碼,查詢User1表中是否存在窗體中用戶輸入的信息。

Dim str As New ADODB.Recordset

Set str = New ADODB.Recordset

str.CursorLocation = adUseClient

str.Open strSQl, conn, adOpenStatic, adLockReadOnly

With str

If .State = adStateOpen Then .Close

.Open strSQl

If .EOF Then

Try_times = Try_times + 1

If Try_times >= 3 Then

MsgBox "您已連續三次輸入錯誤,系統將自動關閉", vbOKOnly + vbCritical, "警告"

Unload Me '若用戶連續輸入3次錯誤密碼,則系統關閉

Else

MsgBox "對不起,用戶名不存在或密碼錯誤 !", vbOKOnly + vbQuestion, "警告"

text1.SetFocus

text1.Text = ""

text2.Text = ""

End If

Else

Unload Me '若登錄成功,則隱藏當前窗體

Form2.Show '然後顯示Form窗體

End If

End With

End Sub

Private Sub cmdCancel_Click()

End '若單擊Cmdcel按鈕,則結束應用程序

End Sub

運行中存在的問題:

代碼中有Dim conn As adodb.connection,運行時顯示"用戶定義類型未定義"

解決方法:點擊「工程」--「引用」找到「Microsoft ActiveX Data Object 2.6」

然後就就可以正常運行了。

2. VBA:Excel 調用 MSSQL存儲過程並返回結果,點了按鈕啥反應也沒有,也不報錯,請問該怎麼寫啊

設置rsData gobjCmd.Execute
雖然不rsData.EOF的

rsData.MoveNext

迴路

這里是給rsdate分配,

然後是有循環並山游標向下移動緩模,直到邊界

當然,絕哪中什麼都不會發生
DO循環中可以添加你想要什麼

3. VB 調用SQL SERVER 存儲過程

'引用Microsoft ActiveX Data Objects 2.8 Library
Dim Cnn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cnn_c As New ADODB.Command
Dim cnn_p As ADODB.Parameter
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
'On Error Resume Next
Cnn.ConnectionString = ConnStr '連接字元串
With Cnn
.CursorLocation = adUseClient
.Open '連接
End With
Set Cnn_c.ActiveConnection = Cnn
With Cnn_c
.CommandType = adCmdStoredProc '命令類型:存儲過程
.CommandText = "AA" '存儲過程名
End With
Set cnn_p = Cnn_c.CreateParameter("ReTurn", adInteger, adParamReturnValue)
Cnn_c.Parameters.Append cnn_p '添加參數ReTurn(返回值)
Set Rs = Cnn_c.Execute '執行
MsgBox Rs.RecordCount '顯示記錄數
If Rs.RecordCount > 0 Then
Rs.Close
End If
Cnn.Close
Set cnn_p = Nothing
Set Cnn_c = Nothing
Set Rs = Nothing
Set Cnn = Nothing

4. vb怎樣調用sql的存儲過程

dim myConn as object
dim myRecord aS OBJECT
Dim mySQL As String
Dim strSQL As String
SET myConn CreateObject("ADODB.Connection") '創建對象
SET myConn CreateObject("ADODB.Connection") '創建對象

Private Sub Form_Load()
Dim mySQL As String
Dim strSQL As String
'設定連接字元串
mySQL = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;"
mySQL = mySQL + "Data Source=" & App.Path & "\Proct.mdb"

myConn.ConnectionString = mySQL '設定連接字元串

'MsgBox mySQL
myConn.Open '打開連接

myRecord.ActiveConnection = myConn '設定RecordSeet的連接對象為Connection

strSQL = "select * from Procts" '設定查詢字元串
'打開myRecord
myRecord.Open strSQL, , adOpenDynamic, adLockOptimistic

'顯示數據
ShowData
End Sub
Private Sub ShowData()
On Error Resume Next
'產品編號
Text1.Text = myRecord.Fields("ProctID").Value
'茄睜產品名稱
Text2.Text = myRecord.Fields("ProctName").Value
'供應商編號
Text3.Text = myRecord.Fields("SupplierID").Value
'類別編號
Text4.Text = myRecord.Fields("CategoryID").Value
'單位數量
Text5.Text = myRecord.Fields("QuantityPerUnit").Value
'單價
Text6.Text = myRecord.Fields("UnitPrice").Value
'庫存數量
Text7.Text = myRecord.Fields("UnitsInStock").Value
'訂單數量
Text8.Text = myRecord.Fields("UnitsOnOrder").Value
'重訂等級
Text9.Text = myRecord.Fields("ReorderLevel").Value
End Sub
'後一條按鈕單擊事件
Private Sub Command8_Click()
'移動記錄到下一條的方法是MoveNext
'在調用MoveNext方法之前,首先需要判斷,當前是不是已經超出尾紀嘩納尺錄
'若超出尾記錄,亂高再執行MoveNext會出錯
If Not myRecord.EOF Then
myRecord.MoveNext
Else
'超出尾記錄,使用MoveLast恢復指向尾記錄
myRecord.MoveLast
End If
'顯示數據
ShowData

End Sub
'前一條按鈕單擊事件
Private Sub Command7_Click()
'判斷是否超出頭記錄
'若超出頭記錄,再執行MovePrevious會出錯
If Not myRecord.BOF Then
myRecord.MovePrevious
Else
'超出頭記錄
'使用MoveFirst恢復到指向第一條記錄
myRecord.MoveFirst
End If
'顯示數據
ShowData
End Sub
'尾記錄按鈕單擊事件
Private Sub Command9_Click()
'調用MoveLast
myRecord.MoveLast
'顯示記錄
ShowData
End Sub
Private Sub Command5_Click()
'調用Recordset對象cancelUpdate方法取消數據保存
myRecord.CancelUpdate
myRecord.MoveFirst
'顯示數據
ShowData
End Sub

'首記錄按鈕單擊事件
Private Sub Command6_Click()
'調用MoveFirst移動
myRecord.MoveFirst
'顯示記錄
ShowData
End Sub
Private Sub Command4_Click()
On Error Resume Next
'保存數據,這里需要通過編程來實現
'產品編號
'產品編號不能為空
If Text1.Text = "" Then
MsgBox "產品編號不能為空!"
Text1.SetFocus
Exit Sub
End If
'其他文本框的判斷類似,這里省略
'保存產品編號
myRecord.Fields("ProctID").Value = Val(Text1.Text)
'保存產品名稱
myRecord.Fields("ProctName").Value = Text2.Text
'保存供應商編號
myRecord.Fields("SupplierID").Value = Val(Text3.Text)
'保存類別編號
myRecord.Fields("CategoryID").Value = Val(Text4.Text)
'保存單位數量
myRecord.Fields("QuantityPerUnit").Value = Text5.Text
'保存單價
myRecord.Fields("UnitPrice").Value = Val(Text6.Text)
'保存庫存數量
myRecord.Fields("UnitsInStock").Value = Text7.Text
'保存訂單數量
myRecord.Fields("UnitsOnOrder").Value = Val(Text8.Text)
'保存重訂等級
myRecord.Fields("ReorderLevel").Value = Val(Text9.Text)

'調用Recordset對象Update方法保存數據
myRecord.Update

'顯示數據
ShowData

End Sub

5. SQL存儲過程如何調用存儲過程

1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。

6. VB中ADODB的Connection對象Execute方法調用SQL存儲過程方法

Set adoRs = adoConn.Execute("exec Book_SelectName 'sqlarg'")
改為
Set adoRs = adoConn.Execute("exec Book_SelectName '" & sqlArg & "'")

7. 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裡面的存儲過程提示?

8. 在vb中調用sql存儲過程

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

請問在vb中如何調用sql存儲過程?謝謝啦!

解析:

你可以使用 ADODB.Command 來調用存儲過程,如:

Dim adoComm As Object

' 創建一個對象,我鎮亮們用來調用存儲過程

Set adoComm = CreateObject("ADODB.Command")

With adoComm

'緩旅前 設置連接,假設 adoConn 為已經連接的 ADODB.Connection 對象

.ActiveConnection = adoConn

' 類型為存儲過程,擾清adCmdStoredProc = 4

.CommandType = 4

' 存儲過程名稱

.CommandText = "你的存儲過程名稱"

' 設置輸入參數

.Parameters.Item("@輸入參數").Value = "值"

' 執行存儲過程

.Execute

If .Parameters.Item("@返回參數名稱").Value = True Then

Else

End If

End With

' 釋放對象

Set adoComm = Nothing

9. 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
For巧枯i=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