有关ADO的使用问题请教!
我写了一段数据库的程序,考虑了好长时间就是没法子解决问题,请高手帮个忙。第一个解决了我的问题的,100分奉送,绝不食言!
首先是我的公用模块代码,大家看看有没有缺陷:
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'传递参数SQL传递查询语句,MsgString传递查询信息
'自身以一个数据集对象的形式返回
Dim cnn As ADODB.Connection '定义连接
Dim rst As ADODB.Recordset '定义字符串
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
'用split函数产生一个包含各个子串的数组
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
'打开连接
cnn.Open ConnectString
'判断字符串中是否含有指定内容
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
Exit Function
End Function
Public Function ConnectString() As String
ConnectString = "FileDSN=GenerSoft.dsn;UID=sa;PWD=wenxuech"
End Function
Public Function Testtxt(txt As String) As Boolean
If Trim(txt) = "" Then
Testtxt = False
Else
Testtxt = True
End If
End Function
Sub main()
Dim fLogin As New frmLogin
fLogin.Show vbModal
If Not fLogin.OK Then
End
End If
Unload fLogin
Set fMainForm = New frmMain
fMainForm.Show
End Sub
然后我做了一个用户登陆的窗体,运行时老是出错,说对象变量或with块变量未设置:
Option Explicit
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
If Trim(txtUserName.Text) = "" Then
MsgBox "请输入用户名称!", vbOKOnly + vbExclamation, "警告"
Exit Sub
txtUserName.SetFocus
Else
txtSQL = "select * from userinfo"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While (mrc.EOF = False) //此行出错,请高手看一下怎么办
If Trim(mrc.Fields(0)) = Trim(txtUserName.Text) Then
MsgBox "用户已经存在,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
txtUserName.Text = ""
txtPassword.Text = ""
txtConfirm.Text = ""
Exit Sub
Else
mrc.MoveNext
End If
Wend
End If
If Trim(txtPassword.Text) <> Trim(txtConfirm.Text) Then
MsgBox "两次输入的密码不一样,请确认!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
txtConfirm.Text = ""
Exit Sub
Else
If txtPassword.Text = "" Then
MsgBox "密码不能为空!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
txtConfirm.Text = ""
Else
mrc.AddNew
mrc.Fields(0) = Trim(txtUserName.Text)
mrc.Fields(1) = Trim(txtPassword.Text)
mrc.Update
Me.Hide
MsgBox "添加用户成功!", vbOKOnly + vbExclamation, "添加用户"
End If
End If
End Sub
界面十分简单,没必要描述了。
急等回音,坚决付分!