VB+Access学生公寓管理系统 第10页
图4.18请假记录删除效果图
②界面制作与实现方法
这个窗体与上面不同的是多了一个姓名条件,其它的都基本一致。由于在一个公寓中会有很多人要得名,但是在某一公寓某一寝室中只会有一个人,这也是一个公寓分配住宿人员时的基本标准,因为这样也便于公寓本身的管理。此删除窗体只有单条删除与上面不同,单条删除部分代码如下:
If (MsgBox("你真的想删除日期为 " & Combo1.Text & " 公寓为 " & Text1.Text & " 寝室为 " & Text2.Text & " 姓名为 " & Text3.Text & " 的请假记录吗?", vbOKCancel, "系统提示")) = vbOK Then
Adodc1.Refresh
Adodc1.Recordset.ActiveConnection.Execute "delete from qingjia where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 寝室='" & Trim(Text2.Text) & "'and 姓名='" & Trim(Text3.Text) & "'" ', , adExecuteNoRecords
Adodc1.Recordset.Update
Combo1.Text = ""
Text1.Text = ""
Text2.Text = ""
MsgBox "删除成功", , "系统提示"
End If
4.8.3 违规删除
①效果图
图4.19违规记录删除效果图
②界面制作与实现方法
违规删除操作与请假删除操作基本一致,不同之处只是在于后台对不同的表进行处理,前台界面大体相同。其实现方法与上现的也差不太多,这里就不在叙述。
单条删除记录:
Dim sql As String
Dim s As String
Dim panduan As Boolean
If Combo1.Text = "" And Text1.Text = "" And Text2.Text = "" Then
MsgBox "请输入删除条件!", , "提示"
Exit Sub
End If
s = Combo1.Text
If (MsgBox("你真的想删除日期为 " & Combo1.Text & " 公寓为 " & Text1.Text & " 寝室为 " & Text2.Text & " 姓名为 " & Text3.Text & " 的违规记录吗?", vbOKCancel, "系统提示")) = vbOK Then
Adodc1.Refresh
Adodc1.Recordset.ActiveConnection.Execute "delete from weigui where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 寝室='" & Trim(Text2.Text) & "' and 姓名='" & Trim(Text3.Text) & "'" ', , adExecuteNoRecords
Adodc1.Recordset.Update
Combo1.Text = ""
Text1.Text = ""
Text2.Text = ""
MsgBox "删除成功", , "系统提示"
End If
Unload Me
成批删除记录:
If (MsgBox("你真的想删除日期为 " & Combo2.Text & " 的记录吗?", vbOKCancel, "系统提示")) = vbOK Then
Adodc1.Refresh
Adodc1.Recordset.ActiveConnection.Execute "delete from weigui where 日期='" & Trim(Combo2.Text) & "'"
Combo2.Text = ""
MsgBox "删除成功", , "系统提示"
End If
Unload Me
删除所有记录:
If (MsgBox("你真的想删除所有的记录吗?一旦删除即不可恢复", vbOKCancel, "系统提示")) = vbOK Then
For I = 1 To Adodc1.Recordset.RecordCount
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
Next I
End If
MsgBox "删除成功", , "系统提示"
Unload Me
4.8.4 资产删除
①效果图
图4.20资产删除效果图
② 界面制作与实现方法
与卫生记录删除不同的是寝室改为了名称。值得注意的是,此处公寓与名称都要人工输入,所以在输入的时候要注意不要有多余字符,否则会出错删除不掉的情况。单条删除部分源码如下:
If (MsgBox("你真的想删除日期为 " & Combo1.Text & " 公寓为 " & Text1.Text & " 名称为 " & Text2.Text & " 的资产记录吗?", vbOKCancel, "系统提示")) = vbOK Then
Adodc1.Refresh
Adodc1.Recordset.ActiveConnection.Execute "delete from zichan where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 名称='" & Trim(Text2.Text) & "'" ', , adExecuteNoRecords
Adodc1.Recordset.Update
Combo1.Text = ""
Text1.Text = ""
Text2.Text = ""
MsgBox "删除成功", , "系统提示"
End If
4.9值班记录
值班记录这项可以说是此软件的一个新增功能。它的界面小巧,并且它可以让值班人员记录前天发生的一些事情,字数在1000字左右。可以说是一个小型的日记本。
4.9.1 值班记录
①值班记录效果图
图4.21值班记录效果图
② 实现思想与功能
此窗体的功能以及其源代码是经过修改之后而形成的,源文件是一个电子记事本,发现后经过修改后做出一个日记本。
在上面的日期后面的文本框中,你可以输入如窗口标题后面所示的日期格式后,点击查看,即可以查看到所选日期的详细记录。这是一种查询方法,当然你也可以用右面简单的上一条与下一条进行快速查看,但是它只能查看当日日期起开始的记录,如果与你所想要查看的日期相差很远,那么你就需要使用第一种方法了。
这个日记本还支持修改与删除功能。当你想编辑或删除某一日期的时候时,你需要用查看方法找到该记录,然后对当前记录使用编辑或删除即可完成操作。删除后,记录即不可恢复,且此日记目前还没有备份功能,慎重操作。
如果你今天值班,还没有写值班记录,那么你可以点击增加按钮,开始写当日的值班记录,说明的是,每天只可以写一次记录。当你写完今天记录后,在点击增加时会提示你今日已写完。但是你可以对今日记录进行编辑修改。
本程序源码较为复杂,主要都是对文件进行操作,并没有把记录添加到数据库中,所以不支持备份操作,且本窗体中的操作程序还用到了一个模块。部分代码如下:
查看上一条记录:
If giCurrentRecord > 1 Then
giCurrentRecord = giCurrentRecord - 1
ReadData (giCurrentRecord)
End If
查看下一条记录:
If giCurrentRecord < giRecordCount Then
giCurrentRecord = giCurrentRecord + 1
ReadData (giCurrentRecord)
End If
查询数据:
Dim I%
For I = 1 To giRecordCount
If goDiarys(I).fldDate = sql Then
giCurrentRecord = I
FindData = True
Exit For
End If
Next
ReadData giCurrentRecord
修改数据:
Dim iFreefile%, I%
iFreefile = FreeFile()
Open gsPath & "DATA.DAT" For Random As #iFreefile Len = Len(goDiary)
goDiarys(giCurrentRecord).fldDate = frminput.txtDate
goDiarys(giCurrentRecord).fldMemo = frminput.txtMemo
goDiary = goDiarys(giCurrentRecord)
Put #iFreefile, giCurrentRecord, goDiary
ReadData (giCurrentRecord)
Close #iFreefile
ModifyData = True
删除日记中的记录:
If txtDate = "" Then
MsgBox "请选择记录!", , "每日一记"
Exit Sub
End If
Dim Result
If giRecordCount = 0 Then Exit Sub
Result = MsgBox("确定删除记录吗?不可恢复", vbQuestion + vbYesNo, "电子日记本")
If Result = vbYes Then
DeleteData
gbFirst = False
If giCurrentRecord > 1 Then giCurrentRecord = giCurrentRecord - 1
Form_Load
End If
4.9.2 增加记录
①增加记录效果图
图4.22增加记录效果图
② 实现思想与程序源码
日期后显示当前日期,但是可以修改。每篇记录的字数要求在1000字以内。支持对当前字符输入的统计,确定完成本日记录后,点击保存即可。
部分代码如下:
Dim bSaved As Boolean, bCF
If txtDate = "" Or txtMemo = "" Then Exit Sub ' 如果记录未填,则退出
If riji.Tag = "addnew" Then
If giRecordCount >= 1 Then '新增时,检查记录是否重复
gsSql = frminput.txtDate
bCF = FindData(gsSql)
If bCF Then
MsgBox "今天你已经写过日记了!", vbExclamation + vbOKOnly, "每日一记"
txtMemo.SetFocus
Exit Sub
End If
End If
giRecordCount = giRecordCount + 1
bSaved = WriteData()
ElseIf riji.Tag = "modify" Then '
bSaved = ModifyData()
End If
If bSaved = True Then
AddNext = MsgBox("保存完毕!", vbExclamation + vbOKOnly, "每日一记")
End If
Unload Me
由于此段代码中用到了一个模块,在模块中定义了很多过程,各过程实现功能及代码如下所示:
读取数据:
Public Sub ReadData(curRecord As Integer) '读取数据
On Error Resume Next
Dim strcaption$
riji.txtDate = goDiarys(curRecord).fldDate
riji.txtMemo = goDiarys(curRecord).fldMemo
strcaption = "每日一记 [" & Date & "] " & Time & " " & WeekdayName(Weekday(Date)) & " 记录:" & giCurrentRecord & "/" & giRecordCount
riji.Caption = strcaption
End Sub
查询数据:
Public Function FindData(sql As String) As Boolean '查询数据
On Error Resume Next
Dim I%
For I = 1 To giRecordCount
If goDiarys(I).fldDate = sql Then
giCurrentRecord = I
FindData = True
Exit For
End If
Next
ReadData giCurrentRecord
End Function
新增数据:
Public Function WriteData() As Boolean '新增数据
On Error Resume Next
Dim iFreefile%, I%
iFreefile = FreeFile()
Open gsPath & "DATA.DAT" For Random As #iFreefile Len = en(goDiary)
ReDim Preserve goDiarys(giRecordCount)
goDiarys(giRecordCount).fldDate = frminput.txtDate
goDiarys(giRecordCount).fldMemo = frminput.txtMemo
goDiary = goDiarys(giRecordCount)
Put #iFreefile, giRecordCount, goDiary
giCurrentRecord = giRecordCount
ReadData (giCurrentRecord)
Close #iFreefile
WriteData = True
End Function
修改数据:
Public Function ModifyData() As Boolean '修改数据
On Error Resume Next
Dim iFreefile%, I%
iFreefile = FreeFile()
Open gsPath & "DATA.DAT" For Random As #iFreefile Len =len(goDiary)
goDiarys(giCurrentRecord).fldDate = frminput.txtDate
goDiarys(giCurrentRecord).fldMemo = frminput.txtMemo
goDiary = goDiarys(giCurrentRecord)
Put #iFreefile, giCurrentRecord, goDiary
ReadData (giCurrentRecord)
Close #iFreefile
ModifyData = True
End Function
删除数据:
Public Sub DeleteData() '删除数据
On Error Resume Next
Dim iFreefile%, I%, J%
I = 1: J = 1
iFreefile = FreeFile()
Open gsPath & "temp.dat" For Random As #iFreefile Len = Len(goDiary)
goDiarys(giCurrentRecord).fldMemo = "IWantToKillIt*" & goDiarys(giCurrentRecord).fldMemo '加删除标记
For I = 1 To giRecordCount '无删除标记的记录保存到临时文件,TEMP.DAT
If Left(goDiarys(I).fldMemo, 14) <> "IWantToKillIt*" Then
goDiary = goDiarys(I)
Put #iFreefile, J, goDiary '在此必须有I,J两个变量,因为使用二进制保存文件,
J = J + 1 '从1开始到后面,中间如有间隔就会出现乱码
End If
Next
Close #iFreefile
Kill gsPath & "data.dat"
Name gsPath & "temp.dat" As gsPath & "data.dat"
riji.txtDate = ""
riji.txtMemo = ""
End Sub
说明:由于本人能力有限,对文件部分还不算是很了解,这个功能的实现主要是借用了网上的一个电子记事本。本人只是对其做了一些修改,做成了这个每日一记,但个人认为此功能还算是可以。
4.10 Help制作
Help文档的制作也标志着本软件基本完成。制作help文档需要一个专业制作软件,本人使用的是破解版的QuickCHM,此软件无论在功能上还在是操作上用起来都是很方便。
QuickCHM软件的界面及其使用如下:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>