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