📄 frmlostbook.frm
字号:
DTP罚款日期(0).Enabled = True
DTP罚款日期(1).Enabled = True
Else
DTP罚款日期(0).Enabled = False
DTP罚款日期(1).Enabled = False
End If
End Sub
Private Sub chk图书编号_Click()
If chk图书编号.Value Then
txt图书编号(0).Enabled = True
Else
txt图书编号(0).Enabled = False
End If
End Sub
Private Sub cmb罚款原因_Click()
Dim i As Integer
Dim rowNum As Integer
Dim reason As String
If cmb罚款原因.ListIndex = 0 Then
reason = "过期罚款"
Else
reason = "图书损失"
End If
If cmb罚款原因.ListIndex = 2 Then '显示全部罚款信息
Call fineAllBook
Exit Sub
End If
'在fineGrid表格中只显示reason的数据
With fineGrid
If (.Rows >= 2) Then
rowNum = .Rows
i = 1
Do While i < rowNum
If Trim(.TextMatrix(i, 9)) <> reason Then
If .Rows = 2 Then
.Rows = 1
Exit Sub
Else
.RemoveItem i
.Refresh
i = i - 1
End If
End If
i = i + 1
rowNum = .Rows
Loop
End If
End With
End Sub
Private Sub cmdborrowed_Click()
frmreaderlostbook_choose.Show 1
End Sub
Private Sub cmdexec_Click()
Dim rs As New ADODB.Recordset
Dim sql, sql2, sql3 As String
sql = "select * from fkxxb where 读者编号 = '" & Trim(txt读者编号(1).Text) & "' and 图书编号 = '" & _
Trim(txt图书编号(1).Text) & "' and DateDiff( 'd','" & DTP罚款日期(2).Value & "',罚款日期) =0 "
If txt读者编号(1).Text = "" Then
MsgBox "请选择要罚款的读者和对应的书的信息!", vbOKOnly + vbInformation, "信息"
ElseIf Val(txt损失数量.Text) <= 0 Then
MsgBox "请填写损失数量的值", vbOKOnly + vbInformation, "信息"
Else
Set rs = TransactSQL(sql)
If rs.EOF Then
sql = "insert into fkxxb values('" & Trim(txt图书编号(1).Text) & "','" & Trim(txt图书名称.Text) & _
"','" & Trim(txt读者编号(1).Text) & "','" & Trim(txt读者姓名.Text) & "'," & Format(Val(txt图书价格.Text), "0.00") & _
"," & Val(txt损失数量.Text) & "," & Format(Val(txt应罚金额.Text), "0.00") & "," & _
Format(Val(txt实收金额.Text), "0.00") & ",'" & DTP罚款日期(2).Value & "','图书损失','" & user & "')"
TransactSQL (sql) '向fkxxb罚款信息表插入一条记录
Else
rs.Fields(5) = rs.Fields(5) + Val(txt损失数量.Text)
rs.Fields(8) = DTP罚款日期(2).Value
rs.Fields(10) = user
rs.Update
End If
'先对书进行归还工作
sql = "update tsxxb set 借阅数量 = 借阅数量 - " & Val(txt损失数量.Text) & " where 读者编号 = '" & Trim(txt读者编号(1).Text) & "'And 图书编号 = '" & Trim(txt图书编号(1).Text) & "' And DateDiff( 'd','" & Trim(txt借阅日期.Text) & "',借阅日期) =0 "
sql2 = "delete from jsxxb where 读者编号 = '" & Trim(txt读者编号(1).Text) & "'And 图书编号 = '" & Trim(txt图书编号(1).Text) & "' And DateDiff( 'd','" & Trim(txt借阅日期.Text) & "',借阅日期) =0 "
sql3 = " update tsxxb set 现存量 = 现存量 - " & Val(txt损失数量.Text) & " where 图书编号 = '" & Trim(txt图书编号(1).Text) & "'"
If Val(txt损失数量.Text) = Val(txt借阅数量.Text) Then
TransactSQL (sql2)
Else
TransactSQL (sql) '更新借阅数量
TransactSQL (sql3) '更新现存量
End If
'再进行注销
If chkdel.Value Then
sql2 = "insert into zxxxb values('" & Trim(txt图书编号(1).Text) & "'," & Val(txt损失数量.Text) & ",'" & _
Format(Now, "YYYY-MM-DD") & "','" & user & "')"
TransactSQL (sql2) '在zxxxb注销信息表中添加一条新记录
'更新图书信息表中的记录
sql = "select * from tsxxb where 图书编号='" & Trim(txt图书编号(1).Text) & "'"
Set rs = TransactSQL(sql)
If (rs(13) - Val(txt损失数量.Text)) > 0 Then
rs(15) = "否"
Else
rs(15) = "是"
End If
'rs(12) = rs(12) - Val(txt损失数量.Text)
rs(13) = rs(13) - Val(txt损失数量.Text) '库存总量减少
rs.Update
End If
'添加记录到当前窗体的显示表格fineGrid中
fineGrid.AddItem Trim(txt图书编号(1).Text) & vbTab & Trim(txt图书名称.Text) & _
vbTab & Trim(txt读者编号(1).Text) & vbTab & Trim(txt读者姓名.Text) & vbTab & _
Val(txt图书价格.Text) & vbTab & Val(txt损失数量.Text) & vbTab & Val(txt应罚金额.Text) & _
vbTab & Val(txt实收金额.Text) & vbTab & DTP罚款日期(2).Value & vbTab & "图书损失" & vbTab & user
fineGrid.Refresh
MsgBox "执行成功!"
Call clear '清除数据
rs.Close
End If
End Sub
Private Sub cmdexit_Click()
Unload Me
End Sub
Private Sub cmdqueue_Click()
Dim rs As New ADODB.Recordset
Dim sql As String
Dim bf(3) As Boolean
Dim i As Integer
For i = 0 To 3 - 1 Step 1
bf(i) = False
Next i
'按条件对罚款信息表(损失)进行查询
sql = "select * from fkxxb where "
'判断是否选择按图书编号查询
If chk图书编号.Value = 1 Then
If Trim(txt图书编号(0).Text) = "" Then
MsgBox "图书编号不能为空!", vbOKOnly + vbExclamation, "警告"
txt图书编号(0).SetFocus
Exit Sub
Else
bf(0) = True
'组合查询语句
sql = sql & " 图书编号 like '" & Trim(txt图书编号(0).Text) & "%'"
End If
End If
'判断是否选择按读者编号查询
If chk读者编号.Value = 1 Then
If Trim(txt读者编号(0).Text) = "" Then
MsgBox "读者编号不能为空!", vbOKOnly + vbExclamation, "警告"
txt读者编号(0).SetFocus
Exit Sub
Else
bf(1) = True
If bf(0) Then
'组和查询语句
sql = sql & " and 读者编号 like '" & Trim(txt读者编号(0).Text) & "%'"
Else
sql = sql & " 读者编号 like'" & Trim(txt读者编号(0).Text) & "%'"
End If
End If
End If
'判断是否选择按罚款日期段查询
If chk罚款日期.Value = 1 Then
If DateDiff("d", DTP罚款日期(0).Value, DTP罚款日期(1).Value) < 0 Then
MsgBox "<<这符号的左边日期要早于或等于右边的日期,请修改!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
bf(2) = True
If bf(0) Or bf(1) Then
'组合查询语句
sql = sql & " and DateDiff( 'd','" & DTP罚款日期(0).Value & "',罚款日期) >=0 and DateDiff( 'd','" & DTP罚款日期(1).Value & "',罚款日期) <=0 "
Else
sql = sql & " DateDiff( 'd','" & DTP罚款日期(0).Value & "',罚款日期) >=0 and DateDiff( 'd','" & DTP罚款日期(1).Value & "',罚款日期) <=0 "
End If
End If
'判断是否设置查询方式
If (bf(0) Or bf(1) Or bf(2)) = False Then
Call fineAllBook '显示全部的罚款信息
MsgBox "请设置查询方式!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
'查询所有满足条件的内容
sql = sql & " order by 图书编号"
Set rs = TransactSQL(sql)
If rs.EOF = True Then
MsgBox "没有找到要查询的信息", vbOKOnly
Else
With fineGrid
.Rows = 1
Do While Not rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = rs.Fields(0)
.TextMatrix(.Rows - 1, 1) = rs.Fields(1)
.TextMatrix(.Rows - 1, 2) = rs.Fields(2)
.TextMatrix(.Rows - 1, 3) = rs.Fields(3)
.TextMatrix(.Rows - 1, 4) = rs.Fields(4)
.TextMatrix(.Rows - 1, 5) = rs.Fields(5)
.TextMatrix(.Rows - 1, 6) = rs.Fields(6)
.TextMatrix(.Rows - 1, 7) = rs.Fields(7)
.TextMatrix(.Rows - 1, 8) = rs.Fields(8)
.TextMatrix(.Rows - 1, 9) = rs.Fields(9)
.TextMatrix(.Rows - 1, 10) = rs.Fields(10)
rs.MoveNext
Loop
End With
End If
rs.Close
End Sub
Private Sub Form_Load()
Call fullpic(Me, Picbg1) '背景图
Me.Left = (frmmain.ScaleWidth - Me.Width) / 2
Me.Top = (frmmain.ScaleHeight - Me.Height) / 2
With fineGrid
.Rows = 1
.TextMatrix(0, 0) = "图书编号"
.TextMatrix(0, 1) = "图书名称"
.TextMatrix(0, 2) = "读者编号"
.TextMatrix(0, 3) = "读者姓名"
.TextMatrix(0, 4) = "图书价格"
.TextMatrix(0, 5) = "图书数量"
.TextMatrix(0, 6) = "应罚金额"
.TextMatrix(0, 7) = "实收金额"
.TextMatrix(0, 8) = "罚款日期"
.TextMatrix(0, 9) = "罚款原因"
.TextMatrix(0, 10) = "操作员"
.ColAlignment(0) = 1
.ColAlignment(2) = 1
.ColWidth(0) = 1500
.ColWidth(1) = 1800
.ColWidth(2) = 1500
.ColWidth(3) = 1500
.ColWidth(4) = 800
.ColWidth(5) = 800
.ColWidth(6) = 800
.ColWidth(7) = 800
.ColWidth(8) = 1000
.ColWidth(7) = 600
End With
Call fineAllBook
DTP罚款日期(0).Value = Trim(Year(Now)) & "-" & Trim(Month(Now)) & "-" & Trim(day(Now))
DTP罚款日期(1).Value = Trim(Year(Now)) & "-" & Trim(Month(Now)) & "-" & Trim(day(Now))
Call clear '清空文本框数据
End Sub
Private Sub txt实收金额_Change()
If Not IsNumeric(txt实收金额.Text) And txt实收金额.Text <> "" And Val(txt实收金额.Text) >= 0 Then
MsgBox "实收金额,只能输入正的数值或零!", vbCritical + vbOKOnly, "错误"
txt实收金额.Text = Format(Val(""), "0.00")
End If
End Sub
Private Sub txt损失数量_Change()
If Not IsNumeric(txt损失数量.Text) And txt损失数量.Text <> "" And Val(txt损失数量.Text) > 0 Then
MsgBox "损失数量,只能输入正整数!", vbCritical + vbOKOnly, "错误"
txt损失数量.Text = Val("")
ElseIf Val(txt损失数量.Text) > Val(txt借阅数量.Text) Then
MsgBox Trim(txt读者姓名.Text) & " 只借了 " & Val(txt借阅数量.Text) & _
"本书,损失数量不可能大于借阅数量!!请核对数据。", vbCritical + vbOKOnly, "错误"
txt损失数量.Text = Val("")
Else
txt应罚金额.Text = Format(Val(txt损失数量.Text) * Val(txt图书价格.Text), "0.00")
txt实收金额.Text = Format(Val(txt应罚金额.Text), "0.00")
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -