请帮我看一下下面一段vb代码

来源:百度知道 编辑:UC知道 时间:2024/05/13 17:39:25
Option Explicit
Dim sql As String
Dim yuanliaochang As String
Dim users As String
Dim rs As New ADODB.Recordset
Dim num As Integer '用于保存密码输入错误的次数
Private Sub Form_Load()
Dim connectionstring As String
connectionstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=yuanliaochang;Data Source=SERVER"
conn.Open connectionstring
If conn.State <> 1 Then '如果数据库未打开,则打开数据库
conn.Open (connectionstring)
End If
Set rs = conn.Execute("select * from users")
With rs
.MoveFirst
Do While Not .EOF '逐条读取用户名称,添加到cmbName组合框中
DoEvents
cmbName.AddItem (!usernames)
.MoveNext
Loop
End With
cmbName.ListIndex = 0 '将cmbName组合框的默认选项设置为第一条
conn.Close
End Sub
Private Sub cmdOK_Click()
If

If rs.EOF Then
MsgBox "没有该用户!" & vbCrLf & " 请重新输入!", vbOKOnly + vbExclamation, "提示"
cmbName.SetFocus
Exit Sub

只有当RS在记录集的末尾才执行这段代码。但你的Set rs = conn.Execute("select * from users") 显然是把USERS库的所有记录都读取出来了。肯定是错误的。第2个问题也是这个地方出错误了。应该改成

Set rs = conn.Execute("select * from users where usernames='" & cmbName.Text & "'")

其中:usernames应该是你数据库中存储用户名的字段名才对。如果不是,就改成正确的变量字段名

Set rs = conn.Execute("select * from users")

查询都没加条件,rs.EOF 肯定为false, 当然不执行那段了

取得的值当然是第一条记录了