frmstoragefirstinput.frm

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

FRM
820
字号
   
   On Error GoTo Err
   
   If Not checkpermission("书店管理系统", strUserName, , "基础设置.初期建帐管理.库存首次录入.查询") Then
     Exit Sub
   End If
   
   sqlstring = "select t1.*,ChrBookType,Chrbookconcern,ChrGHS from StorageFirstInput t1 left join BookData t2 " & _
               " on t1.chrBookNo=t2.chrBookNo and t1.chrBookName=t2.chrBookName where t1.chrStorageNo='" & Trim(txtFields(0).Text) & "'"
   rstmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
   
   x.ReDim 0, rstmp.Recordcount - 1, 0, 7
   If rstmp.EOF Then
      MsgBox "库存首次录入表中没有库区:" & txtFields(0).Text & " 的库存记录!"
      tdbStorageInput.ReBind
      Exit Sub
   End If
   
   i = 0
   Do While Not rstmp.EOF
      x(i, 0) = -1
      x(i, 1) = rstmp.Fields("chrBookNo").Value
      x(i, 2) = rstmp.Fields("chrBookName").Value
      x(i, 3) = rstmp.Fields("chrStorageNo").Value
      x(i, 4) = rstmp.Fields("intAmount").Value
      x(i, 5) = rstmp.Fields("ChrBookType").Value
      x(i, 6) = rstmp.Fields("Chrbookconcern").Value
      x(i, 7) = rstmp.Fields("ChrGHS").Value
      rstmp.MoveNext
      i = i + 1
   Loop
   tdbStorageInput.ReBind
   
   setFormState (modBrowsing)
   
   Exit Sub
Err:
   MsgBox "查询记录出错:" & Err.Description, vbInformation
   
End Sub

Public Sub cmdSave_Click()
    On Error GoTo SaveErr
    Dim i As Long
    Dim sqlstring As String
    Dim rsNewTmp As New ADODB.Recordset
    Dim L
    
    tdbStorageInput.Update
    sqlstring = "delete From StorageFirstInput where chrStorageNo='" & Trim(txtFields(0).Text) & "'"
    cN.BeginTrans
    cN.Execute sqlstring
    
'    For Each L In U
'        i = L
'         If IsVacancy(x(i, 4)) Then
'            sqlstring = "Insert into StorageFirstInput (chrBookNo,chrBookName,chrStorageNo,intAmount) values " & _
'                        "('" & x(i, 1) & "','" & x(i, 2) & "','" & x(i, 3) & "',0)"
'         Else
'            sqlstring = "Insert into StorageFirstInput (chrBookNo,chrBookName,chrStorageNo,intAmount) values " & _
'                        "('" & x(i, 1) & "','" & x(i, 2) & "','" & x(i, 3) & "'," & x(i, 4) & ")"
'         End If
'         Debug.Print sqlstring
'         cN.Execute sqlstring
'    Next

    For i = 0 To x.UpperBound(1)
      If x(i, 0) Then
         If IsVacancy(x(i, 4)) Then
            sqlstring = "Insert into StorageFirstInput (chrBookNo,chrBookName,chrStorageNo,intAmount) values " & _
                        "('" & x(i, 1) & "','" & x(i, 2) & "','" & x(i, 3) & "',0)"
         Else
            sqlstring = "Insert into StorageFirstInput (chrBookNo,chrBookName,chrStorageNo,intAmount) values " & _
                        "('" & x(i, 1) & "','" & x(i, 2) & "','" & x(i, 3) & "'," & x(i, 4) & ")"
         End If
         cN.Execute sqlstring
      End If
    Next
    cN.CommitTrans
    Call clearAll
    blnIsModified = False
    setFormState (modBrowsing)
    Exit Sub
SaveErr:
    cN.RollbackTrans
    MsgBox "保存记录出错:" & Err.Description, vbInformation
End Sub

Private Sub cmdSearch_Click(Index As Integer)
  Dim arrQuery
  
  Select Case Index
    Case 0
' lzw 因库存区数量很少,故无必要增加过滤条件
'        Call g_CommonSelect("       库区号   |   库区名称   ", "select ChrStorageNo,ChrStorageName  from StorageSection  " & _
'                                 " where ChrStorageNo like '%" & txtFields(0).Text & "%'", "0,1", , , , -1, arrQuery)
        Call g_CommonSelect("       库区号   |   库区名称   ", "select ChrStorageNo,ChrStorageName  from StorageSection  " & _
                                 " ", "0,1", , , , -1, arrQuery)
        
        If TypeName(arrQuery) = "Variant()" Then
             txtFields(0).Text = arrQuery(0, 0)
             txtFields(1).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()
  Call ChangeToolBar(frmMain, 7, "审批", 14, "Audit")
  SetToolBar ("1100X01X101X111X1")
