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

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 2 页
字号:
      Index           =   1
      Left            =   270
      TabIndex        =   17
      Top             =   660
      Width           =   810
   End
End
Attribute VB_Name = "AutoTran_PzAss"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'************************************************************************************
'*    模 块 名 称 :辅助核算项目录入
'*    功 能 描 述 :能够根据科目辅助核算项,自动出现辅助核算项目,并自动调整
'*                 录入项目位置及窗体大小
'*    程序员姓名  : 张建忠
'*    最后修改人  : 张建忠
'*    最后修改时间:2000/09/07
'*    备        注:
'*
'*    1.对于网格列存储内容
'*      0-行有效标识 1-结算方式编码 2-结算方式名称 3-票号 4-发生日期 5-数量 6-单价
'*      7-计量单位 8-外币编码 9-外币名称 10-汇率 11-部门编码 12-部门名称 13-单位编码
'*      14-单位名称  15-职员编码 16-职员名称 17-项目大类编码 18-项目大类名称
'*      19-项目编码 20-项目名称 21-项目数量 22-项目计量单位
'************************************************************************************
 
Dim RecTemp As New ADODB.Recordset       '临时使用动态集
Dim jdzygs As Integer                    '控件焦点转移个数
Dim Tsxx As String                       '系统提示信息
Dim Bln_FirstTab As Boolean              '是否首次产生Tab键(主要用来判断Tab键是否由填置凭证窗体引起)
  

'以下为固定使用变量(文本框)
Dim Textvar() As Variant                 '存储变体型文本框信息
Dim Textboolean() As Boolean             '存储布尔型文本框信息
Dim Textint() As Integer                 '存储整型文本框信息
Dim Textstr() As String                  '存储字符型文本框信息
Dim Max_Text_Index As Integer            '最大录入文本框索引值
Dim TextGroupCode As String              '文本框录入分组编码
Dim TextValiLock As Boolean              '文本框失去焦点是否进行有效性控制判断
Dim TextValiJudgeLock() As Boolean       '文本框录入有效性判断控制锁
Dim CurTextIndex As Integer              '当前文本框索引值
Dim TextChangeLock As Boolean            '文本框内容变换控制锁
Dim Bln_Cancel As Boolean                '取消按钮信息传递
Private Sub Form_KeyPress(KeyAscii As Integer)   '控 制 焦 点 转 移
    jdzygs = 20
    Select Case KeyAscii
    Case vbKeyReturn
        If Kjjdzy(jdzygs) Then
            KeyAscii = 0
        End If
    Case 39           '屏蔽"'"
        KeyAscii = 0
    End Select
End Sub

'[ZJZ Begin 改进由填制凭证窗体引发的焦点转移 2001-06-16
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    If Bln_FirstTab Then
        For jsqte = 0 To Max_Text_Index
            If LrText(jsqte).Visible And LrText(jsqte).Enabled Then
                LrText(jsqte).SetFocus
                Exit For
            End If
        Next jsqte
    End If
    Bln_FirstTab = False
End Sub

'[ZJZ End

Private Sub Form_Load()
    
    '以下为文本框处理程序
    
    TextGroupCode = "Cwzz_Ass"
    Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
    Call Wbkcsh
    Bln_FirstTab = True
End Sub

Private Function Bclrsj() As Boolean                   '判断录入数据有效性,并保存数据
    Dim jsqte As Integer
    Dim Int_GridRow As Integer     '数据回写网格行
    
    For jsqte = 0 To Max_Text_Index
        If Textint(jsqte, 8) = 1 And LrText(jsqte).Visible Then     '字段不能为空
            If Len(Trim(LrText(jsqte).Text)) = 0 Then
                Tsxx = Textstr(jsqte, 7) & "不能为空!"
                Call Xtxxts(Tsxx, 0, 1)
                LrText(jsqte).SetFocus
                Bclrsj = False
                Exit Function
            End If
        Else
            If Textint(jsqte, 8) = 2 And LrText(jsqte).Visible Then   '字段不能为零
                If Val(Trim(LrText(jsqte).Text)) = 0 Then
                    Tsxx = Textstr(jsqte, 7) & "不能为零!"
                    Call Xtxxts(Tsxx, 0, 1)
                    LrText(jsqte).SetFocus
                    Bclrsj = False
                    Exit Function
                End If
            End If
        End If
    Next jsqte
    
    '对需要进行事后判断的文本框录入内容进行有效性判断 (固定不变)
    For jsqte = 0 To Max_Text_Index
        If (Textint(jsqte, 9) = 0 Or Textint(jsqte, 9) = 2) And LrText(jsqte).Visible Then
            If Not TextYxxpd(jsqte) Then
                Exit Function
            End If
        End If
    Next jsqte
    
    '如项目核算数量,则项目数量不能为零
    
    If Len(Trim(Lab_ItemMeasure)) <> 0 And Val(LrText(11)) = 0 Then
        Tsxx = "此项目核算数量,则项目数量不能为零!"
        Call Xtxxts(Tsxx, 0, 1)
        LrText(11).SetFocus
        Exit Function
    End If
    
    Int_GridRow = Val(lab_GridRow)
    With AutoTran_PzFrm
        For jsqte = 0 To Max_Text_Index
            If LrText(jsqte).Visible Then
                Select Case jsqte
                Case 0   '结算方式
                    .WglrGrid.TextMatrix(Int_GridRow, 1) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 2) = Trim(LrText(jsqte).Text)
                Case 1   '票号
                    .WglrGrid.TextMatrix(Int_GridRow, 3) = Trim(LrText(jsqte).Text)
                Case 2   '发生日期
                    .WglrGrid.TextMatrix(Int_GridRow, 4) = Trim(LrText(jsqte).Text)
                Case 3   '数量
                    .WglrGrid.TextMatrix(Int_GridRow, 5) = Val(LrText(jsqte).Text)
                Case 4   '单价
                    .WglrGrid.TextMatrix(Int_GridRow, 6) = Val(LrText(jsqte).Text)
                Case 5   '外币金额
                    .WglrGrid.TextMatrix(Int_GridRow, 10) = Trim(LrText(jsqte).Text)
                Case 6     '汇率
                    .WglrGrid.TextMatrix(Int_GridRow, 11) = Trim(LrText(jsqte).Text)
                Case 7     '部门
                    .WglrGrid.TextMatrix(Int_GridRow, 12) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 13) = Trim(LrText(jsqte).Text)
                Case 8     '客户
                    .WglrGrid.TextMatrix(Int_GridRow, 14) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 15) = Trim(LrText(jsqte).Text)
                Case 9     '个人
                    .WglrGrid.TextMatrix(Int_GridRow, 16) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 17) = Trim(LrText(jsqte).Text)
                Case 10     '项目
                    .WglrGrid.TextMatrix(Int_GridRow, 20) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 21) = Trim(LrText(jsqte).Text)
                Case 11     '项目数量
                    If Len(Trim(Lab_ItemMeasure)) <> 0 Then
                        .WglrGrid.TextMatrix(Int_GridRow, 22) = Trim(LrText(jsqte).Text)
                        .WglrGrid.TextMatrix(Int_GridRow, 23) = Trim(Lab_ItemMeasure)
                    Else
                        .WglrGrid.TextMatrix(Int_GridRow, 22) = ""
                        .WglrGrid.TextMatrix(Int_GridRow, 23) = ""
                    End If
                Case 12      '供应商
                    .WglrGrid.TextMatrix(Int_GridRow, 25) = Trim(LrText(jsqte).Tag)
                    .WglrGrid.TextMatrix(Int_GridRow, 26) = Trim(LrText(jsqte).Text)
                Case 13     '经办人
                    .WglrGrid.TextMatrix(Int_GridRow, 24) = Trim(LrText(jsqte).Text)
                End Select
            End If
        Next jsqte
    End With
    
    Bclrsj = True
    
End Function

Private Sub BcCommand_Click()                                           '保 存
    If Not Bclrsj Then
        Exit Sub
    End If
    Unload Me
End Sub

Private Sub QxCommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)       '取消
    '避免执行Click程序
    Bln_Cancel = True
    
    Call Sub_Cancel
End Sub

Private Sub QxCommand_Click()                                                                         '取消
    If Bln_Cancel Then
        Bln_Cancel = False
        Exit Sub
    End If
    
    Call Sub_Cancel
End Sub

Private Sub Sub_Cancel()                                                                                  '取消
    '文本框加锁
    For jsqte = 0 To Max_Text_Index
        TextValiJudgeLock(jsqte) = True
    Next jsqte
    Unload Me
End Sub

'************以下为文本框录入处理程序(固定不变部分)*************'

Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
    
    '以下为依据实际情况自定义部分[
    
    '在此填写文本框录入事后处理程序
    
    ']以上为依据实际情况自定义部分
End Sub

Private Sub LrText_Change(Index As Integer)
    
    '屏蔽程序改变控制
    If TextChangeLock Then
        Exit Sub
    End If
    
    TextValiJudgeLock(Index) = False    '打开有效性判断锁
    
    '限制字段录入长度
    
    TextChangeLock = True  '加锁(防止执行Lrtext_Change)
    Select Case Textint(Index, 1)
    Case 8           '金额型
        Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
    Case 9           '数量型
        Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
    Case 10          '单价型
        Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
    Case Else        '其他小数类型控制
        If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
            Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
        End If
    End Select
    TextChangeLock = False '解锁
End Sub

Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
    Call TextShow(Index)
    CurTextIndex = Index
    LrText(Index).SelStart = Len(LrText(Index))
End Sub

Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
    Select Case KeyCode
    Case vbKeyF2
        Call Text_Help(Index)
    End Select
End Sub

Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
    Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
End Sub


Private Sub Ydcommand1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)     '按钮提供帮助
    
    Call Text_Help(Index)
    
End Sub

Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
    If Not Textboolean(Index, 1) Then
        Exit Sub
    End If
    TextValiJudgeLock(Index) = True
    
    '先进行有效性判断
    If Not TextYxxpd(CurTextIndex) Then
        Exit Sub
    End If
    
    If Index = 10 Then        '核算项目特殊处理
        Xtcdcs = Trim(LrText(Index).Text)
        Xtcdcsfz = Lab_ItemClass.Tag
        XT_ItemHelp.Show 1
    Else
        Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
    End If
    If Len(Xtfhcs) <> 0 Then
        If Textint(Index, 3) = 1 Then
            LrText(Index).Text = Xtfhcsfz
            LrText(Index).Tag = Xtfhcs
        Else
            LrText(Index).Text = Xtfhcs
            LrText(Index).Tag = Xtfhcsfz
        End If
        
    End If
    TextValiJudgeLock(Index) = False
    LrText(Index).SetFocus
End Sub

Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
    
    '填写文本框得到焦点,进行相应信息处理程序
    
End Sub

Private Sub Wbkcsh()                          '录入文本框初始化
    Dim jsqte As Integer
    
    '最大录入文本框索引值
    Max_Text_Index = Textvar(1)
    
    ReDim TextValiJudgeLock(Max_Text_Index)
    For jsqte = 0 To Max_Text_Index
        
        If Len(Trim(Textstr(jsqte, 1))) <> 0 Then
            If Textboolean(jsqte, 1) Then
                If jsqte <> 0 And Not Textboolean(jsqte, 3) Then
                    Load Ydcommand1(jsqte)
                End If
                Ydcommand1(jsqte).Visible = True
                Ydcommand1(jsqte).Move LrText(jsqte).Left + LrText(jsqte).Width, LrText(jsqte).Top
            End If
            TextChangeLock = True
            LrText(jsqte).Text = ""
            LrText(jsqte).Tag = ""
            If Textint(jsqte, 5) <> 0 Then
                LrText(jsqte).MaxLength = Textint(jsqte, 5)
            End If
            TextChangeLock = False
        End If
        TextValiJudgeLock(jsqte) = True
    Next jsqte
End Sub

Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
    Dim Sqlstr As String
    Dim Findrec As ADODB.Recordset
    If TextValiJudgeLock(Index) Then    '文本框内容未曾改变不进行有效性判断
        TextYxxpd = True
        Exit Function
    End If
    If Trim(LrText(Index)) = "" Then
        LrText(Index).Tag = ""
        Call Wbklrwbcl(Index)
        TextValiJudgeLock(Index) = True
        TextYxxpd = True
        Exit Function
    End If
    Select Case Textint(Index, 4)
    Case 1      '编码型
        Sqlstr = Trim(Textstr(Index, 5))
        Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
        Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
        If Findrec.EOF Then
            Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
            LrText(Index).SetFocus
            Exit Function
        Else
            Select Case Textint(Index, 3)
            Case 0
                If Len(Trim(Textstr(Index, 2))) <> 0 Then
                    LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
                End If
                If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
                    LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
                End If
            Case 1
                If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
                    LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
                End If
                If Len(Trim(Textstr(Index, 2))) <> 0 Then
                    LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
                End If
            End Select
        End If
    Case 2      '日期型
        If IsDate(LrText(Index).Text) Then
            LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
        Else
            Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
            Call Xtxxts(Tsxx, 0, 1)
            LrText(Index).SetFocus
            Exit Function
        End If
    Case 3      '其他类型
        Select Case Index
        Case 10                  '项目
            Sqlstr = "select * from Cwzz_item where ItemClassCode='" & Lab_ItemClass.Tag & "' and (ItemCode='" & Trim(LrText(10).Text) & "' or ItemName='" & Trim(LrText(10).Text) & "')"
            Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
            If Findrec.EOF Then
                Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
                LrText(Index).SetFocus
                Exit Function
            Else
                Select Case Textint(Index, 3)
                Case 0
                    If Len(Trim(Textstr(Index, 2))) <> 0 Then
                        LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
                    End If
                    If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
                        LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
                    End If
                Case 1
                    If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
                        LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
                    End If
                    If Len(Trim(Textstr(Index, 2))) <> 0 Then
                        LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
                    End If
                End Select
                If Findrec.Fields("QuantityFlag") Then   '数量核算显示单位
                    Lab_ItemMeasure = Trim(Findrec.Fields("Measure"))
                Else
                    LrText(11).Text = ""
                    Lab_ItemMeasure = ""
                End If
            End If
        End Select
    End Select
    TextValiJudgeLock(Index) = True
    TextYxxpd = True
End Function

⌨️ 快捷键说明

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