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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{D76D7128-4A96-11D3-BD95-D296DC2DD072}#1.0#0"; "VSOCX7.OCX"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  4. Begin VB.Form Rep_SelectItem_Frm 
  5.    BackColor       =   &H80000004&
  6.    BorderStyle     =   3  'Fixed Dialog
  7.    Caption         =   "报表项目选择"
  8.    ClientHeight    =   5910
  9.    ClientLeft      =   3150
  10.    ClientTop       =   855
  11.    ClientWidth     =   6795
  12.    HelpContextID   =   2212014
  13.    Icon            =   "报表_报表项目选择.frx":0000
  14.    KeyPreview      =   -1  'True
  15.    LinkTopic       =   "Form5"
  16.    LockControls    =   -1  'True
  17.    MaxButton       =   0   'False
  18.    MinButton       =   0   'False
  19.    MousePointer    =   4  'Icon
  20.    ScaleHeight     =   5910
  21.    ScaleWidth      =   6795
  22.    ShowInTaskbar   =   0   'False
  23.    StartUpPosition =   2  '屏幕中心
  24.    Begin VSFlex8Ctl.VSFlexGrid vsFG_Choose 
  25.       Height          =   4665
  26.       Left            =   3750
  27.       TabIndex        =   3
  28.       Top             =   780
  29.       Width           =   2970
  30.       _ExtentX        =   5239
  31.       _ExtentY        =   8229
  32.       Appearance      =   1
  33.       BorderStyle     =   1
  34.       Enabled         =   -1  'True
  35.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  36.          Name            =   "宋体"
  37.          Size            =   9
  38.          Charset         =   134
  39.          Weight          =   400
  40.          Underline       =   0   'False
  41.          Italic          =   0   'False
  42.          Strikethrough   =   0   'False
  43.       EndProperty
  44.       MousePointer    =   0
  45.       BackColor       =   -2147483643
  46.       ForeColor       =   -2147483640
  47.       BackColorFixed  =   -2147483633
  48.       ForeColorFixed  =   -2147483630
  49.       BackColorSel    =   -2147483635
  50.       ForeColorSel    =   -2147483634
  51.       BackColorBkg    =   -2147483636
  52.       BackColorAlternate=   -2147483643
  53.       GridColor       =   -2147483633
  54.       GridColorFixed  =   -2147483632
  55.       TreeColor       =   -2147483632
  56.       FloodColor      =   192
  57.       SheetBorder     =   -2147483642
  58.       FocusRect       =   1
  59.       HighLight       =   1
  60.       AllowSelection  =   -1  'True
  61.       AllowBigSelection=   -1  'True
  62.       AllowUserResizing=   0
  63.       SelectionMode   =   1
  64.       GridLines       =   1
  65.       GridLinesFixed  =   2
  66.       GridLineWidth   =   1
  67.       Rows            =   0
  68.       Cols            =   10
  69.       FixedRows       =   0
  70.       FixedCols       =   0
  71.       RowHeightMin    =   0
  72.       RowHeightMax    =   0
  73.       ColWidthMin     =   0
  74.       ColWidthMax     =   0
  75.       ExtendLastCol   =   0   'False
  76.       FormatString    =   ""
  77.       ScrollTrack     =   0   'False
  78.       ScrollBars      =   3
  79.       ScrollTips      =   0   'False
  80.       MergeCells      =   0
  81.       MergeCompare    =   0
  82.       AutoResize      =   -1  'True
  83.       AutoSizeMode    =   0
  84.       AutoSearch      =   0
  85.       MultiTotals     =   -1  'True
  86.       SubtotalPosition=   1
  87.       OutlineBar      =   0
  88.       OutlineCol      =   0
  89.       Ellipsis        =   0
  90.       ExplorerBar     =   0
  91.       PicturesOver    =   0   'False
  92.       FillStyle       =   0
  93.       RightToLeft     =   0   'False
  94.       PictureType     =   0
  95.       TabBehavior     =   0
  96.       OwnerDraw       =   0
  97.       Editable        =   0   'False
  98.       ShowComboButton =   -1  'True
  99.       WordWrap        =   0   'False
  100.       TextStyle       =   0
  101.       TextStyleFixed  =   0
  102.       OleDragMode     =   0
  103.       OleDropMode     =   0
  104.       DataMode        =   0
  105.       VirtualData     =   -1  'True
  106.    End
  107.    Begin VB.CommandButton Cmd_OK 
  108.       Caption         =   "保存(&S)"
  109.       Height          =   300
  110.       Left            =   4365
  111.       TabIndex        =   4
  112.       Top             =   5520
  113.       Width           =   1120
  114.    End
  115.    Begin MSComctlLib.TreeView TV_PreField 
  116.       Height          =   4665
  117.       Left            =   75
  118.       TabIndex        =   1
  119.       Top             =   765
  120.       Width           =   2970
  121.       _ExtentX        =   5239
  122.       _ExtentY        =   8229
  123.       _Version        =   393217
  124.       Style           =   7
  125.       Appearance      =   1
  126.    End
  127.    Begin VB.CommandButton Cmd_Remove 
  128.       Caption         =   "<"
  129.       BeginProperty Font 
  130.          Name            =   "宋体"
  131.          Size            =   10.5
  132.          Charset         =   134
  133.          Weight          =   400
  134.          Underline       =   0   'False
  135.          Italic          =   0   'False
  136.          Strikethrough   =   0   'False
  137.       EndProperty
  138.       Height          =   300
  139.       Left            =   3135
  140.       TabIndex        =   7
  141.       TabStop         =   0   'False
  142.       Top             =   1335
  143.       Width           =   525
  144.    End
  145.    Begin VB.CommandButton Cmd_Choose 
  146.       Caption         =   ">"
  147.       BeginProperty Font 
  148.          Name            =   "宋体"
  149.          Size            =   10.5
  150.          Charset         =   134
  151.          Weight          =   400
  152.          Underline       =   0   'False
  153.          Italic          =   0   'False
  154.          Strikethrough   =   0   'False
  155.       EndProperty
  156.       Height          =   300
  157.       Left            =   3135
  158.       TabIndex        =   6
  159.       TabStop         =   0   'False
  160.       Top             =   930
  161.       Width           =   525
  162.    End
  163.    Begin VB.CommandButton Cmd_Cancel 
  164.       Cancel          =   -1  'True
  165.       Caption         =   "取消(&C)"
  166.       Height          =   300
  167.       Left            =   5565
  168.       TabIndex        =   5
  169.       Top             =   5520
  170.       Width           =   1120
  171.    End
  172.    Begin MSComctlLib.ImageCombo ImgCmb_Sort 
  173.       Height          =   315
  174.       Left            =   1020
  175.       TabIndex        =   10
  176.       Top             =   105
  177.       Width           =   2040
  178.       _ExtentX        =   3598
  179.       _ExtentY        =   556
  180.       _Version        =   393216
  181.       ForeColor       =   -2147483640
  182.       BackColor       =   -2147483643
  183.       Locked          =   -1  'True
  184.    End
  185.    Begin MSComctlLib.ImageCombo ImgCmb_PmSort 
  186.       Height          =   315
  187.       Left            =   4650
  188.       TabIndex        =   11
  189.       Top             =   75
  190.       Width           =   2055
  191.       _ExtentX        =   3625
  192.       _ExtentY        =   556
  193.       _Version        =   393216
  194.       ForeColor       =   -2147483640
  195.       BackColor       =   -2147483643
  196.       Locked          =   -1  'True
  197.    End
  198.    Begin VB.Label Lab_Mark 
  199.       AutoSize        =   -1  'True
  200.       Caption         =   "工资类别:"
  201.       Height          =   180
  202.       Index           =   0
  203.       Left            =   3735
  204.       TabIndex        =   9
  205.       Top             =   165
  206.       Width           =   810
  207.    End
  208.    Begin VB.Label Lab_Mark 
  209.       AutoSize        =   -1  'True
  210.       BackStyle       =   0  'Transparent
  211.       Caption         =   "报表名称:"
  212.       Height          =   180
  213.       Index           =   5
  214.       Left            =   105
  215.       TabIndex        =   8
  216.       Top             =   165
  217.       Width           =   810
  218.    End
  219.    Begin VB.Label Lab_Note 
  220.       AutoSize        =   -1  'True
  221.       Caption         =   "待选项目(&S)"
  222.       Height          =   180
  223.       Index           =   0
  224.       Left            =   105
  225.       TabIndex        =   0
  226.       Top             =   495
  227.       Width           =   990
  228.    End
  229.    Begin VB.Label Lab_Note 
  230.       AutoSize        =   -1  'True
  231.       Caption         =   "查询项目(&X)"
  232.       Height          =   180
  233.       Index           =   1
  234.       Left            =   3735
  235.       TabIndex        =   2
  236.       Top             =   525
  237.       Width           =   990
  238.    End
  239. End
  240. Attribute VB_Name = "Rep_SelectItem_Frm"
  241. Attribute VB_GlobalNameSpace = False
  242. Attribute VB_Creatable = False
  243. Attribute VB_PredeclaredId = True
  244. Attribute VB_Exposed = False
  245. '******************************************************************
  246. '*    模 块 名 称 :报表项目选择
  247. '*    功 能 描 述 :
  248. '*    程序员姓名  :苗鹏
  249. '*    最后修改人  :苗鹏
  250. '*    最后修改时间:2002/01/01
  251. '*    备        注:
  252. '******************************************************************
  253. Dim Str_RightEdit As String              '编辑(新增、修改、删除)权限索引
  254. Private Sub Cmd_Cancel_Click()
  255.     Unload Me
  256. End Sub
  257. Private Sub Cmd_Choose_Click()
  258.     Call TV_PreField_DblClick
  259. End Sub
  260. Private Sub Cmd_Ok_Click() '保存数据
  261.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  262.     If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  263.         Exit Sub
  264.     End If
  265.     On Error GoTo ErrCtrl
  266.     
  267.     Dim sRCode As String
  268.     Dim sPmSort As String
  269.     Dim s As String
  270.     Dim rs As New ADODB.Recordset
  271.     Dim i As Integer
  272.     Dim sTable As String
  273.     Dim sField As String
  274.     Dim bBeginTrans As Boolean
  275.     '判断有效性
  276.     sRCode = GetComboKey(Me.ImgCmb_Sort, 0)
  277.     With Me.ImgCmb_PmSort
  278.         If Not .SelectedItem Is Nothing Then
  279.             sPmSort = .SelectedItem.Tag
  280.         End If
  281.     End With
  282.     If Trim(sRCode) = "" Or Trim(sPmSort) = "" Then
  283.         MsgBox "报表编码和工资类别不能为空!", vbOKOnly + vbCritical
  284.         Exit Sub
  285.     End If
  286.     s = " delete FROM PM_ReportItem where RCode='" & sRCode & "' AND PmSort='" & sPmSort & "'"
  287.     With Me.vsFG_Choose
  288.         For i = .FixedRows To .Rows - 1
  289.             If GetTableField(Trim(.TextMatrix(i, 2)), sTable, sField, ".") <> 1 Then
  290.                 MsgBox "出现未知错误,程序返回原始状态!", vbOKOnly + vbCritical
  291.                 Exit Sub
  292.             End If
  293.             s = s & " INSERT INTO PM_ReportItem VALUES('" & sRCode & "','" & sPmSort & "','" & sField & "','" & sTable & "'," & i - .FixedRows & ",1000,1) " & Chr(10)
  294.         Next i
  295.     End With
  296.     
  297.     '保存
  298.     Cw_DataEnvi.DataConnect.BeginTrans
  299.     bBeginTrans = True
  300.     Cw_DataEnvi.DataConnect.Execute (s)
  301.     Cw_DataEnvi.DataConnect.CommitTrans
  302.     MsgBox "保存完毕!", vbOKOnly + vbInformation
  303.     
  304.     Exit Sub
  305.     
  306. ErrCtrl:
  307.     If bBeginTrans = True Then
  308.         Cw_DataEnvi.DataConnect.RollbackTrans
  309.     End If
  310.     MsgBox "出现未知错误,程序返回原始状态!", vbOKOnly + vbCritical
  311. End Sub
  312. Private Sub Cmd_Remove_Click()
  313.     Call vsFG_Choose_DblClick
  314. End Sub
  315. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) '快捷方式
  316.     If Shift = 4 Then '按住Alt
  317.         Select Case KeyCode
  318.             Case 190 '>
  319.                 Call Cmd_Choose_Click
  320.             Case 188 '<
  321.                 Call Cmd_Remove_Click
  322.         End Select
  323.     End If
  324.     
  325. End Sub
  326. Private Sub Form_Load()
  327.     On Error GoTo ErrCtrl
  328.     '添加工资类别
  329.     Dim s As String
  330.     Dim rs As New ADODB.Recordset
  331.     Dim itm As ComboItem
  332.     s = "SELECT b.SortID,b.SortName FROM PM_OpeSort a inner join PM_Sort b on a.SortID=b.SortID where a.Czybm='" & Xtczybm & "'"
  333.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  334.     With rs
  335.         Do While Not .EOF()
  336.             Set itm = Me.ImgCmb_PmSort.ComboItems.Add(, "@" & Trim(!SortId), Trim(!SortName))
  337.             itm.Tag = !SortId
  338.             .MoveNext
  339.         Loop
  340.         .Close
  341.     End With
  342.     If Me.ImgCmb_PmSort.ComboItems.Count <> 0 Then
  343.         Me.ImgCmb_PmSort.ComboItems.Item(1).Selected = True
  344.     End If
  345.     Set rs = Nothing
  346.     Set itm = Nothing
  347.     
  348.     FillImageCombo Me.ImgCmb_Sort, "Pm_ReportSort", 1
  349.     InitView Me.TV_PreField '初始化树并填充数据
  350.     InitGrid Me.vsFG_Choose '初始化网格结构
  351.     FillGrid '填充网格数据
  352.     '编辑(新增、修改、删除)权限索引
  353.     Str_RightEdit = "Pm_ReportItem_edit"
  354.     Exit Sub
  355.     
  356. ErrCtrl:
  357.     If rs.State = 1 Then
  358.         rs.Close
  359.     End If
  360.     Set rs = Nothing
  361.     Set itm = Nothing
  362. End Sub
  363. Private Function FillGrid() '填充已经选入的字段到网格同时删除树的对应节点
  364.     On Error GoTo ErrCtrl
  365.     
  366.     Dim rs As New ADODB.Recordset
  367.     Dim s As String
  368.     Dim sRCode As String
  369.     Dim sPmSort As String
  370.     
  371.     Me.vsFG_Choose.Redraw = False
  372.     Me.vsFG_Choose.Rows = Me.vsFG_Choose.FixedRows
  373.     '取得报表编码和工资类别
  374.     sRCode = GetComboKey(Me.ImgCmb_Sort, 0)
  375.     sPmSort = Me.ImgCmb_PmSort.SelectedItem.Tag
  376.     '调用 ChooseItem 函数
  377.     s = "SELECT FieldName ,TableName FROM PM_ReportItem where RCode='" & sRCode & "' AND PmSort='" & sPmSort & "'  Order by FieldOrder"
  378.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  379.     With rs
  380.         Do While Not .EOF()
  381.             Me.TV_PreField.SelectedItem = Me.TV_PreField.Nodes(UCase(Trim(!TableName) & "." & Trim(!FieldName)))
  382.             ChooseItem Me.TV_PreField, Me.vsFG_Choose
  383.             .MoveNext
  384.         Loop
  385.     End With
  386.     Me.vsFG_Choose.Redraw = True
  387.     Exit Function
  388.     
  389. ErrCtrl:
  390.     If rs.State = 1 Then
  391.         rs.Close
  392.     End If
  393.     Set rs = Nothing
  394.     Me.vsFG_Choose.Redraw = True
  395. End Function
  396. Private Sub ImgCmb_PmSort_Click()
  397.     Call ImgCmb_Sort_Click
  398. End Sub
  399. Private Sub ImgCmb_Sort_Click()
  400.     On Error Resume Next
  401.     InitView Me.TV_PreField
  402.     FillGrid
  403. End Sub
  404. Private Sub TV_PreField_BeforeLabelEdit(Cancel As Integer)
  405.     Cancel = True
  406. End Sub
  407. Private Function ChooseItem(tv As TreeView, vs As vsFlexGrid) '选择字段
  408.     On Error GoTo ErrCtrl
  409.     
  410.     Dim nod As Node
  411.     Dim i As Integer
  412.     Dim Item As ComboItem
  413.     Set nod = tv.SelectedItem
  414.     
  415.     If Not nod.Parent Is Nothing Then
  416.         '添加网格
  417.         i = nod.Parent.Index
  418.         With vs
  419.             .AddItem ""
  420.             .TextMatrix(.Rows - 1, 0) = nod.Parent.Key
  421.             .TextMatrix(.Rows - 1, 1) = nod.Parent.Text
  422.             .TextMatrix(.Rows - 1, 2) = nod.Key
  423.             .TextMatrix(.Rows - 1, 3) = nod.Text
  424.             .TextMatrix(.Rows - 1, 4) = nod.Tag
  425.             .TextMatrix(.Rows - 1, 5) = nod.Parent.Text & "." & nod.Text
  426.         End With
  427.         '删除节点
  428.         If nod.Parent.Children = 1 Then
  429.             tv.Nodes.Remove nod.Index
  430.             tv.Nodes.Remove i
  431.         Else
  432.             tv.Nodes.Remove nod.Index
  433.         End If
  434.     End If
  435.     Set nod = Nothing
  436.     Exit Function
  437.     
  438. ErrCtrl:
  439.     Dim smsg As String
  440.     Dim smsgSys As String
  441.     smsg = GetError(Err.Number)
  442.     smsgSys = Err.Number & Err.Description & "!"
  443.     MsgBox IIf(smsg = "", smsgSys, smsg), vbOKOnly + vbCritical
  444. End Function
  445. Private Function RemoveItem(vs As vsFlexGrid, tv As TreeView) '删除字段
  446.     On Error GoTo ErrCtrl
  447.     
  448.     Dim nod As Node
  449.     '增加树节点
  450.     With Me.TV_PreField
  451.         
  452.         If Not IsNodeExist(Trim(vs.TextMatrix(vs.Row, 0)), Me.TV_PreField) Then
  453.             Set nod = tv.Nodes.Add("R", tvwChild, Trim(vs.TextMatrix(vs.Row, 0)), Trim(vs.TextMatrix(vs.Row, 1)))
  454.             Set nod = tv.Nodes.Add(Trim(vs.TextMatrix(vs.Row, 0)), tvwChild, Trim(vs.TextMatrix(vs.Row, 2)), Trim(vs.TextMatrix(vs.Row, 3)))
  455.             nod.Tag = Trim(vs.TextMatrix(vs.Row, 4))
  456.         Else
  457.             Set nod = tv.Nodes.Add(Trim(vs.TextMatrix(vs.Row, 0)), tvwChild, Trim(vs.TextMatrix(vs.Row, 2)), Trim(vs.TextMatrix(vs.Row, 3)))
  458.             nod.Tag = Trim(vs.TextMatrix(vs.Row, 4))
  459.         End If
  460.         
  461.     '删除当前行
  462.     vs.RemoveItem (vs.Row)
  463.     End With
  464.     Exit Function
  465.     
  466. ErrCtrl:
  467.     Dim smsg As String
  468.     Dim smsgSys As String
  469.     smsg = GetError(Err.Number)
  470.     smsgSys = Err.Number & Err.Description & "!"
  471.     MsgBox IIf(smsg = "", smsgSys, smsg), vbOKOnly + vbCritical
  472. End Function
  473. Private Function InitGrid(vs As vsFlexGrid) '初始化网格
  474.     '第1列:表的物理名
  475.     '第2列:表的用户名
  476.     '第3列:字段的物理名
  477.     '第4列:字段的帮助信息
  478.     '第5列:字段的用户名
  479.     
  480.     On Error GoTo ErrCtrl
  481.     
  482.     Dim i As Integer
  483.     With vs
  484.         .Cols = 6
  485.         For i = 0 To .Cols - 2
  486.             .ColHidden(i) = True
  487.         Next i
  488.         .ColWidth(.Cols - 1) = .Width - 100
  489.     End With
  490.     Exit Function
  491.     
  492. ErrCtrl:
  493.     Dim smsg As String
  494.     Dim smsgSys As String
  495.     smsg = GetError(Err.Number)
  496.     smsgSys = Err.Number & Err.Description & "!"
  497.     MsgBox IIf(smsg = "", smsgSys, smsg), vbOKOnly + vbCritical
  498. End Function
  499. Private Sub TV_PreField_DblClick()
  500.     If Me.TV_PreField.SelectedItem Is Nothing Then
  501.         Exit Sub
  502.     End If
  503.     If Me.TV_PreField.SelectedItem.Children = 0 Then
  504.         ChooseItem Me.TV_PreField, Me.vsFG_Choose
  505.     End If
  506. End Sub
  507. Private Sub TV_PreField_KeyPress(KeyAscii As Integer)
  508.     If KeyAscii = 13 Then
  509.         Call TV_PreField_DblClick
  510.     End If
  511. End Sub
  512. Private Sub vsFG_Choose_DblClick()
  513.     If Me.vsFG_Choose.Rows > 0 Then
  514.         RemoveItem Me.vsFG_Choose, Me.TV_PreField
  515.     End If
  516. End Sub
  517. Private Sub vsFG_Choose_KeyPress(KeyAscii As Integer)
  518.     If KeyAscii = 13 Then
  519.         Call vsFG_Choose_DblClick
  520.     End If
  521. End Sub