上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:19k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Begin VB.Form YX_FrmDeptAccountC 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "部门分析条件"
  5.    ClientHeight    =   1800
  6.    ClientLeft      =   45
  7.    ClientTop       =   330
  8.    ClientWidth     =   4830
  9.    Icon            =   "因素分析_部门按科目分析条件.frx":0000
  10.    KeyPreview      =   -1  'True
  11.    LinkTopic       =   "Form2"
  12.    MaxButton       =   0   'False
  13.    MinButton       =   0   'False
  14.    ScaleHeight     =   1800
  15.    ScaleWidth      =   4830
  16.    StartUpPosition =   2  '屏幕中心
  17.    Begin VB.Frame Frame1 
  18.       Height          =   1365
  19.       Left            =   60
  20.       TabIndex        =   4
  21.       Top             =   0
  22.       Width           =   4695
  23.       Begin VB.CommandButton Ydcommand1 
  24.          Height          =   300
  25.          Index           =   0
  26.          Left            =   4260
  27.          Picture         =   "因素分析_部门按科目分析条件.frx":1042
  28.          Style           =   1  'Graphical
  29.          TabIndex        =   10
  30.          Top             =   210
  31.          Visible         =   0   'False
  32.          Width           =   300
  33.       End
  34.       Begin VB.TextBox LrText 
  35.          Height          =   300
  36.          Index           =   0
  37.          Left            =   990
  38.          TabIndex        =   9
  39.          Text            =   "0"
  40.          Top             =   210
  41.          Width           =   3285
  42.       End
  43.       Begin VB.ComboBox Combo_Type 
  44.          Height          =   300
  45.          Left            =   990
  46.          Style           =   2  'Dropdown List
  47.          TabIndex        =   8
  48.          Top             =   570
  49.          Width           =   1425
  50.       End
  51.       Begin VB.ComboBox Combo_BaseDate 
  52.          Height          =   300
  53.          Left            =   2430
  54.          Style           =   2  'Dropdown List
  55.          TabIndex        =   7
  56.          Top             =   570
  57.          Width           =   2145
  58.       End
  59.       Begin VB.ComboBox Combo_SelYear 
  60.          Height          =   300
  61.          Left            =   990
  62.          Style           =   2  'Dropdown List
  63.          TabIndex        =   6
  64.          Top             =   930
  65.          Width           =   1425
  66.       End
  67.       Begin VB.ComboBox Combo_CompDate 
  68.          Height          =   300
  69.          Left            =   2430
  70.          Style           =   2  'Dropdown List
  71.          TabIndex        =   5
  72.          Top             =   930
  73.          Width           =   2145
  74.       End
  75.       Begin VB.Label Label1 
  76.          AutoSize        =   -1  'True
  77.          Caption         =   "查询部门:"
  78.          Height          =   180
  79.          Index           =   11
  80.          Left            =   150
  81.          TabIndex        =   13
  82.          Top             =   270
  83.          Width           =   810
  84.       End
  85.       Begin VB.Label Label1 
  86.          AutoSize        =   -1  'True
  87.          Caption         =   "比较期间:"
  88.          Height          =   180
  89.          Index           =   0
  90.          Left            =   150
  91.          TabIndex        =   12
  92.          Top             =   990
  93.          Width           =   810
  94.       End
  95.       Begin VB.Label Label1 
  96.          AutoSize        =   -1  'True
  97.          Caption         =   "分析期间:"
  98.          Height          =   180
  99.          Index           =   1
  100.          Left            =   150
  101.          TabIndex        =   11
  102.          Top             =   630
  103.          Width           =   810
  104.       End
  105.    End
  106.    Begin VB.CommandButton QdCommand 
  107.       Caption         =   "确定(&O)"
  108.       Height          =   300
  109.       Left            =   2435
  110.       TabIndex        =   0
  111.       Top             =   1440
  112.       Width           =   1120
  113.    End
  114.    Begin VB.CommandButton QxCommand 
  115.       Caption         =   "取消(&C)"
  116.       Height          =   300
  117.       Left            =   3635
  118.       TabIndex        =   1
  119.       Top             =   1440
  120.       Width           =   1120
  121.    End
  122.    Begin VB.CheckBox UnloadCheck 
  123.       Caption         =   "卸载窗体"
  124.       Height          =   615
  125.       Left            =   4860
  126.       TabIndex        =   3
  127.       Top             =   960
  128.       Visible         =   0   'False
  129.       Width           =   825
  130.    End
  131.    Begin VB.Label Lbl_Comment 
  132.       Height          =   525
  133.       Left            =   -120
  134.       TabIndex        =   2
  135.       Top             =   1920
  136.       Visible         =   0   'False
  137.       Width           =   1245
  138.    End
  139. End
  140. Attribute VB_Name = "YX_FrmDeptAccountC"
  141. Attribute VB_GlobalNameSpace = False
  142. Attribute VB_Creatable = False
  143. Attribute VB_PredeclaredId = True
  144. Attribute VB_Exposed = False
  145. '****************************************************************
  146. '*    模 块 名 称 : 部门按科目分析条件
  147. '*    功 能 描 述 :
  148. '*    程序员姓名  : 魏永生
  149. '*    最后修改人  :
  150. '*    最后修改时间:2002/01/21
  151. '*    备        注:程序中所有依实际情况自定义部分均用[>>  <<]括起
  152. '****************************************************************
  153.     
  154. Dim Int_Curr_year As Integer            '分析期年
  155. Dim Int_Curr_month1 As Integer          '分析期开始月
  156. Dim Int_Curr_month2 As Integer          '分析期结束月
  157. Dim Int_Comp_year As Integer            '比较期年
  158. Dim Int_Comp_month1 As Integer          '比较期开始月
  159. Dim Int_Comp_month2 As Integer          '比较期结束月
  160. Dim Tsxx As String                      '系统信息提示
  161. Private UsedYear() As String            '已使用年数据,如:UsedYear(0)="1999",UsedYear(1)="2000"
  162. Private iHowManyYears As Integer        '已使用的年数
  163. Private iMaxMonth As Integer            '最大使用月份
  164. '以下为固定使用变量(文本框)
  165. Dim Textvar() As Variant                 '存储变体型文本框信息
  166. Dim Textboolean() As Boolean             '存储布尔型文本框信息
  167. Dim Textint() As Integer                 '存储整型文本框信息
  168. Dim Textstr() As String                  '存储字符型文本框信息
  169. Dim Max_Text_Index As Integer            '最大录入文本框索引值
  170. Dim TextGroupCode As String              '文本框录入分组编码
  171. Dim TextValiLock As Boolean              '文本框失去焦点是否进行有效性控制判断
  172. Dim TextValiJudgeLock() As Boolean       '文本框录入有效性判断控制锁
  173. Dim CurTextIndex As Integer              '当前文本框索引值
  174. Dim TextChangeLock As Boolean            '文本框内容变换控制锁
  175. Dim Bln_Cancel As Boolean                '取消按钮信息传递
  176. Private Sub Form_KeyPress(KeyAscii As Integer)    '控 制 焦 点 转 移
  177.     Dim jdzygs As Integer                         '控件焦点转移个数
  178.     jdzygs = 30
  179.     Select Case KeyAscii
  180.     Case vbKeyReturn
  181.         If Kjjdzy(jdzygs) Then
  182.             KeyAscii = 0
  183.         End If
  184.     Case 39           '屏蔽"'"
  185.         KeyAscii = 0
  186.     End Select
  187. End Sub
  188. Private Sub Form_Load()
  189.     Set Frm_AnalysisC = YF_FrmDeptC
  190.     Call GetUsedYear
  191.     Call GetUsedMonth
  192.     '填充
  193.     Call FillCombo(Combo_Type, "cwfx_AccountC", "", 0)
  194.     Call FillMonth(Combo_BaseDate, Xtyear)
  195.     Call FillYear(Combo_SelYear)
  196.     If Combo_SelYear.ListIndex <> -1 Then
  197.         Combo_CompDate.Enabled = True
  198.         Call FillMonth(Combo_CompDate, Combo_SelYear.Text)
  199.     End If
  200.     
  201.     '以下为文本框处理程序
  202.     
  203.     TextGroupCode = "cwfx_DeptBudgetC"
  204.     Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
  205.     Call Wbkcsh
  206.     
  207. End Sub
  208.                                      
  209. Private Sub FillThisYear(PastComb As ComboBox)
  210.     With PastComb
  211.         .Clear
  212.         .AddItem Xtyear
  213.         .Text = Xtyear
  214.     End With
  215. End Sub
  216. Private Sub FillYear(PastComb As ComboBox)
  217.     Dim i As Integer
  218.     With PastComb
  219.         .Clear
  220.         .AddItem ""
  221.         For i = 0 To iHowManyYears
  222.             .AddItem UsedYear(i)
  223.         Next
  224.         .Text = Xtyear
  225.     End With
  226. End Sub
  227. Private Sub FillMonth(PastComb As ComboBox, ByVal PastYear As String)
  228.     Dim i As Integer
  229.     With PastComb
  230.         .Clear
  231.         If iMaxMonth < 1 Then Exit Sub
  232.         .AddItem ""
  233.         For i = 1 To iMaxMonth
  234.             .AddItem PastYear & "." & Format(i, "00")
  235.         Next
  236.         .Text = Xtyear & "." & Format(Xtmm, "00")
  237.     End With
  238. End Sub
  239. Private Sub FillThreeMonth(PastComb As ComboBox, ByVal PastYear As String)
  240.     Dim i As Integer
  241.     With PastComb
  242.         .Clear
  243.         If iMaxMonth < 1 Then Exit Sub
  244.         .AddItem ""
  245.         For i = 1 To 4
  246.             .AddItem PastYear & "." & Format(((i - 1) * 3 + 1), "00") & "-" & PastYear & "." & Format((i * 3), "00")
  247.         Next
  248.     End With
  249. End Sub
  250. Private Sub GetUsedYear()
  251.     '由Form_Load 调用,得到此帐套已使用的年度,存于UsedYear()数据中
  252.     Dim temRs As New ADODB.Recordset
  253.     Dim strSql As String
  254.     Dim i As Integer
  255.     strSql = "SELECT DISTINCT kjyear AS cYear FROM gy_kjrlb"
  256.     Set temRs = Cw_DataEnvi.DataConnect.Execute(strSql)
  257.     iHowManyYears = temRs.RecordCount - 1
  258.     ReDim UsedYear(iHowManyYears)
  259.     With temRs
  260.         Do Until .EOF
  261.             UsedYear(i) = !cYear
  262.             i = i + 1
  263.             .MoveNext
  264.         Loop
  265.     End With
  266.     If temRs.State = adStateOpen Then temRs.Close
  267.     Set temRs = Nothing
  268. End Sub
  269. Private Sub GetUsedMonth()
  270.     '由Form_Load 调用,得到此帐套已使用的最大月份,存于iMaxMonth数据中
  271.     
  272.     Dim temRs As New ADODB.Recordset
  273.     Dim strSql As String
  274.     Dim i As Integer
  275.     strSql = "SELECT max(period) AS cMonth FROM gy_kjrlb"
  276.     Set temRs = Cw_DataEnvi.DataConnect.Execute(strSql)
  277.     With temRs
  278.         If Not (.EOF And .BOF) Then
  279.             iMaxMonth = !cMonth
  280.         End If
  281.     End With
  282.     If temRs.State = adStateOpen Then temRs.Close
  283.     Set temRs = Nothing
  284. End Sub
  285. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  286.     If UnloadCheck.Value <> 1 Then
  287.         Cancel = 1
  288.         Me.Hide
  289.     End If
  290.     
  291. End Sub
  292. Private Sub QdCommand_Click()                                   '确 定
  293.     '录入条件有效性判断
  294.     If Not Lrtjyxxpd Then
  295.         Exit Sub
  296.     End If
  297.     Me.Hide
  298.     
  299.     Str_DeptCode = lrText(0).Tag
  300.     Str_DeptName = lrText(0).Text
  301.     
  302.     Lbl_Comment.Caption = "部门:" & lrText(0).Text & "      分析期间:" & Combo_BaseDate.Text & "      比较期间:" & _
  303.     IIf(Len(Combo_CompDate.Text) <> 0, Combo_CompDate.Text, Combo_SelYear.Text)
  304.     
  305.     '激活查询过程
  306.     YX_FrmDeptAccountA.Timer1.Enabled = True
  307.     YX_FrmDeptAccountA.SetFocus
  308.     
  309. End Sub
  310. Private Sub QxCommand_Click()                                    '取消
  311.     Me.Hide
  312. End Sub
  313. Private Function Lrtjyxxpd() As Boolean                          '用户录入条件有效性判断
  314.     
  315.     Dim Jsqte As Integer
  316.     Lrtjyxxpd = False
  317.     
  318.     '查询部门不能为空
  319.     If Trim(lrText(0).Text) = "" Then
  320.         Tsxx = "查询部门不能为空!"
  321.         Call Xtxxts(Tsxx, 0, 4)
  322.         lrText(0).SetFocus
  323.         Exit Function
  324.     End If
  325.     
  326.     '对需要进行事后判断的文本框录入内容进行有效性判断 (固定不变)
  327.     For Jsqte = 0 To Max_Text_Index
  328.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  329.             If Not TextYxxpd(Jsqte) Then
  330.                 Exit Function
  331.             End If
  332.         End If
  333.     Next Jsqte
  334.     
  335.     '[>>以下为依据实际情况自定义部分
  336.     
  337.     
  338.     
  339.     '[>>以下为依据实际情况自定义部分
  340.     If Trim(Combo_BaseDate.Text) = "" Then
  341.         Xtxxts "请选择分析期间!", 0, 1
  342.         Lrtjyxxpd = False
  343.         Combo_BaseDate.SetFocus
  344.         Exit Function
  345.     End If
  346.     
  347.     If Combo_SelYear.ListIndex > 0 And Combo_Type.ListIndex <> 2 Then
  348.         If Combo_CompDate.ListIndex < 1 Then
  349.             Xtxxts "请选择比较期间!", 0, 1
  350.             Lrtjyxxpd = False
  351.             Combo_CompDate.SetFocus
  352.             Exit Function
  353.         End If
  354.     End If
  355.     '<<]以上为依据实际情况自定义部分
  356.     
  357.     Lrtjyxxpd = True
  358. End Function
  359. Private Sub Combo_SelYear_Click()
  360.     If Combo_SelYear.ListIndex = 0 Then
  361.         Combo_CompDate.Enabled = False
  362.         Combo_CompDate.Clear
  363.         Exit Sub
  364.     End If
  365.     Select Case Combo_Type.ListIndex
  366.     Case 0
  367.         Combo_CompDate.Enabled = True
  368.         Call FillMonth(Combo_CompDate, Combo_SelYear.Text)
  369.     Case 1
  370.         Combo_CompDate.Enabled = True
  371.         Call FillThreeMonth(Combo_CompDate, Combo_SelYear.Text)
  372.     Case 2
  373.         Combo_CompDate.Enabled = False
  374.     End Select
  375. End Sub
  376. Private Sub Combo_Type_Click()
  377.     Select Case Combo_Type.ListIndex
  378.     Case 0
  379.         Call FillMonth(Combo_BaseDate, Xtyear)
  380.         If Combo_SelYear.ListIndex <> -1 Then
  381.             Combo_CompDate.Enabled = True
  382.             Call FillMonth(Combo_CompDate, Combo_SelYear.Text)
  383.         End If
  384.     Case 1
  385.         Call FillThreeMonth(Combo_BaseDate, Xtyear)
  386.         If Combo_SelYear.ListIndex <> -1 Then
  387.             Combo_CompDate.Enabled = True
  388.             Call FillThreeMonth(Combo_CompDate, Combo_SelYear.Text)
  389.         End If
  390.     Case 2
  391.         Call FillThisYear(Combo_BaseDate)
  392.         Combo_CompDate.Clear
  393.         Combo_CompDate.Enabled = False
  394.     End Select
  395. End Sub
  396. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  397.     
  398.     '以下为依据实际情况自定义部分[
  399.     
  400.     '在此填写文本框录入事后处理程序
  401.     
  402.     ']以上为依据实际情况自定义部分
  403. End Sub
  404. Private Sub LrText_Change(Index As Integer)
  405.     
  406.     '屏蔽程序改变控制
  407.     If TextChangeLock Then
  408.         Exit Sub
  409.     End If
  410.     
  411.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  412.     
  413.     '限制字段录入长度
  414.     
  415.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  416.     Select Case Textint(Index, 1)
  417.     Case 8           '金额型
  418.         Call Sjgskz(lrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  419.     Case 9           '数量型
  420.         Call Sjgskz(lrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  421.     Case 10          '单价型
  422.         Call Sjgskz(lrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  423.     Case Else        '其他小数类型控制
  424.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  425.             Call Sjgskz(lrText(Index), Textint(Index, 6), Textint(Index, 7))
  426.         End If
  427.     End Select
  428.     TextChangeLock = False '解锁
  429. End Sub
  430. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  431.     Call TextShow(Index)
  432.     CurTextIndex = Index
  433.     lrText(Index).SelStart = Len(lrText(Index))
  434. End Sub
  435. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  436.     Select Case KeyCode
  437.     Case vbKeyF2
  438.         Call Text_Help(Index)
  439.     End Select
  440. End Sub
  441. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  442.     Call InputFieldLimit(lrText(Index), Textint(Index, 1), KeyAscii)
  443. End Sub
  444. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  445.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  446.         Call TextYxxpd(Index)
  447.     End If
  448. End Sub
  449. Private Sub Ydcommand1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)     '按钮提供帮助
  450.     Call Text_Help(Index)
  451. End Sub
  452. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  453.     If Not Textboolean(Index, 1) Then
  454.         Exit Sub
  455.     End If
  456.     TextValiJudgeLock(Index) = True
  457.     
  458.     '先进行有效性判断
  459.     If Not TextYxxpd(CurTextIndex) Then
  460.         Exit Sub
  461.     End If
  462.     
  463.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(lrText(Index).Text))
  464.     
  465.     If Len(Xtfhcs) <> 0 Then
  466.         If Textint(Index, 3) = 1 Then
  467.             lrText(Index).Text = Xtfhcsfz
  468.             lrText(Index).Tag = Xtfhcs
  469.         Else
  470.             lrText(Index).Text = Xtfhcs
  471.             lrText(Index).Tag = Xtfhcsfz
  472.         End If
  473.         
  474.     End If
  475.     TextValiJudgeLock(Index) = False
  476.     lrText(Index).SetFocus
  477. End Sub
  478. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  479.     
  480.     '填写文本框得到焦点,进行相应信息处理程序
  481.     
  482. End Sub
  483. Private Sub Wbkcsh()                          '录入文本框初始化
  484.     Dim Jsqte As Integer
  485.     
  486.     '最大录入文本框索引值
  487.     Max_Text_Index = Textvar(1)
  488.     
  489.     ReDim TextValiJudgeLock(Max_Text_Index)
  490.     For Jsqte = 0 To Max_Text_Index
  491.         
  492.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then
  493.             If Textboolean(Jsqte, 1) Then
  494.                 If Jsqte <> 0 And Not Textboolean(Jsqte, 3) Then
  495.                     Load Ydcommand1(Jsqte)
  496.                 End If
  497.                 Ydcommand1(Jsqte).Visible = True
  498.                 Ydcommand1(Jsqte).Move lrText(Jsqte).Left + lrText(Jsqte).Width, lrText(Jsqte).Top
  499.             End If
  500.             TextChangeLock = True
  501.             lrText(Jsqte).Text = ""
  502.             lrText(Jsqte).Tag = ""
  503.             If Textint(Jsqte, 5) <> 0 Then
  504.                 lrText(Jsqte).MaxLength = Textint(Jsqte, 5)
  505.             End If
  506.             
  507.             TextChangeLock = False
  508.         End If
  509.         TextValiJudgeLock(Jsqte) = True
  510.     Next Jsqte
  511. End Sub
  512. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  513.     Dim SqlStr As String
  514.     Dim Findrec As ADODB.Recordset
  515.     If TextValiJudgeLock(Index) Then    '文本框内容未曾改变不进行有效性判断
  516.         TextYxxpd = True
  517.         Exit Function
  518.     End If
  519.     If Trim(lrText(Index)) = "" Then
  520.         lrText(Index).Tag = ""
  521.         Call Wbklrwbcl(Index)
  522.         TextValiJudgeLock(Index) = True
  523.         TextYxxpd = True
  524.         Exit Function
  525.     End If
  526.     Select Case Textint(Index, 4)
  527.     Case 1      '编码型
  528.         SqlStr = Trim(Textstr(Index, 5))
  529.         SqlStr = Replace(SqlStr, "@", "'" + Trim(lrText(Index).Text) + "'")
  530.         Set Findrec = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  531.         If Findrec.EOF Then
  532.             Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  533.             lrText(Index).SetFocus
  534.             Exit Function
  535.         Else
  536.             Select Case Textint(Index, 3)
  537.             Case 0
  538.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  539.                     lrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  540.                 End If
  541.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  542.                     lrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  543.                 End If
  544.             Case 1
  545.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  546.                     lrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  547.                 End If
  548.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  549.                     lrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  550.                 End If
  551.             End Select
  552.         End If
  553.     Case 2      '日期型
  554.         If IsDate(lrText(Index).Text) Then
  555.             lrText(Index).Text = Format(lrText(Index).Text, "yyyy-mm-dd")
  556.         Else
  557.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  558.             Call Xtxxts(Tsxx, 0, 1)
  559.             lrText(Index).SetFocus
  560.             Exit Function
  561.         End If
  562.     Case 3      '其他类型
  563.         
  564.     End Select
  565.     TextValiJudgeLock(Index) = True
  566.     TextYxxpd = True
  567. End Function