frmborrowbooks.frm

来自「通用书店管理系统」· FRM 代码 · 共 1,152 行 · 第 1/4 页

FRM
1,152
字号

Private Sub tdbBookBorrow_Validate(Index As Integer, Cancel As Boolean)
    Dim sqlstring As String
    Dim arrQuery As Variant
    Dim rstmp As New ADODB.Recordset
    
    Select Case Index:
        Case 0:
            Debug.Print "validate" & tdbBookBorrow(0).Columns(0).Text

            If tdbBookBorrow(0).Columns(0).Text <> "" Then
                sqlstring = "select chrBookNo,chrBookName,DecPrice,DecAgio,ChrGHS,Chrbookconcern,DatPublishDate " & _
                               " from BookData where chrBookNo = '" & tdbBookBorrow(0).Columns(0).Text & "'"
                Set rstmp = New ADODB.Recordset
                rstmp.Open sqlstring, cN, adOpenStatic, adLockReadOnly
                If rstmp.Recordcount = 0 Then
                    MsgBox "书号不存在!"
                    Cancel = True
                    Set rstmp = Nothing
'                    Call clearAll
                    Exit Sub
                Else
                    If rstmp.Recordcount > 1 Then
                         strSQL = "select chrBookNo,chrBookName,DecPrice,DecAgio,ChrGHS,Chrbookconcern,DatPublishDate" & _
                                " from BookData where chrBookNo like '%" & tdbBookBorrow(0).Columns(0).Text & "%' order by ChrBookNo"
                        g_CommonSelect " 书号  |  书名  |  单价  |  折扣  |  供货商  |  出版社  |  出版日期  ", strSQL, "0,1,2", , , , , arrQuery

                        If TypeName(arrQuery) = "Variant()" Then
                             tdbBookBorrow(0).Columns(0).Text = IIf(IsNull(arrQuery(0, 0)), "", arrQuery(0, 0))
                             tdbBookBorrow(0).Columns(1).Text = IIf(IsNull(arrQuery(0, 1)), "", arrQuery(0, 1))
                             tdbBookBorrow(0).Columns(2).Text = IIf(IsNull(arrQuery(0, 2)), "", arrQuery(0, 2))
                            
                        End If
                        Exit Sub
                    End If
                
                End If
                tdbBookBorrow(0).Columns(1).Text = rstmp.Fields("ChrbookName")
                tdbBookBorrow(0).Columns(2).Text = rstmp.Fields("decprice")

                              
                Set rstmp = Nothing
      End If
      End Select
End Sub


Private Sub txtFields_KeyPress(Index As Integer, KeyAscii As Integer)
  If Index = 0 Then
     KeyAscii = ValiText(KeyAscii, vbExpInteger, "", txtFields(Index).Text, 6)
   End If
End Sub




Private Sub setFormState(intState As Integer)   '设置窗体的不同状态
    
    intFormState = intState
    Select Case intState
        Case ModNormal
            Me.Caption = "图书外借"
            setTxtWritable ("1000000")
           
            
            tdbBookBorrow(0).AllowAddNew = False
            tdbBookBorrow(0).AllowUpdate = False
            tdbBookBorrow(0).AllowDelete = False
            SetToolBar ("1000X10X101X111X1")
    
    
        Case modBrowsing
            Me.Caption = "图书外借----浏览"
            setTxtWritable ("1000000")
            
            tdbBookBorrow(0).AllowAddNew = False
            tdbBookBorrow(0).AllowUpdate = False
            tdbBookBorrow(0).AllowDelete = False
            SetToolBar ("1000X10X101X111X1")
        Case modadd
            Me.Caption = "图书外借----新增"
            setTxtWritable ("1000000")
            
            tdbBookBorrow(0).AllowAddNew = True
            tdbBookBorrow(0).AllowUpdate = True
            tdbBookBorrow(0).AllowDelete = True
            SetToolBar ("0011X00X001X111X1")
        Case modEdit
            Me.Caption = "图书外借----修改"
            setTxtWritable ("1000000")
            tdbBookBorrow(0).AllowAddNew = False
            tdbBookBorrow(0).AllowUpdate = True
            tdbBookBorrow(0).AllowDelete = False
            SetToolBar ("0011X00X001X111X1")
    End Select