End Sub

Private Sub Form_Load()
  x.ReDim 0, -1, 0, 7
  Set tdbStorageInput.Array = x
  tdbStorageInput.ReBind
  Me.tdbStorageInput.MarqueeUnique = True
  
  Set U = New Collection
End Sub


Private Sub setFormState(intState As Integer)   '设置窗体的不同状态
    
    intFormState = intState
    Select Case intState
        Case ModNormal
            Me.Caption = "库存首次录入"
            setTxtWritable ("10")
    
            tdbStorageInput.AllowAddNew = False
            tdbStorageInput.AllowUpdate = False
            tdbStorageInput.AllowDelete = False
            SetToolBar ("1100X01X111X111X1")
    
    
        Case modBrowsing
            Me.Caption = "库存首次录入——浏览"
            setTxtWritable ("10")
    
            tdbStorageInput.AllowAddNew = False
            tdbStorageInput.AllowUpdate = False
            tdbStorageInput.AllowDelete = False
            SetToolBar ("1100X01X111X111X1")
        Case modadd
            Me.Caption = "库存首次录入——新增"
    
            setTxtWritable ("10")
    
            tdbStorageInput.AllowAddNew = False
            tdbStorageInput.AllowUpdate = True
            tdbStorageInput.AllowDelete = False
            SetToolBar ("0011X00X001X111X1")
        Case modEdit
            Me.Caption = "库存首次录入——修改"
            setTxtWritable ("10")
    
            tdbStorageInput.AllowAddNew = False
            tdbStorageInput.AllowUpdate = True
            tdbStorageInput.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, 7
    tdbStorageInput.ReBind

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

'--------------------------------------------------------------------------------
'功能:    设置TDBGRID列的属性 如对齐方式、是否锁定、背景色等

'参数说明:

'          intCol           列号
'          intAlignment     对齐方式  0 左对齐    1 右对齐    2 居中(默认为2)
'          blnLock          是否锁定列  TRUE 锁定  FALSE 可编辑 (默认为FALSE)
'          strBackColor     列背景色  默认为白色
'          blnVisible       是否可见

'返回值:  ()
'--------------------------------------------------------------------------------
Private Sub SetTdbGridStatus(ByVal intCol As Integer, Optional intAlignment = 2, _
                            Optional blnlock = False, Optional strBackColor = vbWhite, Optional blnVisible = True)
  On Error Resume Next

    
  tdbStorageInput.Columns(intCol).Locked = blnlock
  tdbStorageInput.Columns(intCol).Alignment = intAlignment
  tdbStorageInput.Columns(intCol).BackColor = strBackColor
  tdbStorageInput.Columns(intCol).Visible = blnVisible
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Call ChangeToolBar(frmMain, 7, "刷新", 6, "Refresh")
  SetToolBar ("0000X00X001X111X1")
  Set U = Nothing
End Sub

Private Sub tdbStorageInput_AfterUpdate()
    Dim lngE As Long
    On Error GoTo Err
    
    U.Add Me.tdbStorageInput.GetBookmark(0), CStr(tdbStorageInput.GetBookmark(0))
    
Err:
    lngE = Err.Number
    If lngE = 457 Then lngE = 0         ' 集合的关键字重复
    If lngE <> 0 Then
        Debug.Print "发生了错误!"
    End If
    
End Sub

Private Sub tdbStorageInput_KeyPress(KeyAscii As Integer)
  '限制输入条件必须为数字或某些特殊字符
    Select Case tdbStorageInput.Col
      Case 4 '书号
        KeyAscii = ValiText(KeyAscii, vbExpInteger, "", tdbStorageInput.Columns(tdbStorageInput.Col).Text)
      Case Else
        Exit Sub
    End Select
End Sub

Private Sub TxtFields_Change(Index As Integer)
  Dim sqlstring As String
  Dim rstmp As New ADODB.Recordset
  
  Select Case Index
    Case 0
      sqlstring = "select ChrStorageName from StorageSection where chrStorageNO ='" & Trim(txtFields(0)) & "'"
      rstmp.Open sqlstring, cN, adOpenKeyset, adLockReadOnly
      If Not rstmp.EOF Then
        txtFields(1).Text = rstmp.Fields("chrStorageName").Value
      Else
        txtFields(1).Text = ""
      End If
  End Select
End Sub

⌨️ 快捷键说明

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