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

📄 frmsale.frm

📁 通用书店管理系统
💻 FRM
📖 第 1 页 / 共 5 页
字号:
         Index           =   5
         Left            =   2940
         TabIndex        =   16
         Top             =   240
         Width           =   945
      End
   End
End
Attribute VB_Name = "frmSale"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Dim rstmp As New ADODB.Recordset

Dim X As New XArrayDB          '从表1

Dim intFormState As Integer     '标示窗体的状态,“正常/浏览/新增/编辑”
Dim arrTemp() As Variant
Dim strDate As String

Dim blnIsModified As Boolean   '是否有输入或修改数据     True for changed
Dim blnSaveOk As Boolean       ' 是否保存数据成功



Public Sub cmdAddNew_Click()
    Dim i As Integer
    
    If Not checkpermission("书店管理系统", strUserName, , "销售管理.零售管理.图书零售.新增") Then
       Exit Sub
    End If
    If blnIsModified And intFormState = modEdit Then
        If MsgBox("当前内容有修改,要放弃吗?", vbOKCancel, "警告") <> vbOK Then
            Exit Sub
        End If
    End If
    
    setFormState (modadd)
  
     
    clearAll
    '获取最大单号
    txtFields(0).Text = GetMaxNo("chrSellNo", "SellTable", strDate)
    txtFields(10).Text = strUserName
    txtFields(11).Text = Format(Date, "yyyy-MM-dd")
    cmbFields(0).Text = strStorage
    TdbSale.SetFocus
    TdbSale.row = 0
    
    blnIsModified = False
    
    txtFields(13).SetFocus
End Sub

Public Sub CmdDelete_Click()
   On Error GoTo DelErr
   Dim sqlstring As String
   Dim rstmp As New ADODB.Recordset
   Dim rsNewTmp As New ADODB.Recordset
   
   If InStr(1, Me.Caption, "新增") > 0 Then
        Me.TdbSale.Delete
        Exit Sub
   End If
   
   If Not checkpermission("书店管理系统", strUserName, , "销售管理.零售管理.图书零售.删除") Then
       Exit Sub
   End If
   
   If txtFields(0).Text = "" Then
     MsgBox "请录入要删除的销售单号!", vbInformation
     Exit Sub
   End If
    
   cN.BeginTrans
  
   
   sqlstring = "select t1.*,chrStorageNo from SellTable_List t1 left join SellTable t2 on " & _
               " t1.chrSellNo=t2.chrSellNo  where t1.chrSellNo='" & txtFields(0).Text & "'"
   Set rsNewTmp = New ADODB.Recordset
   rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
   
   Do While Not rsNewTmp.EOF
      sqlstring = "select * from BookStorage where chrBookNo='" & rsNewTmp.Fields("chrBookNo") & _
                "' and chrBookName='" & rsNewTmp.Fields("chrBookName") & "' and chrStorageNo='" & _
                rsNewTmp.Fields("chrStorageNo").Value & "'"
      Set rstmp = New ADODB.Recordset
      rstmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
      '库存中没有该图书的记录
      If rstmp.EOF Then
         MsgBox "库存表中没有图书" & rsNewTmp.Fields("chrBookNo") & " " & rsNewTmp.Fields("chrBookName") & _
                "的记录", , "警告"
         cN.RollbackTrans
         Exit Sub
      Else
         sqlstring = "Update BookStorage set IntAmount=" & rstmp.Fields("IntAmount") + rsNewTmp.Fields("intAmount") & _
                           " " & rstmp.Fields("DecCKSY") + rsNewTmp.Fields("DecCKSY") & " where chrBookNo='" & rstmp.Fields("chrBookNo") & "' and chrBookName='" & rstmp.Fields("chrBookName") & _
                           "' and chrStorageNo='" & rstmp.Fields("chrStorageNo") & "'"
         cN.Execute (sqlstring)
      End If
      rsNewTmp.MoveNext
   Loop
   
    '删除主表
   sqlstring = "delete from SellTable where chrSellNo='" & txtFields(0).Text & "'"
   cN.Execute sqlstring
   
   '删除从表
   sqlstring = "delete from SellTable_List where chrSellNo='" & txtFields(0).Text & "'"
   cN.Execute sqlstring
   
   cN.CommitTrans
   
   setFormState (ModNormal)
   Call clearAll
   Exit Sub
DelErr:
   cN.RollbackTrans
   MsgBox "删除记录失败:" & Err.Description, vbInformation
End Sub

Public Sub cmdEdit_Click()
    setFormState (modEdit)
    blnIsModified = False           '初始状态,没做任何修改
End Sub

Public Sub cmdQuery_Click()
  On Error GoTo Err
  Dim sqlstring As String
  Dim rsNewTmp As New ADODB.Recordset
  
  If txtFields(0).Text = "" Then
     MsgBox "请输入要查询的销售单号!", vbInformation
  Else
     If ShowMainRecorder Then
        Call ShowSubRecorder
     Else
        MsgBox "没有要查询的销售单信息,输入是否有误?"
        Exit Sub
     End If
  End If
  Exit Sub
Err:
   MsgBox "查询数据失败:" & Err.Description, vbInformation
End Sub


Private Sub chkIfMember_Click()

'  If chkIfMember.Value = 1 Then
'     Label1(3).Visible = True
'     Label1(4).Visible = True
'     txtFields(3).Visible = True
'     txtFields(4).Visible = True
'
'  Else
'     Label1(3).Visible = False
'     Label1(4).Visible = False
'     txtFields(3).Visible = False
'     txtFields(4).Visible = False
'
'  End If
End Sub

Public Sub cmdCancel_Click()
   Unload Me
End Sub

Public Sub CmdSave_Click()
      On Error GoTo SaveErr
    Dim i As Integer
    Dim intIsCancel As Integer
    Dim sqlstring As String
    Dim rsNewTmp As New ADODB.Recordset
    Dim strNull
    
    blnSaveOk = False
    
    If Trim(txtFields(6)) = "" Then txtFields(6) = "0"
    If Trim(txtFields(7)) = "" Then txtFields(7) = "0"
    
    strNull = Null
    
    tdbSale_BeforeUpdate intIsCancel                        '检查从表一
    If intIsCancel = True Then
        TdbSale.SetFocus
        Exit Sub
    End If

    TdbSale.Update
    If X.UpperBound(1) < 0 Then
        MsgBox "销售单明细数据不能为空", vbOKOnly, "警告"
        Exit Sub
    End If
    
    '检查供应商号和销售单号是否为空
    If Trim(txtFields(0).Text) = "" Then
          MsgBox "销售单号不能为空!", , "警告"
          Exit Sub
    ElseIf Trim(txtFields(9).Text) = "" Then
          MsgBox "折扣不能为空!", , "警告"
          Exit Sub
    End If
    
    '是会员
    If chkIfMember.Value = 1 Then
       If txtFields(13).Text = "" Then
          MsgBox "客户编码不能为空!", , "警告"
          Exit Sub
       ElseIf txtFields(3).Text = "" Then
          MsgBox "会员卡号不能为空!", , "警告"
          Exit Sub
       End If
    End If
    
    '检查库区号、销售类型、销售方式和付款方式是否为空
    If cmbFields(0).Text = "" Then
          MsgBox "库区号不能为空!", , "警告"
          Exit Sub
    End If
    
    
    
    If Trim(txtFields(7).Text) = "0.00" Or Trim(txtFields(7).Text) = "0" Then
         MsgBox "现金金额不能为空!", , "警告"
         txtFields(7).SetFocus
         Exit Sub
    End If
    
    Select Case intFormState
        Case modadd
            If SaveAddingNew Then
                strStorage = cmbFields(0).Text
                setFormState modBrowsing       '如果保存成功
                blnIsModified = False
            Else
                Exit Sub
            End If
'        Case modEdit
'            If SaveUpdate Then
'                setFormState modBrowsing         '如果更新成功
'                blnIsModified = False
'            Else
'                Exit Sub
'            End If
        Case Else
            Exit Sub
    End Select
    
    Call clearAll
    blnIsModified = False
    blnSaveOk = True            ' 保存成功
    Exit Sub