End Sub

Private Sub clearAll()          '清除所有可填数据的位置
    Dim i As Integer
    
    For i = 0 To txtFields.UBound
        txtFields(i).Text = ""
    Next i
    
   
    X.ReDim 0, -1, 0, 2
    tdbBookBorrow(0).ReBind
    

    
End Sub


Private Sub txtFields_Validate(Index As Integer, Cancel As Boolean)
  Dim sqlstring As String
  Dim rsNewTmp As New ADODB.Recordset
  
  If Trim(txtFields(0)) = "" Then Exit Sub
  
  Cancel = True
  
  If intFormState = modadd Then
     sqlstring = "select t1.*,t2.ChrPhoneCode from MemberData t1 left join ClientData t2 on t1.chrClientNo=t2.chrClientNo " & _
                 "  where intMemberNo=" & CInt(txtFields(0).Text)
     rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
     If Not rsNewTmp.EOF Then
        If rsNewTmp.Fields("chrState").Value = "正常" Then
           txtFields(1).Text = rsNewTmp.Fields("chrName").Value
           txtFields(2).Text = rsNewTmp.Fields("chrType").Value
           txtFields(3).Text = rsNewTmp.Fields("DatDQDate").Value
           txtFields(4).Text = rsNewTmp.Fields("IntMaxBorrow").Value
           txtFields(6).Text = rsNewTmp.Fields("IntMaxDay").Value
           txtFields(7).Text = IIf(IsNull(rsNewTmp.Fields("ChrPhoneCode").Value), "", rsNewTmp.Fields("ChrPhoneCode").Value)
           
           sqlstring = "select count(*) as intNo from BooksBorrow where IntMemberNo=" & CInt(txtFields(0).Text) & " and DatTSGHDate is null"
           Set rsNewTmp = New ADODB.Recordset
           rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
           If Not rsNewTmp.EOF Then
              txtFields(5).Text = rsNewTmp.Fields("intNO").Value
           Else
              txtFields(5).Text = 0
           End If
           sqlstring = "select * from BooksBorrow where intMemberNo=" & CInt(txtFields(0)) & " and DatTSGHDate is null order by DatJSDate"
           Set rsNewTmp = New ADODB.Recordset
           rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
           
           Set tdbBookBorrow(1).DataSource = rsNewTmp
        Else
           MsgBox "该会员卡已挂失或已作废!", , "警告"
           Cancel = True
           Exit Sub
        End If
     End If
  End If
  Cancel = False
End Sub

Private Sub setTxtWritable(strIn As String)     '设置各文本框的可写属性
    Dim i As Integer
    
    For i = 0 To txtFields.UBound
        If Mid(strIn, i + 1, 1) = 1 Then
            txtFields(i).Locked = False
            txtFields(i).BackColor = RGB(255, 255, 255)
        Else
            txtFields(i).Locked = True
            txtFields(i).BackColor = gColor_LockedText
        End If
    Next i
End Sub


'保存新增的记录
Private Function SaveAddingNew() As Boolean     'True for success
    
    Dim i As Integer
    Dim strSQL As String
    Dim lngAffectedRow As Long
    
    SaveAddingNew = False
    
    cN.BeginTrans
    For i = 0 To X.UpperBound(1)
        strSQL = "insert into BooksBorrow(IntMemberNo,ChrBookNo,ChrBookName,DatJSDate," & _
                             "DatHSDate,ChrOperator,ChrType ) values("
        strSQL = strSQL & _
                 CInt(txtFields(0)) & ",'" & _
                 X(i, 0) & "','" & _
                 X(i, 1) & "',#" & _
                 Format(Date, "yyyy-mm-dd") & "#,#" & _
                 DateAdd("d", CInt(txtFields(6)), Format(Date, "yyyy-mm-dd")) & "#,'" & _
                 strUserName & "','借书')"
        cN.Execute strSQL, lngAffectedRow
        If lngAffectedRow <> 1 Then GoTo ToError
    Next i
    
    cN.CommitTrans
    SaveAddingNew = True
    Exit Function

