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

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

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

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

Public UserName As String

Sub 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.Show
End 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 Function
Public 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_Exit
End Function Public Function Testtxt(txt As String) As Boolean'判定不为空
If Trim(txt) = "" Then
Testtxt = False
Else
Testtxt = True
End If
End 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 Integer Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub Private 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 Sub Private 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 = 0
End Sub

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

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

VB查询数据库之登陆窗体——机房收费总结(一)的更多相关文章

  1. VB查询数据库之终极篇——机房收费系统总结(七)

    机房收费系统总结系列到此就算是要结束了.在做机房收费系统之前,做了学生管理系统,可以说,对机房收费系统的帮助很大. 在机房收费系统中,数据库的查询,数据写入数据库,更改数据库内的信息等一些操作在学生信 ...

  2. VB查询数据库之导出表格——机房收费总结(四)

    在机房收费系统中,有几个窗体需要导出数据到EXCEL表格中,如:学生上机记录查询窗体.学生充值记录查询窗体.收取金额查询窗体等. 前面的几篇总结,大家建议我不要把代码写的太详细,这样,不利于读者思考, ...

  3. VB查询数据库之组合查询——机房收费总结(二)

    在机房收费系统中,组合查询用的还是挺多的,像上机状态查询窗体.学生上机统计信息窗体.操作员工记录窗体.基本信息维护窗体.这其中,学生基本信息维护窗体中的东西比较多,就以它为例子,说说组合查询吧! 学生 ...

  4. VB查询数据库之结账——机房收费系统总结(五)

    对于机房收费的结账,我感觉是所有窗体中,最难的一个.这个窗体我真的做了好多天.它的难度系数我感觉是最高的. 首先,你要理清上机时间和收费标准的关系,在预备时间中,是不收费的. 其次,在超过预备时间,一 ...

  5. VB查询数据库之写入数据库——机房收费系统总结(三)

    在机房收费系统中,新注册的用户,更改的密码,上机下级记录,上机收费记录等等都要写入数据库,这样,后面的查询才能生效.像数据库中写入数据,首先,找到你要写入数据的数据库中的表,在表中建立新的行,让后再把 ...

  6. VB查询数据库之报表——机房收费系统总结(六)

    我们要用一个软件做报表的模板.然后在VB里面添加部件.代码调用模板,详细步骤如下. 一.下载安装 首先做报表要下载安装Grid++Report 4.5 报表设计器 点击下载(内含破解补丁) 二.制作模 ...

  7. .NET分层登陆——机房收费系统再总结

    去年的时候,我写过一篇机房收费系统登陆的总结文章,那是站在VB的基础上,直接查询数据库实现的登陆.是很初期的知识.如果想了解详情,请看VB查询数据库之登陆窗体--机房收费系统总结(一). 今天,我要换 ...

  8. VB.NET版机房收费系统---组合查询

    查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...

  9. VB.NET版机房收费系统—数据库设计

    之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...

随机推荐

  1. bzoj 2956: 模积和 ——数论

    Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ...

  2. Winform MD5

    1:MD5 http://www.cmd5.com/ 字节数组----字符串 //将字节数组中每个元素按照指定的编码格式解析成字符串//直接将数组ToString()//将字节数组中的每个元素ToSt ...

  3. OSI与TCP/IP各层的结构与功能,都有哪些协议

    前言: 今天更新一下计算机网络的一些非常重要的知识,可能很多人都不知学计算机网络有什么用,我想说的是它真的比较重要,像咱们学校只要是学计算机这个专业都要学习这门课程.另外大家要是去一些像BAT,阿里, ...

  4. JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)

    前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ...

  5. Java的9种基本数据类型的大小,以及他们的封装类

    由于java程序是运行在虚拟机之上的,所以java的基本数据类型的大小是确定的,不会随着操作系统的位数的改变而改变. 在计算机中,存储的是0,1,0,1这样的二进制位,表示为bit,1Byte = 8 ...

  6. Django rest framework 版本控制(源码分析)

    基于上述分析 #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 self.initial(request, *args, **kwargs) #2.1处理版本信息 #versi ...

  7. ftrace 简介【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace/index.html Trace 对于软件的维护和性能分析至关重要,ftrace 是 ...

  8. mongodb 学习笔记 2 --- 修改器

    修改器是为了爱update文档时,不需要传入整个文档就能修改当前文档的某个属性值,修改器用法如下: 假设数据库中foo集合中存在如下文档:{"name":"jack&qu ...

  9. myeclipse安装插件phpeclipse后进行PHP代码编写

    平常一般写java代码,有时也捣腾一下php,原来安装过zend studio来编写php代码,无奈电脑越来越卡,于是卸载了zend,然后在myeclipse中安装phpeclipse这款插件来完成p ...

  10. shell中引号的作用(转)

    引号的作用 1 双引号(“”) 1)使用””可引用除字符$(美元符号).`(反引号).\(反斜线)外的任意字符或字符串.双引号不会阻止shell对这三个字符做特殊处理(标示变量名.命令替换.反斜线转义 ...