SaveErr:
'    cN.RollbackTrans
    MsgBox "保存记录出错:" & Err.Description, vbInformation
End Sub

Private Sub cmdSearch_Click(Index As Integer)
  Dim strQuery As String
  Dim arrQuery
  Dim sqlstring As String
  Dim rstmp As New ADODB.Recordset
  
  Select Case Index
    Case 0
        strQuery = g_CommonSelect("   销售单号   |    库区号   |   销售数量  |  码洋  |  应收  |  现金  |  找零  |  销售日期  |  业务员  |  客户编码  |  会员号  ", "select ChrSellNo,ChrStorageNo,IntTotal,DecZMY,DecYS," & _
                                     "DecCash,DecZL,DatDate,ChrMissionary,ChrClientNo,IntMemberNo from SellTable where ChrSellType='零售'")
        txtFields(0).Text = strQuery
    Case 1
        strQuery = g_CommonSelect("   客户编码   |    客户名称   |   联系人  |  地址  ", "select t1.chrClientNo,t1.chrClientName,t1.chrLinkman,t1.chrAddress from ClientData t1 left join memberdata t2 ON " & _
                   "t1.chrClientNo=t2.chrClientNo where intFlag=1 and t2.ChrState='正常' order by t1.chrClientNo", "0,1", , , , -1, arrQuery)
        If TypeName(arrQuery) = "Variant()" Then
            txtFields(13).Text = arrQuery(0, 0)
            
            sqlstring = "SELECT IntMemberNo, chrClientNo, ChrName, DatLoginDate, DatDQDate From MemberData where chrClientNo='" & txtFields(13).Text & "'"
            Set rstmp = New ADODB.Recordset
            rstmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
            If Not rstmp.EOF Then

                If DateDiff("d", Date, rstmp.Fields("DatDQDate")) <= 0 Then
                    MsgBox "会员卡已过期!", vbInformation
                    
                    txtFields(13).Text = ""
                    txtFields(13).SetFocus
                    Exit Sub
                Else

                    txtFields(12).Text = arrQuery(0, 1)
                    txtFields(13).SetFocus         ' 为了触发 validate 事件
                    SendKeys "{TAB}"
                End If
            End If

        End If
        
        
    Case 2
        strQuery = g_CommonSelect("   会员卡号   |    客户编码   |   姓名  |  级别  ", "select IntMemberNo,chrClientNo,ChrName,ChrLevel from MemberData where ChrState='正常' order by IntMemberNo", "0,3", , , , -1, arrQuery)
        If TypeName(arrQuery) = "Variant()" Then
                txtFields(3).Text = arrQuery(0, 0)
                txtFields(4).Text = arrQuery(0, 1)
        End If
  End Select
End Sub

Public Sub cmdUndo_Click()
   '询问是否放弃当前内容
    If blnIsModified Then
        If MsgBox("当前修改的内容会丢失。确认要取消吗?", vbOKCancel, "询问") <> vbOK Then Exit Sub
    End If
    clearAll
    setFormState (ModNormal)
    blnIsModified = False
End Sub

Private Sub Form_Activate()
    frmLogin.Show
    SetToolBar ("1000X10X111X111X1")
      
    If intFormState = modadd Then
        SetToolBar ("0011X00X001X111X1")
    End If
    
    Me.SetFocus
End Sub

Private Sub Form_Deactivate()
    frmLogin.Hide
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyA And Shift = 2 Then
     If intFormState = modBrowsing Or intFormState = ModNormal Then
        Call cmdAddNew_Click
     End If
  ElseIf KeyCode = vbKeyS And Shift = 2 Then
     If intFormState = modadd Or intFormState = modEdit Then
        Call CmdSave_Click
     End If
  End If
End Sub

Private Sub Form_Load()
  Dim sqlstring As String
  Dim rsNewTmp As New ADODB.Recordset
  
  On Error GoTo Err
  
    ' 读取最近使用的库区名称
'    Dim strtemp As String * 300, strKey As String

⌨️ 快捷键说明

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