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