对于机房收费系统,首先了解总共有26个窗体,如果你不够,肯定少了某一个,可能是学生信息维护里面的修改。里面代码主要涉及到对数据库的增删改查。下面的三步分别讲了建立窗体框架,写登录和模块的代码,首页的代码。Let's begin!

       第一步,首先需要建立26个窗体,把控件整理上去,命名也要注意规范,尽量命名成自己理解的英文。比如:查询按钮Commend,你可以命名成cmdInquire!这是建立框架的过程,这个过程不需要太长时间。

       第二步,建立完窗体,就要开始写代码了,先写那个窗体呢?我先写的是登录窗体和模块的代码。这样就可以顺利实现登录功能了。登录窗体代码如下:

<span style="font-size:18px;">'说明:用户名和密码不能为空,查询用户名,对应的密码,准确无误后进入主界面,引入机器名函数
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long    '该类的公有成员
Public OK As Boolean
Dim miCount As Integer                          '记录登录的次数Private Sub cmdCancel_Click()                   '点击取消按钮OK = FalseMe.Hide
End Sub'点击确定按钮
Private Sub cmdOK_Click()Dim txtSQL As StringDim mrc As ADODB.RecordsetDim Msgtext As StringDim mrcc As ADODB.RecordsetDim Msgtext1 As StringDim txtSQL1 As String'检查密码是否正确UserName = ""If Trim(txtUserName1.Text = "") Then        '用户名不能为空MsgBox "请输入用户名!", vbOKOnly + vbExclamation, "提示"txtUserName1.SetFocusElse                                        '调出数据库中User表的数据txtSQL = "select * from User_Info where userID = '" & txtUserName1.Text & "'"Set mrc = ExecuteSQL(txtSQL, Msgtext)If mrc.EOF Then                         '假如数据库中没有此用户MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "提示"txtUserName1.Text = ""txtPassword.Text = ""txtUserName1.SetFocusExit SubElse                                    '判断输入密码是否正确If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) ThenOK = Truemrc.CloseMe.HideUserName = Trim(txtUserName1.Text) '把输入的用户名赋值给UserNamePD = Trim(txtPassword.Text)        '把输入的密码赋值给PDElseMsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbCritical, "提示"txtPassword.SetFocustxtPassword.Text = ""End IfEnd IfEnd If'提取数据库中对应的信息txtSQL = "select * from User_Info where userID = '" & txtUserName1.Text & "'"Set mrc = ExecuteSQL(txtSQL, Msgtext)txtSQL1 = "select * from OnWork_Info "        '调出Onwork数据表Set mrcc = ExecuteSQL(txtSQL1, Msgtext1)mrcc.AddNewmrcc.Fields(0) = UserNamemrcc.Fields(1) = Trim(mrc.Fields(2))mrcc.Fields(2) = Datemrcc.Fields(3) = Timemrcc.Fields(4) = VBA.Environ("computername")  '将当前计算机名写入数据库mrcc.Updatemrcc.ClosemiCount = miCount + 1                          '限制它的输入次数If miCount = 3 ThenMe.HideMsgBox "超过登录限制次数!", vbOKOnly + vbExclamation, "提示"End IfExit SubEnd SubPrivate Sub Form_Load()Dim sBuffer As StringDim lSize As LongsBuffer = Space$(255)lSize = Len(sBuffer)Call GetUserName(sBuffer, lSize)                    '防止存在上一次输入的用户名'API中字符串作参数,需要提前确定大小If lSize > 0 ThentxtUserName1.Text = ""ElsetxtUserName1.Text = vbNullStringEnd IfOK = FalsemiCount = 0End SubPrivate Sub txtUserName1_KeyPress(KeyAscii As Integer)  '文本框只能输入数字Select Case KeyAsciiCase 48 To 57Case 8Case ElseMsgBox "只能输数字!", vbOKOnly + vbExclamation, "提示"KeyAscii = 0txtUserName1.Text = ""txtUserName1.SetFocusEnd SelectEnd Sub
</span>

模块窗体代码如下:

