⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmxb.frm

📁 个人财务计算的好工具
💻 FRM
📖 第 1 页 / 共 4 页
字号:
Dim ye1 As Integer, ye2 As Integer, mo1 As Byte, mo2 As Byte, da1 As Byte, da2 As Byte
Dim audate As Date

'启动预定系统
Set zbauto = OpenDatabase(App.Path + "\zb.mdb")
Set reauto = zbauto.OpenRecordset("autoadd", dbOpenDynaset)
'Set zbauto = OpenDatabase(App.Path + "\zb.mdb")
Set rexb = zbauto.OpenRecordset("xb", dbOpenDynaset)
If reauto.RecordCount <> 0 Then '若有预定
   reauto.MoveFirst
   Do While reauto.AbsolutePosition <> -1
   '寻找XB中最后一条符合某条预定条件的记录
        rexb.FindLast ("autoadd='" + reauto.Fields(3) + "'" + _
        " and  收支金额=" + Str(reauto.Fields(1)) + _
        " and  类别='" + reauto.Fields(2) + "'")
          If Not (rexb.NoMatch) Then '若XB中有这样一条由预定产生的记录
             audate = rexb.Fields(0)
             auto = Date - rexb.Fields(0) '今天距那天有多少天间隔
             ye1 = Val(Mid(Format(Date, "yyyy-mm-dd"), 1, 4)): ye2 = Val(Mid(Format(rexb.Fields(0), "yyyy-mm-dd"), 1, 4))
             mo1 = Month(Date): mo2 = Month(rexb.Fields(0))
             da1 = Val(Mid(Format(Date, "yy-mm-dd"), 7, 2))
             da2 = Val(Mid(Format(rexb.Fields(0), "yy-mm-dd"), 7, 2))
             autm = (ye1 - ye2) * 12 + (mo1 - mo2)
             If da1 < da2 Then
                autm = autm - 1
             End If
             
          Select Case rexb.Fields(5)
               Case "每天"
               For i = 1 To auto
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("D", i, audate) 'Date - (i - 1) * 1
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每周"
                For i = 1 To Int(auto / 7)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("ww", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每月"
                For i = 1 To autm
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("m", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每季"
                For i = 1 To Int(autm / 3)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("m", i * 3, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每年"
                For i = 1 To Int(autm / 12)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("yyyy", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
         End Select
          Else '若XB中没有这样一条由预定产生的记录,也就是有条预定还没有起作用
             audate = reauto.Fields(0)
             auto = Date - reauto.Fields(0)  '今天距那天有多少天间隔
             ye1 = Val(Mid(Format(Date, "yyyy-mm-dd"), 1, 4)): ye2 = Val(Mid(Format(reauto.Fields(0), "yyyy-mm-dd"), 1, 4))
             mo1 = Month(Date): mo2 = Month(reauto.Fields(0))
             da1 = Val(Mid(Format(Date, "yy-mm-dd"), 7, 2))
             da2 = Val(Mid(Format(reauto.Fields(0), "yy-mm-dd"), 7, 2))
             autm = (ye1 - ye2) * 12 + mo1 - mo2
             If da1 < da2 Then
                autm = autm - 1
             End If
              If auto > 0 Then '已过了预定的日期
               rexb.AddNew     '则增加一个预定记录
                   rexb.Fields(0) = reauto.Fields(0)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
              End If
             Select Case reauto.Fields(3)
               Case "每天"
               For i = 1 To auto
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("d", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每周"
                For i = 1 To Int(auto / 7)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("ww", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每月"
                For i = 1 To autm
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("m", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每季"
                For i = 1 To Int(autm / 3)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("m", i * 3, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
               Case "每年"
                For i = 1 To Int(autm / 12)
                   rexb.AddNew
                   rexb.Fields(0) = DateAdd("yyyy", i, audate)
                   rexb.Fields(1) = reauto.Fields(1)
                   rexb.Fields(2) = reauto.Fields(2)
                   rexb.Fields(5) = reauto.Fields(3)
                   rexb.Fields(3) = reauto.Fields(4)
                   If Mid(rexb.Fields(2), 4, 1) = "入" Then
                        rexb.Fields(4) = True
                   Else
                         rexb.Fields(4) = False
                   End If
                   rexb.Update
               Next i
         End Select
    End If
    reauto.MoveNext
    Loop
End If

Dim reyear As Recordset
Set reyear = zbauto.OpenRecordset("year")

If rexb.RecordCount = 0 Then '没有任何记录,则是第一次使用
Set reauto = zbauto.OpenRecordset("yzj", dbOpenDynaset)
    frmfirst.Show 1
                         If frmfirst.firdate = "" Then
                        MsgBox "您什么都没有输入,下次在用吧。B-b!", 48, "再见"
                         Call Form_Unload(0)
                         End
                        End If
 
                         If reyear.RecordCount = 0 Then
                        reyear.AddNew
                        reyear.Fields(0) = Mid(Format(CDate(frmfirst.firdate), "yyyy-mm-dd"), 1, 4) '保证在YEAR表中有一个年度
                        reyear.Update
                        
                          End If
rexb.AddNew
   rexb.Fields(0) = CDate(frmfirst.firdate)
   rexb.Fields(1) = 0
   rexb.Fields(2) = "其它收入"
   rexb.Fields(3) = "这是程序自己加的记录,你可以修改它."
   rexb.Fields(4) = True
   rexb.Update
   myyear = Mid(Format(CDate(frmfirst.firdate), "yyyy-mm-dd"), 1, 4)
rexb.Close

    Dim reyzj As Recordset
    Set reyzj = zbauto.OpenRecordset("yzj")
    reyzj.AddNew
    reyzj.Fields(0) = CDate(frmfirst.firdate)
    reyzj.Fields(1) = frmfirst.firmoney
    reyzj.Update
    reyzj.Close
   reauto.Close
End If

   reyear.MoveLast
myyear = reyear.Fields(0)
Me.Caption = "小小收支薄-每日收支详情登记" + "(" + myyear + "年度)"
Data1.DatabaseName = App.Path + "\zb.mdb"
Data1.RecordSource = "select * from xb where year(收支日期)='" + myyear + "' order by 收支日期"
Data1.Refresh
Data2.DatabaseName = App.Path + "\zb.mdb"
Data2.RecordSource = "select * from yzj where year(年月)='" + myyear + "' order by 年月"
Data2.Refresh


Dim n As Integer

Data1.Recordset.MoveFirst
Do

Data1.Recordset.MoveNext
Loop Until Data1.Recordset.AbsolutePosition = -1 'Data1.Recordset.RecordCount - 1   '是否到最后一个记录(不是检测记录末)
If Data1.Recordset.RecordCount = 1 Then Toolbar1.Buttons.Item(4).Enabled = False '若此句放在前面recordcount为1,经movefirst记录移动后,得到recordcount正确值.
Data1.Recordset.MoveFirst
'设置标尺属性
If Data1.Recordset.RecordCount > 1 Then
Slirecon.max = Data1.Recordset.RecordCount - 1
Slirecon.LargeChange = Int(Slirecon.max / 10) + 1
Else
Slirecon.max = Data1.Recordset.RecordCount
Slirecon.LargeChange = 0
End If
Label9.Caption = Str(Data1.Recordset.RecordCount)
Label10.Caption = Str(Data1.Recordset.AbsolutePosition + 1)
Dim t As Boolean
t = True
visok (t)
mok
End Sub



Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer, j As Integer
j = Forms.Count - 1
For i = 0 To j
Unload Forms(0)
Next i
End Sub

Private Sub HELP_Click()

'MYHELP
End Sub


Private Sub JS_Click()
dctable ("yzj")
End Sub

Private Sub PX_Click()
Command5_Click
End Sub

Private Sub SC_Click()
Command2_Click
End Sub

Private Sub Slirecon_Change()
'Debug.Print Slirecon.Value
Data1.Recordset.MoveFirst
Data1.Recordset.Move Slirecon.Value
mok
End Sub

Private Sub sy_Click()
Command4_Click
End Sub

Private Sub SZ_Click()
dctable ("xb")
End Sub

Private Sub Text1_LostFocus(Index As Integer)
If Not IsDate(Text1(0).Text) Then
Text1(0).SetFocus
Text1(0).SelStart = 0
Text1(0).SelLength = Len(Text1(0).Text)
End If
If Not IsNumeric(Text1(1).Text) Then
Text1(1).SetFocus
Text1(1).SelStart = 0
Text1(1).SelLength = Len(Text1(0).Text)
End If
End Sub

Private Sub textfind_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call textfind_LostFocus
End If
End Sub

Private Sub textfind_LostFocus()
If Not IsDate(textfind.Text) Then
With textfind
.SelStart = 0
.SelLength = Len(.Text)
.SetFocus
End With
Else
Data1.Recordset.FindFirst "收支日期=CDate('" + textfind.Text + "')"
            If Data1.Recordset.NoMatch Then
MsgBox "没有找到" + textfind.Text + "的收支情况!" + Chr(13) + Chr(13) + "将查找最接近的一个收支个记录。", 48, "查找"

Data1.Recordset.FindLast "收支日期<=CDate('" + textfind.Text + "')"
            End If
End If
 Call mok
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
       Case Is = "add"
       Command1_Click
       Case Is = "pre"
        Command4_Click
       Case Is = "next"
        Command3_Click
       Case Is = "edit"
       comedit_Click
       Case Is = "ok"
       Comok_Click
       Case Is = "cancel"
       Comcancl_Click
       Case Is = "del"
       Command2_Click
       Case Is = "js"
       Comzt_Click
       Case Is = "index"
       Command5_Click
       Case Is = "find"
       comlr_Click
       Case Is = "ctrl"
       Comauto_Click
       Case Is = "table"
       comtable_Click
       Case Is = "help"
       MYHELP
       'MsgBox "帮助尚未建立!", 48, "sorry"
      
       Case Is = "exit"
      Unload frmxb
End Select
End Sub



Private Sub xg_Click()
comedit_Click
End Sub

Private Sub XY_Click()
Command3_Click
End Sub

Private Sub xz_Click()
frmyear.Show 1
End Sub

Private Sub YD_Click()
Comauto_Click
End Sub

Private Sub YJS_Click()
Comzt_Click
End Sub

Private Sub zj_Click()
Command1_Click
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -