沈 阳 大 学
课程设计说明书 NO.11
发工资的内容不需用户添写,在添写完其它工资内容后点击开始统计按钮将员工的收入与支出金额相减得出实发工资项。最后单击确认,将所填数据存入数据库中。工资管理的修改与删除同样需要以列表的形式如图2.12显示:
图2.12 员工工资列表
作为子窗体的员工工资列表能够清楚的表现员工各项收入与支出的金额。选择修改可以对所选数据进行编辑,也同样可以点击鼠标右键选择所需要的操作。在数据环境中添加Command命令,并设置命令属性:在SQL语句中输入select * from按姓名和按工号复合查询的两种方式和其它模块不同的是员工工资管理填加了一个工资报表窗体。选择主窗体中的工资报表菜单即会显示该窗体。员工工资报表窗体如图2.13所示:
图2.13 员工工资报表
沈 阳 大 学
课程设计说明书 NO.12
工资报表窗体作为子窗体来显示。窗口主要分成工具条和预览效果两部分,预览效果显示的就是最终打印的结果。在下面的工具条上包括4个页面浏览按钮。在上面工具条的下拉列表框中选择需要显示的比例。别外两个按钮分别用来实现打印与导出操作。如果要打印的工资报表有多页,可以通过4个页面浏览按钮进行上下翻页。
此模块通过工资管理的创建,着重描述了工资计算和数据报表的使用。计算主要是通过对所输入的数据进行相加和相减的运算,最后显示结果数据。数据报表为我们提供了一个更加方便快捷地实现报表打印的方法。通过使用报表中的各种控件,可以很简单地实现复杂报表的设计,避免了繁杂的编程过程。
2.4.6系统源代码
Public fMainForm As frmmain
Public gintMode As Integer
Public flagEdit As Boolean
Public username As String
Sub Main()
Dim fLogin As New frmlogin
fLogin.Show vbModal
If Not fLogin.OK Then
End
End If
Unload fLogin
Set fMainForm = New frmmain
fMainForm.Show
End Sub
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.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", _
沈 阳 大 学
课程设计说明书 NO.13
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
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 ConnectString() As String
ConnectString = "FileDSN=renshi.dsn"
End Function
员工基本信息模块代码:
Option Explicit
Dim mblchange As Boolean
Public txtSQL As String
Public msgtext As String
Dim mrc As ADODB.Recordset
Private Sub cmdcancle_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
Dim intCount As Integer
Dim txtSQL As String
Dim MsgString As String
沈 阳 大 学
课程设计说明书 NO.14
Dim sMeg As String
Dim i As Integer
For intCount = 0 To 1
If Trim(Text1(intCount) & "") = "" Then
Select Case intCount
Case 0
sMeg = "工号"
Case 1
sMeg = "姓名"
End Select
sMeg = sMeg & "不能为空"
MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
Text1(intCount).SetFocus
Exit Sub
End If
Next intCount
If Trim(Text1(3) & "") = "" Then
MsgBox "出生日期不能为空", vbOKOnly + vbExclamation, "警告"
End If
If Trim(Text1(3) & "") <> "" Then
If Not IsDate(Text1(3)) Then
MsgBox "出生日期应为(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
Text1(3).SetFocus
Exit Sub
Else
751com.cn vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
If gintMode = 1 Then
txtSQL = "select * from dangan where ygid='" & Trim(Text1(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, msgtext)
If mrc.EOF = False Then
MsgBox "有重复记录", vbOKOnly + vbExclamation, "警告"
Text1(0).SetFocus
End If