ToError:
        cN.RollbackTrans
        MsgBox "保存记录出错:" & err.Description, vbInformation
        SaveAddingNew = False
End Function


'显示借书记录
Private Function ShowRecorder() As Boolean
  On Error GoTo err
  Dim i As Integer
  Dim sqlstring As String
  Dim rsNewTmp As New ADODB.Recordset
  
  '查询会员卡的资料
  sqlstring = "select t1.*,t2.ChrPhoneCode from MemberData t1 left join ClientData t2 on t1.chrClientNo=t2.chrClientNo " & _
                 "  where intMemberNo=" & CInt(txtFields(0).Text)
  
  rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
  If Not rsNewTmp.EOF Then
       txtFields(1).Text = rsNewTmp.Fields("chrName").Value
       txtFields(2).Text = rsNewTmp.Fields("chrType").Value
       txtFields(3).Text = rsNewTmp.Fields("DatDQDate").Value
       txtFields(4).Text = rsNewTmp.Fields("IntMaxBorrow").Value
       txtFields(6).Text = rsNewTmp.Fields("IntMaxDay").Value
       txtFields(7).Text = IIf(IsNull(rsNewTmp.Fields("ChrPhoneCode").Value), "", rsNewTmp.Fields("ChrPhoneCode").Value)
       
       sqlstring = "select count(*) as intNo from BooksBorrow where IntMemberNo=" & CInt(txtFields(0).Text) & " and DatTSGHDate is null"
       Set rsNewTmp = New ADODB.Recordset
       rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
       If Not rsNewTmp.EOF Then
          txtFields(5).Text = rsNewTmp.Fields("intNO").Value
       Else
          txtFields(5).Text = 0
       End If
       
  Else
       For i = 0 To txtFields.UBound
         If i <> 0 Then
           txtFields(i).Text = ""
         End If
       Next i
       X.ReDim 0, -1, 0, 2
       tdbBookBorrow(0).ReBind
       
       Set tdbBookBorrow(1).DataSource = rsNewTmp
       
       ShowRecorder = False
       
       MsgBox "没有该会员卡的相关信息,请确认录入是否有错!", , "警告"
       Exit Function
  End If
  
  sqlstring = "select * from BooksBorrow where IntMemberNo=" & CInt(txtFields(0).Text) & " and DatTSGHDate is null"
  Set rsNewTmp = New ADODB.Recordset
  rsNewTmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
  Set tdbBookBorrow(1).DataSource = rsNewTmp
     
  If rsNewTmp.EOF Then
    ShowRecorder = False
    X.ReDim 0, -1, 0, 2
    tdbBookBorrow(0).ReBind
    Exit Function
  End If
  
  
  X.ReDim 0, rsNewTmp.Recordcount - 1, 0, 2
  Set tdbBookBorrow(0).Array = X
  Do While Not rsNewTmp.EOF
     X(i, 0) = rsNewTmp.Fields("chrBookNo").Value
     X(i, 1) = rsNewTmp.Fields("chrBookName").Value
     X(i, 2) = rsNewTmp.Fields("DatJSDate").Value
     rsNewTmp.MoveNext
     i = i + 1
  Loop
  
  tdbBookBorrow(0).ReBind

  ShowRecorder = True
  Exit Function
err:
  ShowRecorder = False
  MsgBox "查询记录失败:" & err.Description, vbInformation
  

End Function

⌨️ 快捷键说明

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