<span style="font-size:18px;">Public UserName As String       '它们是类型变量
Public fMainForm As frmMain
Public p As Integer
Public PD As String
Public Sub AutocolWidth(Form As Form, Grid As MSFlexGrid)  '让MSFLexGrid网格自动适应文本大小'统一窗体和控件文字大小Dim FontSize As IntegerFontSize = Form.FontSizeForm.FontSize = Grid.Font.SizeDim rowNum As Long, colNum As Long, colWidth As DoubleWith Grid                           '遍历每一列For colNum = 0 To .Cols - 1colWidth = 0'遍历每一行,找到最长文本For rowNum = 0 To .Rows - 1If Form.TextWidth(.TextMatrix(rowNum, colNum)) > colWidth ThencolWidth = Form.TextWidth(.TextMatrix(rowNum, colNum))End IfNext'在最长文本长度的基础上增加长度150缇.colWidth(colNum) = colWidth + 150NextEnd WithForm.FontSize = FontSizeEnd SubPublic Sub ExportToExcel(FormName As Form, flex As MSFlexGrid)'导出为Excel表的过程,前者为当前工作的窗体名,后者为控件名Dim xlsApp As ObjectDim xlsBook As ObjectDim xlsSheet As ObjectScreen.MousePointer = vbHourglassSet xlsApp = New Excel.ApplicationSet xlsBook = xlsApp.Workbooks.AddSet xlsSheet = xlsBook.Worksheets(1)On Error GoTo err_procDim i As IntegerDim j As IntegerWith flex                           '将数据写入到Excel表For i = 0 To .Rows - 1For j = 0 To .Cols - 1xlsSheet.Cells(i + 1, j + 1).Value = "'" & .TextMatrix(i, j)Next jNext iEnd WithxlsApp.Sheets(1).Columns.EntireColumn.AutoFit  '自动调整列宽xlsApp.Visible = TrueScreen.MousePointer = vbDefaultExit Suberr_proc:Screen.MousePointer = vbDefaultMsgBox "请确认您的电脑已安装Excel,或是否安装正确!", vbExclamation, "机房收费系统"
End SubSub Main()Dim fLogin As New frmLoginfLogin.Show vbModal                '显示登录窗体实例'OK为frmMain类的成员If Not fLogin.OK Then              '条件选的好End                             '登录失败,所以退出End IfUnload fLoginSet fMainForm = New frmMain        '显示窗体实例fMainForm.Show
End Sub'以文件DSN标记,访问ODBC数据源
Public Function ConnectString() As StringConnectString = "FileDSN=charge_sys.dsn;UID=sa;PWD=123456"
End FunctionPublic Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.RecordsetDim cnn As ADODB.ConnectionDim RST As ADODB.RecordsetDim sTokens() As StringOn Error GoTo ExecuteSQL_ErrorsTokens = Split(SQL)Set cnn = New ADODB.Connectioncnn.Open ConnectStringIf 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.RecordsetRST.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '得到临时表,游标指向第一条记录'get RecordCountSet ExecuteSQL = RSTMsgString = "查询到" & RST.RecordCount & _"条记录"End IfExecuteSQL_Exit:Set RST = NothingSet cnn = NothingExit FunctionExecuteSQL_Error:MsgString = "查询错误:" & _Err.DescriptionResume ExecuteSQL_Exit
End Function
Public Function Testtxt(txt As String) As Boolean                 '利用Testtxt判定不为空If Trim(txt) = "" ThenTesttxt = FalseElseTesttxt = TrueEnd If
End Function
</span>

这样就可以实现顺利登录到首界面了。

        第三步,登录到首界面以后,就需要写首窗体的代码了,如下:

