一、系统登录界面:
二、思维:
1、窗体加载:(1)获取计算机的机器名:Private Declare Function GetComputerName Lib "kernel32" Alias"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
DimStrT As String * 255
GetComputerName StrT, 255
Print StrT
'计算机的机器名
mrc1.Fields(6) = VBA.Environ("computername")
(2)获取用户名的函数(GetUserName)Private Declare FunctionGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVallpBuffer As String, nSize As Long) As Long
sBuffer =Space$(255) '取出255个空白字符串
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize) '读取用户名到sBuffer中,判断它的长度
If lSize > 0 Then
txtusername.Text = "admin" '窗体加载时文本框默认为管理员admin
Else
txtusername = vbNullString '否则为空字符串
End If
应用两个API函数
2、登录按钮:用户名和密码的输入情况、管理权限和添加值班信息到值班表中、设置登录次数。
3、推出按钮:推出系统、提示对话框
三、模块部分(连接数据库)
1、启动窗体sub main过程
2、与数据库的连接(远程连接,创建数据源连接)
'Connectstring= "FileDSN=charge.dsn;UID=sa;PWD=123456" ‘本地服务器
Connectstring="provider=sqloledb;server=192.168.24.232;UID=sa;PWD=123456;database=charge" 远程连接
3、定义函数ExecuteSQL的使用
Public Function ExecuteSQL(ByVal SQL As String, MsgstringAs String) As ADODB.Recordset
Dim cnn AsADODB.Connection
Dim rst AsADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens =Split(SQL) '分段,以指定字符分隔符,分离出若干个子字符串,并保存在一个一维数组中
Set cnn =New ADODB.Connection
cnn.OpenConnectstring
IfInStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '非Select语句
cnn.Execute SQL '数据量不大时,可以在连接上,直接执行SQL语句
Msgstring= sTokens(0) & " query successful"
'虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同
Else 'Select语句
Set rst =New ADODB.Recordset
rst.OpenTrim$(SQL), cnn, adOpenKeyset, adLockOptimistic
'得到临时表,游标指向第一条记录
'getRecordCount,
SetExecuteSQL = rst '返回记录集对象
Msgstring= "查询到"& rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
Set rst =Nothing
Set cnn =Nothing
Exit Function
ExecuteSQL_Error:
Msgstring = "查询错误:"& _
err.Description
Resume ExecuteSQL_Exit
End Function
登录窗体主要是连接数据库,我们可以直接连接服务器IP地址,但是在没网的情况下就不能连接上服务器了,在本地的服务器上可以创建数据源连接,适合自己的情况选择连接方式。