用SQL SERVER 先把数据库建好, 建一个用户登陆的表(要插入用户名和密码 如:
   name=Admin   password=Admin),
然后用VB做一个主窗体,一个登陆窗体 ,  然后运行没有错误就可以了, 而且输入用户和密码都正确
我实在是没办法了, 试了很多种办法  就是总出错, 不知道哪里不对, 
我把模块  类模块都加进去了 , 可是还是不行, 大虾们救救我啊, 
我们小组就我一个负责编程的, 弄不好整个小组不及格 , 我就惨了, 谢谢!!!如果哪位仁慈的哥哥姐姐能帮我做一个, 然后发到

解决方案 »

  1.   

    先用查询分析器,如果查询分析器能够正确进入并查到表内容的话在继续下面的工作,否则看数据库!
    建立odbc数据源连接数据库,如ww,然后引用microsoft activex data objects
    登陆窗体
    先声名
    Option Explicit
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    from_load事件
    cn.CursorLocation = adUseClient
    cn.Open "dsn=ww", "用户名", "密码"
    cn.DefaultDatabase = "数据库"
    然后按钮单击事件
    Private Sub Command1_Click()
        Set rs = cn.Execute("select UserName,Password from table")
        If rs.EOF Or rs.BOF Then
            MsgBox "用户名密码错误"
            Exit Sub
        Else
            Me.Hide
            form2.Show
        End If
    End Sub
      

  2.   

    将以下函数添加进你的模块中,直接调用:Public Function vConnection_ADO(adoCnn As ADODB.Connection, DataPathName As String, Optional userid As String, Optional PassWord As String, Optional ServerName As String, Optional nFlag As Integer = 0, Optional nWinntFlag As Boolean = True) As Boolean
    '**************************************************************************************************
    '功能:用 ADO 连接数据库(服务器),如果连接成功则返回 True 并且返回 adoCnn 连接对象供程序使用
    '参数:当 nFlag = 0 时是连接 Access 数据库,DataPathName 为数据库名称路径
    '      当 nFlag = 1 时是连接 SQL Server 服务器,ServerName为服务器名,DataPathName为数据库名称
    '      当 nFlag = 2 时是连接 ODBC 数据源数据库,DataPathName 为数据源名称
    '      当 nFlag = 1、2 时 nWinntFlag 启用:= True为系统集成安全访问,= False为用户名和密码访问
    '      访问数据库的用户名和密码分别为:UserID 和 PassWord
    '时间:2004 年 08 月 04 日   ALEX  ADD
    '**************************************************************************************************
    On Error GoTo errHandlerr
       
       Dim CnnStr As String
        
       vConnection_ADO = False
       If Trim(DataPathName) = "" Then
          MsgBox "被连接的数据库名称为空,连接失败!", vbCritical, "数据库名不能为空 ..."
          Exit Function
       End If
       If nFlag = 0 Then
          CnnStr = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + DataPathName + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + PassWord
       ElseIf nFlag = 1 Then
          If Trim(ServerName) = "" Then ServerName = "LIBINGAO"
          If Trim(userid) = "" Then userid = "sa"
          If nWinntFlag Then
             CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; Integrated Security=SSPI;"
          Else
             CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=True; Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; User ID=" + userid + ";Password=" + PassWord
          End If
       ElseIf nFlag = 2 Then
          If Trim(ServerName) = "" Then ServerName = ""
          If Trim(userid) = "" Then userid = "admin"
          If nWinntFlag Then
             CnnStr = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName  '由于初始目录事先未知,故在此用 ServerName 致空
          Else
             CnnStr = "Provider=MSDASQL.1;Persist Security Info=True ;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName + ";User ID=" + userid + ";Password=" + PassWord
          End If
       End If
       
       With adoCnn
            If .State = adStateOpen Then .Close
           .ConnectionString = CnnStr
           .Open ', , , adAsyncConnect     ' 参数 adAsyncConnect 用于异步打开连接(不必等待),此时要用 WithEvents 关键字声明 adoCnn
            If .State = adStateOpen Then   ' 用 ADO 连接 指定数据库成功,函数返回 True 和 已连接好的 对象 adoCnn
                vConnection_ADO = True
            Else                           ' 用 ADO 连接 指定数据库失败,函数返回 False 并弹出报错对话框
    errHandlerr:
                If Trim(err.Description) <> "" Then
                   MsgBox err.Description + ":" + CStr(err.number) + vbCrLf + "用 ADO 连接数据库 < " + DataPathName + " > 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
                Else
                   MsgBox "用 ADO 连接数据库 <" + DataPathName + "> 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
                End If
            End If
       End With
       
    End Function
      

  3.   

    例子很多!
    用ADO实现的例子如下http://www.21code.com/codebase/?&pos=down&id=1839
    http://www.21code.com/codebase/?&pos=down&id=2084
    http://www.21code.com/codebase/?pos=down&id=1390看看其中登录的代码!
      

  4.   

    Option Explicit
    Public ServerName As String
    Public DatabaseName As String
    Private cn As ADODB.ConnectionPublic Function connectToServer() As Boolean
    On Error GoTo ConnectErr
        Call CloseConnect
        Set cn = New ADODB.Connection
        cn.ConnectionString = "driver={SQL Server};server=" & ServerName & ";uid=sa;pwd=;database=" & DatabaseName
        cn.ConnectionTimeout = 30
        cn.Open
        connectToServer = True
    Exit Function
    ConnectErr:
        connectToServer = False
        MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
    End Function
    Private Sub ClsDB_Initialize() '构造函数
        Set cn = New ADODB.Connection
    End Sub
    Private Sub ClsDB_Terminate() '析构函数
        Call CloseConnect
    End Sub
    Private Function CloseConnect() As Boolean '关闭数据库连接
    On Error Resume Next
        If cn.State = adStateOpen Then
            cn.Close
        End If
        Set cn = Nothing
        CloseConnect = True
    End FunctionPublic Function GetAllUsers(ByVal SQL As String, ByRef colUsers As Collection, ByVal clsType As Object) As Boolean
    On Error GoTo ON_ERROR
        Dim rst As New ADODB.Recordset
        Dim SysUser As Object
        
        Set rst = cn.Execute(SQL)
        If rst.EOF = True And rst.BOF = True Then
            'MsgBox "用户名或密码错误,请与管理员联系……", vbInformation + vbOKOnly, "没有用户"
            GetAllUsers = False
            Exit Function
        End If
        rst.MoveFirst
        On Error Resume Next    
        If TypeOf clsType Is clsSysUser Then
        
                Set SysUser = New clsSysUser
                Do While Not rst.EOF
                    SysUser.UserID = Trim(rst.Fields("UserID").Value)
                    SysUser.PassWord = Trim(rst.Fields("Password").Value)
                    SysUser.Purview = Trim(rst.Fields("Purview").Value)
                    Call colUsers.Add(SysUser, "U_" & SysUser.UserID)
                    rst.MoveNext
                Loop
        Else
            
        End If
        Set rst = Nothing
        GetAllUsers = True
        Exit Function
    ON_ERROR:
        MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
        Err.Clear
        GetAllUsers = False
    End Function
    Public Function ExecuteSQL(ByRef rst As ADODB.Recordset, ByVal SQL As String) As Boolean
    On Error Resume Next
        'MsgBox SQL
        Call rst.Open(SQL, cn, adOpenDynamic, adLockOptimistic, -1)
        'Set rst = cn.Execute(SQL)
    If Err.Number > 0 Then
        MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
        Err.Clear
        ExecuteSQL = False
    Else
        ExecuteSQL = True
    End If
    End FunctionPublic Function ExcStdProc(ByRef cmd As ADODB.Command, ByRef rst1 As ADODB.Recordset) As Boolean
    On Error Resume Next    Set cmd.ActiveConnection = cn
        Set rst1 = cmd.Execute
        
    If Err.Number > 0 Then
        MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
        Err.Clear
        ExcStdProc = False
    Else
        ExcStdProc = True
    End If
    End Function
      

  5.   

    Option Explicit
    Dim LoginCount As Integer '定义用户登陆计数
    Dim clsSchoolUser As New clsSysUser '定义系统登陆用户窗体级对象Private Sub cmdCancel_Click()
    EndMyApp
    End SubPrivate Sub cmdOK_Click()
        '用户三次不能输入正确,则退出系统
    If LoginCount < 3 Then
        '通过对象方法验证用户有效性
        If clsSchoolUser.LoginCheck(Trim(txtUserName), Trim(txtPassword)) Then
            Unload Me
            DataProc.g_Logined = True
            frmMain.Show
        Else
            MsgBox "用户名或密码错误,请重新输入!", vbOKOnly, "错误!"
            txtUserName.SetFocus
            SendKeys "{Home}+{End}"
        End If
        LoginCount = LoginCount + 1
    Else
        MsgBox "尝试登陆次数超过三次,请联系管理员解决,确定退出!", vbOKOnly, "错误!"
        EndMyApp
    End If
    End SubPrivate Sub Form_Activate()
    '以下为调试用,正常启动必须加注释
    DataProc.g_LoginUserPurview = 1
    Unload Me
    End SubPrivate Sub Form_Load()
    '初始化计数变量
    LoginCount = 1End SubPrivate Sub Form_Unload(Cancel As Integer)
    Set clsSchoolUser = Nothing
    End Sub