<span style="font-size:18px;">Private Sub cmdOnLine_Click()    '点击上机按钮Dim txtSQLdat As StringDim txtSQL As StringDim strSQL As StringDim strSQL2 As StringDim strSQL3 As StringDim Msgtextdat As StringDim Msgtext As StringDim strMsgText As StringDim strMsgText2 As StringDim strMsgText3 As StringDim mrcdat As ADODB.RecordsetDim mrc As ADODB.RecordsetDim objRst As ADODB.RecordsetDim objRst2 As ADODB.RecordsetDim objRst3 As ADODB.Recordset'让下机日期、下机时间、消费时间、消费金额为空txtOutDate.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""If txtCardNo.Text = "" Then '判断卡号是否为空MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"txtStudentNo.Text = ""txtDepartment.Text = ""txtType.Text = ""txtStudentName.Text = ""txtSex.Text = ""txtOnDate.Text = ""txtOutDate.Text = ""txtAllCash.Text = ""txtOnTime.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""txtCardNo.SetFocusExit SubElse'查询数据库里学生基本信息表Set objRst = New ADODB.RecordsetstrSQL = "select * from student_Info where cardNo = '" & Trim(txtCardNo.Text) & "' and status ='使用'"Set objRst = ExecuteSQL(strSQL, strMsgText)If objRst.BOF And objRst.EOF Then '判断卡号是否存在MsgBox "该卡号未注册!", vbOKOnly + vbExclamation, "提示"txtCardNo.Text = ""txtStudentNo.Text = ""txtDepartment.Text = ""txtType.Text = ""txtStudentName.Text = ""txtSex.Text = ""txtOnDate.Text = ""txtOutDate.Text = ""txtAllCash.Text = ""txtOnTime.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""txtCardNo.SetFocusElseIf objRst.Fields(7) < 1 Then            '判断余额是否充足MsgBox "余额只有" & objRst.Fields(7) & "元, 少于最少金额,请先充值!", vbOKOnly, "提示"txtCardNo.Text = ""txtStudentNo.Text = ""txtDepartment.Text = ""txtType.Text = ""txtStudentName.Text = ""txtSex.Text = ""txtOnDate.Text = ""txtOutDate.Text = ""txtAllCash.Text = ""txtOnTime.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""txtCardNo.SetFocusExit SubElse                                     '判断该卡号是否正在上机Set objRst3 = New ADODB.RecordsetstrSQL3 = "select * from OnLine_Info where cardno = '" & Trim(txtCardNo.Text) & "' "Set objRst3 = ExecuteSQL(strSQL3, strMsgText3)If Not (objRst3.BOF And objRst3.EOF) ThenMsgBox "该卡正在上机!", vbOKOnly + vbExclamation, "提示"txtStudentNo.Text = ""txtDepartment.Text = ""txtType.Text = ""txtStudentName.Text = ""txtSex.Text = ""txtOnDate.Text = ""txtOutDate.Text = ""txtAllCash.Text = ""txtOnTime.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""txtCardNo.SetFocustxtCardNo = ""Exit SubElsetxtSQLdat = "select getdate()"Set mrcdat = ExecuteSQL(txtSQLdat, Msgtextdat)'显示该卡号的一些基本信息txtStudentNo.Text = Trim(objRst.Fields(1))txtDepartment.Text = Trim(objRst.Fields(4))txtType.Text = Trim(objRst.Fields(14))txtStudentName.Text = Trim(objRst.Fields(2))txtSex.Text = Trim(objRst.Fields(3))txtOnDate.Text = Format(mrcdat.Fields(0), "yyyy-mm-dd")txtOnTime.Text = Format(mrcdat.Fields(0), "hh:mm:ss")txtAllCash.Text = Trim(objRst.Fields(7))'将上机前的余额提出来,用于下机时计算余额curAllCash = Trim(objRst.Fields(7))Label1.Caption = "欢迎光临!"'将该卡上机的信息填入到online_Info表里Set objRst2 = New ADODB.RecordsetstrSQL2 = "select * from OnLine_Info"Set objRst2 = ExecuteSQL(strSQL2, strMsgText2)objRst2.AddNewobjRst2.Fields(0) = txtCardNo.TextobjRst2.Fields(3) = txtStudentName.TextobjRst2.Fields(6) = txtOnDate.TextobjRst2.Fields(7) = txtOnTime.TextobjRst2.Fields(1) = txtType.TextobjRst2.Fields(2) = txtStudentNo.TextobjRst2.Fields(4) = txtDepartment.TextobjRst2.Fields(5) = txtSex.TextobjRst2.Fields(8) = VBA.Environ("computername") '显示计算机名字objRst2.Fields(9) = mrcdat.Fields(0)objRst2.UpdateobjRst2.CloseobjRst.CloseEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub cmdOffLine_Click()   '点击下机按钮Dim rstOnLine As ADODB.RecordsetDim rststudent As ADODB.RecordsetDim rstLine As ADODB.RecordsetDim strOff As StringDim strMsg As StringDim rstBasicData As ADODB.RecordsetDim intLineTime As IntegerDim intConsumeTime As IntegerDim curConsume As CurrencyDim curBalance As CurrencyStatic Serical As IntegerDim mrc As ADODB.RecordsetDim Msgtext As StringDim txtSQL As StringtxtSQL = "select getdate()" '读取服务器时间Set mrc = ExecuteSQL(txtSQL, Msgtext)'判断卡号输入框是否为空If txtCardNo.Text = "" ThenMsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"txtCardNo.SetFocusExit SubEnd If'判断卡号输入框是否输入的位数字If Not IsNumeric(txtCardNo.Text) ThenMsgBox "请输入数字!", vbOKOnly + vbExclamation, "提示"txtCardNo.Text = ""txtCardNo.SetFocusExit SubEnd If'判断卡是否在线strOff = "select * from OnLine_Info where cardno = '" & txtCardNo.Text & "'"Set rstOnLine = ExecuteSQL(strOff, strMsg)If rstOnLine.EOF ThenMsgBox "该卡还没有上机!", vbOKOnly + vbExclamation, "提示"txtCardNo.Text = ""txtStudentNo.Text = ""txtDepartment.Text = ""txtType.Text = ""txtStudentName.Text = ""txtSex.Text = ""txtOnDate.Text = ""txtOutDate.Text = ""txtAllCash.Text = ""txtOnTime.Text = ""txtOutTime.Text = ""txtPayTime.Text = ""txtPayMoney.Text = ""txtCardNo.SetFocusExit SubEnd If'查询基本数据表,获得设定的基本数据strOff = "select * from BasicData_Info"Set rstBasicData = ExecuteSQL(strOff, strMsg)'计算消费时间,{实际上线时间=上机时间-下机时间,'消费时间=取整((实际在线时间-准备时间)/递增单位时间)* 递增单位时间 ,'在此的时间单位均为分钟,取整必须用round函数四舍五入,不可用int或Fix函数}intLineTime = DateDiff("n", rstOnLine.Fields(9), Format(mrc.Fields(0), "yyyy-mm-dd hh:mm:ss"))'判断实际在线时间是否小于准备时间If intLineTime <= rstBasicData!PrepareTime ThenintLineTime = 0         '在线时间为零Else                        '判断实际在线时间是否小于最低消费时间If intLineTime < rstBasicData!leasttime ThenintLineTime = rstBasicData!leasttimeEnd IfEnd If'查询学生信息表strOff = "select * from student_Info where cardno= '" & txtCardNo.Text & "' and status ='使用'"Set rststudent = ExecuteSQL(strOff, strMsg)If Trim(rststudent.Fields(14)) = Trim("固定用户") Then'计算消费金额 【消费金额=消费时间/60分钟 * 1小时费率】curConsume = Round(Round(intLineTime / 60, 4) * rstBasicData!Rate, 2)ElsecurConsume = Round(Round(intLineTime / 60, 4) * rstBasicData!tmpRate, 2)End If'判断消费金额是否小于最低消费金额If curConsume > 0 And curConsume < rstBasicData!Limitcash ThencurConsume = rstBasicData!LimitcashEnd If'计算余额 【账户余额 = 原账户余额 - 消费金额】curBalance = Val(rststudent!cash) - curConsume'下机信息显示txtCardNo.Text = rstOnLine!cardnotxtType.Text = rstOnLine!cardtypetxtStudentNo.Text = rstOnLine!studentnotxtStudentName.Text = rstOnLine!studentNametxtSex.Text = rstOnLine!sextxtDepartment.Text = rstOnLine!departmenttxtOnDate.Text = rstOnLine!OndatetxtOnTime.Text = rstOnLine!OnTimetxtOutDate.Text = Format(mrc.Fields(0), "yyyy-mm-dd")txtOutTime.Text = Format(mrc.Fields(0), "hh:mm:ss")Label1.Caption = "欢迎下次再来!"txtPayTime.Text = intLineTimetxtPayMoney.Text = curConsumetxtAllCash.Text = curBalance'更新学生信息表的余额rststudent!cash = curBalancerststudent.Updaterststudent.Close'更新上机记录表strOff = "select * from Line_Info "Set rstLine = ExecuteSQL(strOff, strMsg)rstLine.AddNew          '增加新行,在临时列表中rstLine.Fields(1) = Trim(txtCardNo.Text)rstLine.Fields(3) = Trim(txtStudentName.Text)rstLine.Fields(2) = Trim(txtStudentNo.Text)rstLine.Fields(4) = Trim(txtDepartment.Text)rstLine.Fields(5) = Trim(txtSex.Text)rstLine.Fields(6) = Trim(txtOnDate.Text)rstLine.Fields(7) = Trim(txtOnTime.Text)rstLine.Fields(8) = Trim(txtOutDate.Text)rstLine.Fields(9) = Trim(txtOutTime.Text)rstLine.Fields(10) = Trim(txtPayTime.Text)rstLine.Fields(11) = Trim(txtPayMoney.Text)rstLine.Fields(12) = Trim(txtAllCash.Text)rstLine.Fields(13) = "正常下机"rstLine.Fields(14) = VBA.Environ("computername")rstLine.Update      '更新数据库rstLine.Close'删除相应的在线卡状态表记录rstOnLine.DeleteEnd SubPrivate Sub Form_Load()Dim mrc As ADODB.RecordsetDim txtSQL, Msgtext As StringtxtSQL = "select * from User_Info where Level= '" & "操作员" & "'"Set mrc = ExecuteSQL(txtSQL, Msgtext)Do While Not mrc.EOFIf UserName = Trim(mrc.Fields(0)) ThenmnuManager.Visible = False     '如果登录名是操作员则管理员界面不可见End Ifmrc.MoveNextLooptxtSQL = "select * from User_Info where Level ='" & "一般用户" & "'"Set mrc = ExecuteSQL(txtSQL, Msgtext)Do While Not mrc.EOF                   '如果登录名是一般用户,管理员和操作员界面不可见If UserName = Trim(mrc.Fields(0)) ThenmnuManager.Visible = FalsemnuOprator.Visible = FalseEnd Ifmrc.MoveNextLoopEnd SubPrivate Sub Form_Unload(Cancel As Integer) '关闭主窗体提示Dim mrc As ADODB.RecordsetDim txtSQL As StringDim Msgtext As StringDim Msgtext1 As StringDim txtSQL1 As StringDim mrcc As ADODB.RecordsetDim x As StringDim mrcdat As ADODB.RecordsetDim txtSQLdat As StringDim Msgtextdat As StringtxtSQLdat = "select getdate()"Set mrcdat = ExecuteSQL(txtSQLdat, Msgtextdat)'窗口关闭提示x = MsgBox("你确定要退出系统吗?", vbYesNo, "提示")If x = vbYes ThentxtSQL = "select * from User_Info where userID='" & UserName & "'"Set mrc = ExecuteSQL(txtSQL, Msgtext)a = Trim(mrc.Fields(2))txtSQL = "select * from Onwork_Info "Set mrc = ExecuteSQL(txtSQL, Msgtext)b = Trim(mrc.Fields(2))c = Trim(mrc.Fields(3))'工作记录表中的信息更新txtSQL = "select * from worklog_Info where UserID = '" & UserName & "' And  status = '" & "true" & "'"Set mrcc = ExecuteSQL(txtSQL, Msgtext)mrcc.AddNewmrcc.Fields(1) = UserNamemrcc.Fields(2) = amrcc.Fields(3) = bmrcc.Fields(4) = cmrcc.Fields(5) = Format(mrcdat.Fields(0), "yyyy-mm-dd")mrcc.Fields(6) = Format(mrcdat.Fields(0), "hh:mm:ss")mrcc.Fields(7) = VBA.Environ("computername")mrcc.Fields(8) = "False"mrcc.Updatemrcc.Close'删除正在上机信息txtSQL1 = "delete from OnWork_Info "Set mrc = ExecuteSQL(txtSQL1, Msgtext1)End                            '结束工程ElsefrmMain.ShowEnd If
End SubPrivate Sub mnuAbout_Click()              '关于窗体显示frmAbout.Show
End SubPrivate Sub mnuBasicDataSetting_Click()   '基本数据设定窗体frmBasicDataSetting.Show
End SubPrivate Sub mnuCancel_Click()             '退卡窗体frmCancel.Show
End SubPrivate Sub mnuCloseAccounts_Click()      '结账窗体显示frmCloseAccounts.Show
End Sub
Private Sub mnuDayBill_Click()            '日结账单显示frmDayBill.Show
End SubPrivate Sub mnuDeleOrAddUser_Click()      '增加或者删除用户窗体显示 frmDeleOrAddUser.Show
End SubPrivate Sub mnuDutyTeacher_Click()        '值班老师窗体显示 frmDutyTeacher.Show
End SubPrivate Sub mnuExit_Click()               '退出工程Unload Me
End SubPrivate Sub mnuLookRecord_Click()        '查看学生上机记录窗体frmLookSJRecord.Show
End SubPrivate Sub mnuExplain_Click()           '说明窗体frmExplain.Show
End SubPrivate Sub mnuGatherSum_Click()        '收取金额查询窗体frmGatherSum.Show
End SubPrivate Sub mnuInfoUphold_Click()       '学生基本信息维护窗体frmInfoUphold.Show
End SubPrivate Sub mnuInquirySJInfo_Click()    '查询学生上机信息窗体frmInquirySJInfo.Show
End SubPrivate Sub mnuLookRemain_Click()       '查看余额窗体frmLookRemain.Show
End SubPrivate Sub mnuLookSJRecord_Click()     '查看上机记录窗体frmLookSJRecord.Show
End SubPrivate Sub mnuLookSJState_Click()      '查看学生上机状态frmLookSJState.Show
End SubPrivate Sub mnuModifyPassword_Click()    '修改密码窗体显示frmModifyPassword.Show
End SubPrivate Sub mnuOperateWkRecord_Click()   '操作员工作记录窗体显示 frmOperateWkRecord.Show
End SubPrivate Sub mnuRecharge_Click()         '充值窗体显示frmRecharge.Show
End SubPrivate Sub mnuRechargeRecord_Click()   '充值记录窗体显示frmRechargeRecord.Show
End SubPrivate Sub mnuRegister_Click()        '注册窗体显示  frmRegister.Show
End SubPrivate Sub mnuSumBack_Click()        '金额返还信息查询frmSumBack.Show
End SubPrivate Sub mnuWeekBill_Click() '周结账单窗体显示frmWeekBill.Show
End SubPrivate Sub Timer1_Timer()      '在窗口添加动态时间Dim mrc As ADODB.RecordsetDim txtSQL As StringDim Msgtext As StringtxtSQL = "select getdate() "Set mrc = ExecuteSQL(txtSQL, Msgtext)Label18.Caption = Format(mrc.Fields(0), "yyyy-mm-dd hh:mm:ss")
End SubPrivate Sub Timer2_Timer()      '利用Timer事件来实时统计当前上机人数Dim Msgtext As String
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim SJ As StringSJ = 0txtSQL = "select * from OnLine_Info "Set mrc = ExecuteSQL(txtSQL, Msgtext)Do While Not mrc.EOFSJ = SJ + 1mrc.MoveNextLoopmrc.CloseLabel24.Caption = Val(SJ)End Sub'卡号窗体只能输入数字
Private Sub txtCardNo_KeyPress(KeyAscii As Integer)Select Case KeyAsciiCase 48 To 57Case 8Case ElseMsgBox "只能输数字!", vbOKOnly + vbExclamation, "提示"KeyAscii = 0txtCardNo.Text = ""txtCardNo.SetFocusEnd SelectEnd Sub
</span>

        好的,做完这三步,就可以开始写各个窗体的代码了,其中涉及到对数据库的增删改查,下一篇博客我会再仔细分析这26个窗体各涉及到什么操作!希望这篇博客对大家有帮助!

