博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VB查询数据库之登陆窗体——机房收费总结(一)
阅读量:5112 次
发布时间:2019-06-13

本文共 4067 字,大约阅读时间需要 13 分钟。

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

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

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

     

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

Public UserName As StringSub Main()    Dim fLogin As New frmLogin    fLogin.Show vbModal             '显示登录窗体实例    'OK为fMainForm类的成员    If Not fLogin.OK Then '条件选的好        'Login Failed so exit app        End    End If    Unload fLogin    Set fMainForm = New frmMain     '显示主窗体实例    fMainForm.ShowEnd Sub'以文件DSN标记,访问ODBC数据源Public Function ConnectString() As String  ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=**;PassWord=******;Initial Catalog='数据库';Data Source=使用者IP"End FunctionPublic Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset'executes SQL and returns Recordset   Dim cnn As ADODB.Connection   Dim rst As ADODB.Recordset   Dim sTokens() As String      On Error GoTo ExecuteSQL_Error      sTokens = Split(SQL)   Set cnn = New ADODB.Connection   cnn.Open ConnectString      If InStr("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.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic      '得到临时表,游标指向第一条记录      'get RecordCount,      Set ExecuteSQL = rst      MsgString = "查询到" & rst.RecordCount & _         " 条记录 "   End If   ExecuteSQL_Exit:   Set rst = Nothing   Set cnn = Nothing   Exit Function   ExecuteSQL_Error:   MsgString = "查询错误: " & _      Err.Description   Resume ExecuteSQL_ExitEnd FunctionPublic Function Testtxt(txt As String) As Boolean'判定不为空    If Trim(txt) = "" Then        Testtxt = False    Else        Testtxt = True    End IfEnd Function

   

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

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

    

Option Explicit'-----------------------------------------------------------------------------------'窗体:登陆窗体'说明:用户名和密码不能为空,查询用户名,对应的密码,准确无误后进入主界面,引入机器名函数'------------------------------------------------------------------------------------Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long'调用计算机名函数'该类的公有成员Public OK As Boolean'记录登陆次数Dim Count As IntegerPrivate Sub cmdCancel_Click()    OK = False    Me.HideEnd SubPrivate Sub cmdOk_Click() '登陆     Dim txtSQL As String    Dim mrc As ADODB.Recordset    Dim MsgText As String    UserName = ""    If Trim(txtUserName.Text = "") Then '查询用户名是否存在        MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"        txtUserName.SetFocus    Else        txtSQL = "select * from user_Info where userID ='" & txtUserName.Text & "'"        Set mrc = ExecuteSQL(txtSQL, MsgText)                If mrc.EOF Then            MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"            txtUserName.SetFocus        Else            If Trim(mrc.Fields(1)) = Trim(UserID.Text) Then                OK = True                mrc.Close                Me.Hide                UserName = Trim(txtUserName.Text)            Else                MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"                UserID.SetFocus                UserID.Text = ""            End If        End If    End If        Count = miCount + 1'限制登陆次数    If Count = 3 Then        Me.Hide    End If    Exit Sub        End SubPrivate Sub Form_Load()    Dim sBuffer As String    Dim lSize As Long        sBuffer = Space$(255)    lSize = Len(sBuffer)    Call GetUserName(sBuffer, lSize)    'API中字符串做参数,需要提前确定大小        If lSize > 0 Then        txtUserName.Text = ""    Else        txtUserName.Text = vbNullString '空字符串    End If        OK = False    miCount = 0End Sub

     

 

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/lucari/p/4608600.html

你可能感兴趣的文章
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
MyBaits动态sql语句
查看>>
HDU4405(期望DP)
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
mysql基础语句
查看>>
Oracle中的rownum不能使用大于>的问题
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
遍历Map对象
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>