main.frm
来自「一套VB完整的灯具销售管理系统设计」· FRM 代码 · 共 736 行 · 第 1/2 页
FRM
736 行
Dim Tc As Integer
Tc = MsgBox("退出要生成发票吗(Y/N)?" & Chr(13) & Chr(10) & "如果不生成发票,将不能保存此发票", 3 + 16, "不能白辛苦了!")
'选择是时执行如下:
If Tc = 6 Then
If Scfp.Enabled = False Then
MsgBox "没有发票号,不能生成新发票", vbOKOnly + 32, "暂停生成"
'发票号栏获得焦点
Fptxt.SetFocus
'退出
Exit Sub
Else
Call Scfp_Click
Unload Me
Exit Sub
End If
End If
'选择否时执行如下:
If Tc = 7 Then
Unload Me
End If
'选择取消时退出
Exit Sub
End Sub
Private Sub DBGrid1_AfterDelete()
'统计金额
Dim db3 As Database, Tj As Recordset, RecStr As String
Set db3 = OpenDatabase(appData)
RecStr = "update tempk set 金额=数量*单价"
db3.Execute RecStr
Set Tj = db3.OpenRecordset("select sum(金额) as Tjfield from tempk", dbOpenDynaset)
If IsNull(Tj.Fields(0)) Then
Hjtxt.Caption = 0
Else
Hjtxt.Caption = Tj.Fields(0)
End If
db3.Close
'替代其它项目
Set db3 = OpenDatabase(appData)
Set Tj = db3.OpenRecordset("tempk", dbOpenDynaset)
RecStr = "update tempk set 经手人='" & Trim(Jsrtxt.Text) & "',发票号='" & Trim(Fptxt.Text) & "',合计=val(" & Hjtxt.Caption & ")" & ",日期=#" & rqlab.Caption & "#"
db3.Execute RecStr
Dim sfkNum As Currency, qkNum As Currency
sfkNum = Val(SFktxt.Text)
qkNum = Val(QkTXt.Text)
RecStrx = "update tempk set 购货人='" & Trim(Ghrtxt.Text) & "',实付款=" & sfkNum & ",欠款=" & qkNum
db3.Execute RecStrx
db3.Close
QkTXt.Text = Val(Hjtxt.Caption) - Val(SFktxt.Text)
DBGrid1.Refresh
End Sub
Private Sub DBGrid1_AfterUpdate()
'统计金额
Dim db3 As Database, Tj As Recordset, RecStr As String
Set db3 = OpenDatabase(appData)
RecStr = "update tempk set 金额=数量*单价"
db3.Execute RecStr
Set Tj = db3.OpenRecordset("select sum(金额) as Tjfield from tempk", dbOpenDynaset)
If IsNull(Tj.Fields(0)) Then
Hjtxt.Caption = 0
Else
Hjtxt.Caption = Tj.Fields(0)
End If
db3.Close
'替代其它项目
Set db3 = OpenDatabase(appData)
Set Tj = db3.OpenRecordset("tempk", dbOpenDynaset)
RecStr = "update tempk set 经手人='" & Trim(Jsrtxt.Text) & "',发票号='" & Trim(Fptxt.Text) & "',合计=val(" & Hjtxt.Caption & ")" & ",日期=#" & rqlab.Caption & "#"
db3.Execute RecStr
Dim sfkNum As Currency, qkNum As Currency
sfkNum = Val(SFktxt.Text)
qkNum = Val(QkTXt.Text)
RecStrx = "update tempk set 购货人='" & Trim(Ghrtxt.Text) & "',实付款=" & sfkNum & ",欠款=" & qkNum
db3.Execute RecStrx
db3.Close
QkTXt.Text = Val(Hjtxt.Caption) - Val(SFktxt.Text)
DBGrid1.Refresh
End Sub
Private Sub DBGrid1_Change()
updateF = True
SFktxt.Text = 0
QkTXt.Text = 0
End Sub
Private Sub DBGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'在第一列,按鼠标右键和非编辑情况下,执行如下:
If Button = 2 And DBGrid1.Col = 0 And DBGrid1.EditActive = False Then
main.MousePointer = 11
Load cpselect
main.MousePointer = 0
cpselect.Show 1
Call DBGrid1_OnAddNew
End If
End Sub
Private Sub DBGrid1_OnAddNew()
'统计金额
Dim db3 As Database, Tj As Recordset, RecStr As String
Set db3 = OpenDatabase(appData)
RecStr = "update tempk set 金额=数量*单价"
db3.Execute RecStr
Set Tj = db3.OpenRecordset("select sum(金额) as Tjfield from tempk", dbOpenDynaset)
If IsNull(Tj.Fields(0)) Then
Hjtxt.Caption = 0
Else
Hjtxt.Caption = Tj.Fields(0)
End If
db3.Close
'替代其它项目
Set db3 = OpenDatabase(appData)
Set Tj = db3.OpenRecordset("tempk", dbOpenDynaset)
RecStr = "update tempk set 经手人='" & Trim(Jsrtxt.Text) & "',发票号='" & Trim(Fptxt.Text) & "',合计=val(" & Hjtxt.Caption & ")" & ",日期=#" & rqlab.Caption & "#"
db3.Execute RecStr
Dim sfkNum As Currency, qkNum As Currency
sfkNum = Val(SFktxt.Text)
qkNum = Val(QkTXt.Text)
RecStrx = "update tempk set 购货人='" & Trim(Ghrtxt.Text) & "',实付款=" & sfkNum & ",欠款=" & qkNum
db3.Execute RecStrx
db3.Close
QkTXt.Text = Val(Hjtxt.Caption) - Val(SFktxt.Text)
DBGrid1.Refresh
End Sub
Private Sub Form_Load()
main.Left = (Screen.Width - main.Width) / 2 - 200
main.Top = (Screen.Height - main.Height) / 2 - 110
'设定发票及临时库的路径
Temp.DatabaseName = appData
Temp.RecordSource = "tempk"
fpData.DatabaseName = appData
fpData.RecordSource = "fpk"
fpData.Refresh
'发票号自动加 1
On Error GoTo xx
fpData.Recordset.MoveLast
If IsNull(fpData.Recordset.Fields(0)) Then
Fptxt.Text = "1998001"
Else
Fptxt.Text = fpData.Recordset.Fields(0) + 1
End If
fpData.Refresh
GoTo yy
xx:
Fptxt.Text = "1998001"
yy:
'清空临时库
Dim Db As Database
Set Db = OpenDatabase(appData)
RecStr = "delete * from tempk"
Db.Execute RecStr
Db.Close
'设定日期
rqlab.Caption = Date
'设定经手人,登录时用的
Jsrtxt.Text = Manager
'发票没有开时,不能生成发票
'初始化生成发票逻辑性
Scfp.Enabled = True
scfpF = False
updateF = False
PrintFP.Enabled = False
End Sub
Private Sub Fptxt_Change()
updateF = True
End Sub
Private Sub Fptxt_Click()
Fptxt.SelStart = 0
Fptxt.SelLength = Len(Fptxt.Text)
End Sub
Private Sub Fptxt_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Ghrtxt.SetFocus
End If
End Sub
Private Sub Ghrtxt_Change()
updateF = True
End Sub
Private Sub Ghrtxt_DblClick()
main.MousePointer = 11
Load GhrSelect
main.MousePointer = 0
GhrSelect.Show 1
End Sub
Private Sub Ghrtxt_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Jsrtxt.SetFocus
End If
End Sub
Private Sub Hjtxt_Change()
updateF = True
Hj = Format(Hjtxt.Caption, "###,###,###,###,###.##")
End Sub
Private Sub Jsrtxt_Change()
updateF = True
End Sub
Private Sub Jsrtxt_Click()
Jsrtxt.SelStart = 0
Jsrtxt.SelLength = Len(Jsrtxt.Text)
End Sub
Private Sub Jsrtxt_DblClick()
main.MousePointer = 11
Load jsrselect
main.MousePointer = 0
jsrselect.Show 1
End Sub
Private Sub Jsrtxt_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
DBGrid1.SetFocus
End If
End Sub
Private Sub printfp_Click()
'检测生成发票后,如果更新的话,通知并反应更新事件
If updateF = True Then
MsgBox "因发票更改,现在重新生成发票!", vbOKOnly + 48, "发票更正"
Call Scfp_Click
End If
'打印发票内容
Report1.ReportFileName = Browser + "report\Fp.rpt"
'Report1.ReportFileName = "c:\dj\fp.rpt"
Report1.PrintReport
End Sub
Private Sub rqlab_Change()
updateF = True
End Sub
Private Sub rqlab_DblClick()
main.MousePointer = 11
Load rqform1
main.MousePointer = 0
rqform1.Show 1
End Sub
Private Sub Scfp_Click()
'统计金额
Dim db3 As Database, Tj As Recordset, RecStr As String
Set db3 = OpenDatabase(appData)
RecStr = "update tempk set 金额=数量*单价"
db3.Execute RecStr
Set Tj = db3.OpenRecordset("select sum(金额) as Tjfield from tempk", dbOpenDynaset)
If IsNull(Tj.Fields(0)) Then
Hjtxt.Caption = 0
Else
Hjtxt.Caption = Tj.Fields(0)
End If
db3.Close
'替代其它项目
Set db3 = OpenDatabase(appData)
Set Tj = db3.OpenRecordset("tempk", dbOpenDynaset)
RecStr = "update tempk set 经手人='" & Trim(Jsrtxt.Text) & "',发票号='" & Trim(Fptxt.Text) & "',合计=val(" & Hjtxt.Caption & ")" & ",日期=#" & rqlab.Caption & "#"
db3.Execute RecStr
Dim sfkNum As Currency, qkNum As Currency
sfkNum = Val(SFktxt.Text)
qkNum = Val(QkTXt.Text)
RecStrx = "update tempk set 购货人='" & Trim(Ghrtxt.Text) & "',实付款=" & sfkNum & ",欠款=" & qkNum
db3.Execute RecStrx
db3.Close
QkTXt.Text = Val(Hjtxt.Caption) - Val(SFktxt.Text)
DBGrid1.Refresh
'生成发票
fpData.Refresh
Dim Db As Database, ef As Recordset, Emtry As Integer
Set Db = OpenDatabase(appData)
Set ef = Db.OpenRecordset("tempk", dbOpenTable)
Emtry = ef.RecordCount
If Emtry = 0 Then
MsgBox "此发票没有购货物,不以生成。" & Chr(13) & Chr(10) & "如果要生成,请选购货物。", vbOKOnly + 32, "没购货物"
Db.Close
Exit Sub
Else
'检测发票号有没有重复,如果有,则提示!
FindStr = Trim(Fptxt.Text)
FindStr = "发票号='" & FindStr & "'"
fpData.Recordset.FindFirst FindStr
If fpData.Recordset.NoMatch Then
'插入到发票库中
RecStr = "insert into fpk select * from tempk"
Db.Execute RecStr
'插入到客户库中
RecStr = "insert into guestfindk (发票号,经手人,购货人,日期,欠款,实付款,合计) values('"
RecStr = RecStr & Trim(Fptxt.Text) & "','" & Trim(Jsrtxt.Text) & "','" & Trim(Ghrtxt.Text) & "',#" & rqlab.Caption & "#," & Val(QkTXt.Text) & "," & Val(SFktxt.Text) & "," & Val(Hjtxt.Caption) & ")"
Db.Execute RecStr
Db.Close
Else
selectnum = MsgBox("该发票已经存在,是否覆盖(Y/N)?", 4 + 48, "发票重复")
If selectnum = 6 Then
'删除发票库
RecStr = "delete * from fpk where 发票号='" & Trim(Fptxt.Text) & "'"
Db.Execute RecStr
'删除客户总额库
RecStr = "delete * from guestfindk where 发票号='" & Trim(Fptxt.Text) & "'"
Db.Execute RecStr
'插入到发票库
RecStr = "insert into fpk select * from tempk"
Db.Execute RecStr
'插入到客户库中
RecStr = "insert into guestfindk (发票号,经手人,购货人,日期,欠款,实付款,合计) values('"
RecStr = RecStr & Trim(Fptxt.Text) & "','" & Trim(Jsrtxt.Text) & "','" & Trim(Ghrtxt.Text) & "',#" & rqlab.Caption & "#," & Val(QkTXt.Text) & "," & Val(SFktxt.Text) & "," & Val(Hjtxt.Caption) & ")"
Db.Execute RecStr
Db.Close
End If
End If
End If
'生成表为真
scfpF = True
'更新为假
updateF = False
PrintFP.Enabled = True
End Sub
Private Sub Sfktxt_Change()
updateF = True
If Val(Hjtxt.Caption) < Val(SFktxt.Text) Then
MsgBox "注意:应付 " & Hj.Caption & " 元" & Chr(13) & Chr(10) & "您付的钱太多了!", vbOKOnly + 48, "钱过多?"
SFktxt.SelStart = 0
SFktxt.SelLength = Len(SFktxt.Text)
SFktxt.Text = Hjtxt.Caption
QkTXt.Text = "0"
Exit Sub
End If
QkTXt.Text = Val(Hjtxt.Caption) - Val(SFktxt.Text)
End Sub
Private Sub Sfktxt_DblClick()
SFktxt.Text = Hjtxt.Caption
End Sub
Private Sub Sfktxt_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
If Val(Trim(SFktxt.Text)) = 0 Then
KeyAscii = 0
Else
SFktxt.Text = Left(SFktxt.Text, (Len(SFktxt.Text) - 1))
SFktxt.SelStart = Len(SFktxt.Text)
End If
End If
If KeyAscii = 47 Or KeyAscii < 46 Or KeyAscii > 58 Then
KeyAscii = 0
End If
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?