VB查询数据库之登陆窗体——机房收费总结(一)

前端之家收集整理的这篇文章主要介绍了VB查询数据库之登陆窗体——机房收费总结(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

机房收费系统已经做了很长一段时间了,虽然到目前为止,仍然没有结束,但已经结节尾声了。我感觉现在有必要回首总结一下整个机房收费系统。

除了结账做了一半,报表接触一点之外,其他的都基本上差不多了。从做过的这些和正要做的来分析机房收费,我把他分成了几个部分:查询数据库类(简单查询显示,组合查询)、向数据库写入数据类、导出表格类、报表类、各个表格之间相互连接类(结账)。

以登陆窗体为例子,简单总结一下VB查询数据库实现登陆系统。我的登陆窗体设计如下:

设计登陆窗体后,设计登陆模块,代码如下:

  1. Public UserName As String
  2. Sub Main()
  3. Dim fLogin As New frmLogin
  4. fLogin.Show vbModal '显示登录窗体实例
  5. 'OKfMainForm类的成员
  6. If Not fLogin.OK Then '条件选的好
  7. 'Login Failed so exit app
  8. End
  9. End If
  10. Unload fLogin
  11. Set fMainForm = New frmMain '显示主窗体实例
  12. fMainForm.Show
  13. End Sub
  14. '文件DSN标记,访问ODBC数据源
  15. Public Function ConnectString() As String
  16. ConnectString = "Provider=sqlOLEDB.1;Persist Security Info=False;User ID=**;PassWord=******;Initial Catalog='数据库';Data Source=使用者IP"
  17. End Function
  18. Public Function Executesql(ByVal sql As String,MsgString As String) As ADODB.Recordset
  19. 'executes sql and returns Recordset
  20. Dim cnn As ADODB.Connection
  21. Dim rst As ADODB.Recordset
  22. Dim sTokens() As String
  23. On Error GoTo Executesql_Error
  24. sTokens = Split(sql)
  25. Set cnn = New ADODB.Connection
  26. cnn.Open ConnectString
  27. If InStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0))) Then 'Select语句
  28. cnn.Execute sql '数据量不大时,可以在连接上,直接执行sql语句
  29. MsgString = sTokens(0) & " query successful"
  30. '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同
  31. Else 'Select语句
  32. Set rst = New ADODB.Recordset
  33. rst.Open Trim$(sql),cnn,adOpenKeyset,adLockOptimistic
  34. '得到临时表,游标指向第一条记录
  35. 'get RecordCount,
  36. Set Executesql = rst
  37. MsgString = "查询到" & rst.RecordCount & _
  38. " 条记录 "
  39. End If
  40. Executesql_Exit:
  41. Set rst = Nothing
  42. Set cnn = Nothing
  43. Exit Function
  44. Executesql_Error:
  45. MsgString = "查询错误: " & _
  46. Err.Description
  47. Resume Executesql_Exit
  48. End Function
  49. Public Function Testtxt(txt As String) As Boolean'判定不为空
  50. If Trim(txt) = "" Then
  51. Testtxt = False
  52. Else
  53. Testtxt = True
  54. End If
  55. End Function

通过模块,连接到数据库中,然后再设置登陆窗体的代码,在登陆窗体中,点击登陆,先判断用户名和密码是否符合要求,然后进入数据库用户表中,查询用户是否存在,若用户存在,查询密码是否正确,若都正确,则显示主窗体,登陆窗体隐藏。

我的代码如下,仅供参考(欢迎提错)

  1. Option Explicit
  2. '-----------------------------------------------------------------------------------
  3. '窗体:登陆窗体
  4. '说明:用户名和密码不能为空,查询用户名,对应的密码,准确无误后进入主界面,引入机器名函数
  5. '------------------------------------------------------------------------------------
  6. Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String,nSize As Long) As Long'调用计算机名函数
  7. '该类的公有成员
  8. Public OK As Boolean
  9. '记录登陆次数
  10. Dim Count As Integer
  11. Private Sub cmdCancel_Click()
  12. OK = False
  13. Me.Hide
  14. End Sub
  15. Private Sub cmdOk_Click() '登陆
  16. Dim txtsql As String
  17. Dim mrc As ADODB.Recordset
  18. Dim MsgText As String
  19. UserName = ""
  20. If Trim(txtUserName.Text = "") Then '查询用户名是否存在
  21. MsgBox "没有这个用户,请重新输入用户名!",vbOKOnly + vbExclamation,"警告"
  22. txtUserName.SetFocus
  23. Else
  24. txtsql = "select * from user_Info where userID ='" & txtUserName.Text & "'"
  25. Set mrc = Executesql(txtsql,MsgText)
  26. If mrc.EOF Then
  27. MsgBox "没有这个用户,请重新输入用户名!","警告"
  28. txtUserName.SetFocus
  29. Else
  30. If Trim(mrc.Fields(1)) = Trim(UserID.Text) Then
  31. OK = True
  32. mrc.Close
  33. Me.Hide
  34. UserName = Trim(txtUserName.Text)
  35. Else
  36. MsgBox "输入密码不正确,请重新输入!","警告"
  37. UserID.SetFocus
  38. UserID.Text = ""
  39. End If
  40. End If
  41. End If
  42. Count = miCount + 1'限制登陆次数
  43. If Count = 3 Then
  44. Me.Hide
  45. End If
  46. Exit Sub
  47. End Sub
  48. Private Sub Form_Load()
  49. Dim sBuffer As String
  50. Dim lSize As Long
  51. sBuffer = Space$(255)
  52. lSize = Len(sBuffer)
  53. Call GetUserName(sBuffer,lSize)
  54. 'API中字符串做参数,需要提前确定大小
  55. If lSize > 0 Then
  56. txtUserName.Text = ""
  57. Else
  58. txtUserName.Text = vbNullString '空字符串
  59. End If
  60. OK = False
  61. miCount = 0
  62. End Sub

VB查询数据库之登陆窗体到此就结束了,下一篇计划是VB查询数据库之组合查询

猜你在找的VB相关文章