机房收费系统——概览相关推荐

  1. 机房收费系统总结【1】-整体流程

    前言: 拖了3个月终于学完了机房收费,真正做机房的时间不到一个月,拖了好久,不应该! 以后,在学习的过程中遇到的问题(计算机+心得体会)在今目标的项目上简单标注! 这个过程中自己解决的问题博客总结!还 ...

  2. 机房收费系统【VB版】——选择下机

    前言: 今天实现机房收费系统--一般用户--学生上机状态查看--选中全部/部分下机部分收获很多!多亏了看光哥的博客,写的很清楚机房收费系统--上机状态查询之下机 过程: 要显示的表格式写查询,就会出来 ...

  3. 机房收费系统【VB版】——上下机

    前言: 机房收费系统三大难点之一--上下机,需要一点一点开始分析,不断完善自己的逻辑,然后对照逻辑[查表--更新--显示],编写代码. 逻辑流程图: 注意 计算消费金额: 总结: 其实这里自己应该反思 ...

  4. 机房收费系统【VB版】——前期准备

    前言: 没有源码和参考的机房收费系统,很犯怵的开始,完全不懂如何下手,经过后来小伙伴的交流和巨人的博客. 准备: 1.安装机房收费系统程序 1.1添加ODBC数据源--添加文件DSN--附加数据库-- ...

  5. 机房收费系统系列一:运行时错误‘-2147217843(80040e4d)’;用户‘sa’登陆失败...

    做机房收费系统的时候,首先在SQL server数据库中添加好charge数据库(在对象资源管理器中,右击数据库,点击附加,找到charge的mdf文件,点击确定),然后用ODBC配置好数据库,把机房 ...

  6. 机房收费系统(VB.NET)——超具体的报表制作过程

    之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...

  7. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  8. 机房收费系统-- MDI子窗体显示技巧(续vb.net版)

    在vb6.0版的机房收费系统中说道过这个问题,回顾请点击:http://blog.csdn.net/chenjinge7/article/details/8231546这次在vb.net版本中想再次利 ...

  9. 机房收费系统=三层+设计模式

    在简单的三层登陆完成之后,我又在其中加入了设计模式,其中包括抽象工厂+反射和外观模式.关于设计模式,在学习三层之前我们已经系统的学习过,可是在这次往机房收费系统中加设计模式时,还是感觉无从下手,出现了 ...

