假如本人的H:\下有一数据库student(用Access2000做的),其中有一个表user。它有两个字段,一为username,另一个为userpassword。现本人用VB做了个登陆窗口,它有两个文本框(txtusername,txtuserpass),一个确定按钮(cmdok)。现如何编程才能验证在txtusername中输入的名字就是表USER中username字段的一个名字,并且txtuserpass就是它所对应的userpassword? 本人已经引用了micosoft activeX data Object 2.1 library
以下是程序部分:  Option Explicit
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sqlstr As StringPrivate Sub cmdok_Click()
cn.Open "PROVIDER = Microsoft.Jet.OlEDB.4.0;" & "Data Source= h:\student.mdb;"
sqlstr = "select * from user where username ='" & txtusername & "'"
Set rs = cn.Execu (sqlstr)''''''''''''''''每次运行时,这儿都发生错误
If rs.EOF And rs.BOF Then                  说是from子句发生错误!
  MsgBox "无此用户", , "提示"
Else
  If rs.Fields("userpassword") = txtuserpassword Then
        '进入主程序
  Else
     MsgBox "密码不对"
  End If
End If
rs.Close
cn.Close有谁能帮我看看,说说里面哪儿写得不对?

解决方案 »

  1.   

    Set rs = cn.Execu (sqlstr)''''''''''''''''  这句应为
    rs.open sqlstr,cn,adopenkeyset
      

  2.   

    lh1012 说的对,把
    Set rs = cn.Execu (sqlstr)''''''''''''''''  这句改为
    rs.open sqlstr,cn,adopenkeyset
    我刚调试过,2000 vb6.0通过
      

  3.   

    可为什么我把上面的程序改为数据源形式就行了呢?
    就是说把这句连接数据库:cn.Open "PROVIDER = Microsoft.Jet.OlEDB.4.0;" & "Data Source= h:\student.mdb;"改为cn.open"student"---------student为数据源
    这时就可以执行了,cn.execu也没有说错,请问这又是怎么一回事?
      

  4.   

    Private Sub cmdok_Click()
    cn.Open "PROVIDER = Microsoft.Jet.OlEDB.4.0;" & "Data Source= h:\student.mdb;"
    sqlstr = "select * from user where username ='" & txtusername & "'"
    rs.Open sql,cn,1,3
    If rs.EOF And rs.BOF Then                  
      MsgBox "无此用户", , "提示"
    Else
      If rs.Fields("userpassword") = txtuserpassword Then
            '进入主程序
      Else
         MsgBox "密码不对"
      End If
    End If
    rs.Close
    cn.Close
      

  5.   

    检查一下你的Command的命令类型设置是否正确Command.CommandType,应为cmdText