vb编程问题

OptionExplicitPublicgConnStrAsStringPublicSubChangeFormPos(frmMainAsMDIForm,frmAsForm... Option Explicit
Public gConnStr As String

Public Sub ChangeFormPos(frmMain As MDIForm, frm As Form)
Dim Top As Integer
Top = (frmMain.ScaleHeight - frm.Height) / 2 - 600
If Top > 0 Then
frm.Top = Top
Else
frm.Top = 0
End If
frm.Left = (frmMain.ScaleWidth - frm.Width) / 2
End Sub
Public Sub Main()
gConnStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=FALSE;Initial Catalog=wms;Data Source=127.0.0.1"
frmlogin.Show
End Sub

Public Function ExeSQL(ByVal sql As String) As ADODB.Recordset
On Error GoTo ErrHandler:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strArray() As String
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
strArray = Split(sql) ''Split分隔字符串
cn.Open gConnStr
If StrComp(UCase$(strArray(0)), "select", vbTextCompare) = 0 Then 'Strcomp比较字符串;Ucase返回一个字符串或字符,其中包含转换为小写的指定字符串
rs.Open Trim$(sql), cn, adOpenForwardOnly, adLockOptimistic ''Trim$用于移除字符串的头或尾空格
Set ExeSQL = rs
Else
cn.Execute sql
End If
ExeSQl_Exit:
Set rs = Nothing
Set cn = Nothing
Exit Function
ErrHandler:
'显示错误信息
MsgBox "错误号:" & Err.Number & "错误信息:" & Err.Description, vbExclamation
Resume ExeSQl_Exit
End Function

这是ok键的代码:
Private Sub cmdOk_Click()
On Error GoTo ErrHandler:
Dim sql As String
Dim rs As ADODB.Recordset
' Dim intAuthority As Integer

Dim intUserKey As Integer
Dim inAuthority As Integer ''自己加的
Dim strUserName As String ''自己加的
' Dim strUserName As String
Dim intJobId As Integer
If Trim(txtUserName.Text = "") Then
MsgBox "请输入用户名称!", vbExclamation
txtUserName.SetFocus
Else
sql = "select * from 用户表 where Username='" & txtUserName.Text & "'"
' If rs.State <> adStateClosed Then rs.Close
' rs.Open sql, cnn, adOpenKeyset, adLockReadOnly
Set rs = ExeSQL(sql)
If rs.EOF = True Then
MsgBox "没有此用户,请重新输入用户名!", vbExclamation
txtUserName.SetFocus
Else
If Trim(rs!UserPassword) = Trim(txtPassword.Text) Then
intAuthority = rs!JobID
' intUserKey = rs!JobID
strUserName = txtUserName.Text

rs.Close
Me.Hide
frmMain.Show ''-------
Unload Me ''---------
Else
MsgBox "密码不正确,请重新输入密码!", vbExclamation
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
Exit Sub
ErrHandler:
MsgBox "错误号:" & Err.Number & "错误描述:" & Err.Description
End Sub

我在工程引用中已经添加了Microsoft activex data object 2.8 library。但是总是报错误91。上网查了一些资料,也没有找出问题。希望帮我看一下。谢谢~
展开
 我来答
zzqwz
2012-03-28 · TA获得超过481个赞
知道小有建树答主
回答量:870
采纳率:0%
帮助的人:563万
展开全部
ado控件
可以先添加ado控件
在放ado控件到窗体上
再删除掉
更多追问追答
追问
我添加了ado控件,设置了连接字符串,测试连接成功了。可是还是报错。还有一些不明白。添加了ado控件为什么要删除掉。我是初学,很多地方不懂。望谅解。谢谢解答。
追答
添加上ado控件只是为了调用ado定义
加上没什么用可以删除
我的一般是这么写的
'链接数据库
Public Sub AdoDataCnn()
Str_cnn = "Provider=Microsoft.Jet.OLEDB.4.0;PASSWORD=;user id=;Data Source=" & App.Path & "\test.mdb"
Set AdoCnn = New ADODB.Connection
AdoCnn.ConnectionString = Str_cnn
AdoCnn.Open
End Sub

'关闭数据库
Public Sub AdoDataCls()
AdoCnn.Close
Set AdoCnn = Nothing
End Sub
Private Sub Form_Load()
AdoDataCnn
end sub
private sub command1_click()
Dim adors As ADODB.Recordset
sql="select * from test"
set adors=new adodb.recordset
adors.open sql,adocnn,1,1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9260c4507
2012-03-28 · TA获得超过2328个赞
知道大有可为答主
回答量:3736
采纳率:0%
帮助的人:2422万
展开全部
哪行?
更多追问追答
追问
我也不知道哪行的问题。运行的时候,运行到If rs.EOF = True Then这行时,就会直接跳到ErrHandeler: MsgBox "错误号:" & Err.Number & "错误描述:" & Err.Description。就报错91了。
追答
去掉错误处理
让他报自己的错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式