最新文章

  1. SpringMVC 异常统一处理
  2. Java 和 .NET 获得毫秒级长整型数值的差异和解决
  3. HDU 5044 Tree 树链剖分
  4. OSPF多区域配置与汇总
  5. 《Fabric 云存储的电子健康病历系统》(3)病历结构体API
  6. 曲线抽稀 java_Python实现曲线点抽稀算法
  7. android init重启service(进程)
  8. oracle10g sql on条件,ORACLE 10G使用SQLNET.ORA限制IP登陆
  9. Python读写文本文件
  10. Cocos BabeLua配置
  11. 汉字笔顺动画C端实现B端原理 - [大力智能 前端]
  12. iTerm2配置(rz/sz命令)
  13. 8-9 魔术师_动画魔术师:将作弊变成艺术形式的8种方法
  14. voyage-linux系统,从Live CD安装Voyage linux到硬盘
  15. 鴻海董事長郭台銘先生的話
  16. 华为云服务器扩容挂盘失败fstab文件配置错误无法开机及进入单用户模式
  17. Debian 12 Bookworm 尝鲜记
  18. php写彩票中奖代码,php简单中奖算法(实例)
  19. C语言scanf输入数组数值
  20. 文件,文件夹对比工具(Beyond Compare)

热门文章

  1. 怎样在c语言程序里面添加图片,C语言 使用图形库(Easy X)绘制界面及程序添加音乐...
  2. 20201125英语单词学习(仅供自己记录)
  3. python处理Excel实现自动化办公教学(含实战)【一】
  4. 数据分析不再是热门职位,而是必备技能
  5. 亲身经历微软办公软件国际认证MOS考试
  6. 太阳能路灯行业调研报告 - 市场现状分析与发展前景预测
  7. 大数据时代的“小数据 系列3 --Shapiro-Wilk检验
  8. Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
  9. python实现手机通讯录_Python 结合MYSQL实现通讯录
  10. Deepin-TIM和QQ无法加载图片和头像的解决方法