frmItem.frm
上传用户:djzm888
上传日期:2013-02-15
资源大小:867k
文件大小:16k
源码类别:

其他数据库

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
  3. Begin VB.Form frmItem 
  4.    BorderStyle     =   3  'Fixed Dialog
  5.    Caption         =   "项目管理"
  6.    ClientHeight    =   3720
  7.    ClientLeft      =   45
  8.    ClientTop       =   330
  9.    ClientWidth     =   5715
  10.    BeginProperty Font 
  11.       Name            =   "宋体"
  12.       Size            =   10.5
  13.       Charset         =   134
  14.       Weight          =   400
  15.       Underline       =   0   'False
  16.       Italic          =   0   'False
  17.       Strikethrough   =   0   'False
  18.    EndProperty
  19.    Icon            =   "frmItem.frx":0000
  20.    KeyPreview      =   -1  'True
  21.    LinkTopic       =   "Form1"
  22.    LockControls    =   -1  'True
  23.    MaxButton       =   0   'False
  24.    MinButton       =   0   'False
  25.    ScaleHeight     =   3720
  26.    ScaleWidth      =   5715
  27.    ShowInTaskbar   =   0   'False
  28.    StartUpPosition =   1  '所有者中心
  29.    Begin VB.TextBox txtEdit 
  30.       Height          =   345
  31.       Left            =   690
  32.       TabIndex        =   10
  33.       Top             =   1695
  34.       Visible         =   0   'False
  35.       Width           =   1185
  36.    End
  37.    Begin VB.Frame fraName 
  38.       Height          =   930
  39.       Left            =   2910
  40.       TabIndex        =   8
  41.       Top             =   975
  42.       Width           =   2565
  43.       Begin VB.TextBox txtName 
  44.          Height          =   360
  45.          Left            =   960
  46.          TabIndex        =   1
  47.          Top             =   345
  48.          Width           =   1395
  49.       End
  50.       Begin VB.Label Label1 
  51.          AutoSize        =   -1  'True
  52.          BackStyle       =   0  'Transparent
  53.          Caption         =   "名 称:"
  54.          Height          =   210
  55.          Left            =   180
  56.          TabIndex        =   9
  57.          Top             =   420
  58.          Width           =   630
  59.       End
  60.    End
  61.    Begin VB.ComboBox cboTable 
  62.       Height          =   330
  63.       Left            =   2910
  64.       Style           =   2  'Dropdown List
  65.       TabIndex        =   0
  66.       Top             =   510
  67.       Width           =   2565
  68.    End
  69.    Begin VB.Frame fraCmd 
  70.       Height          =   1440
  71.       Left            =   2910
  72.       TabIndex        =   6
  73.       Top             =   2040
  74.       Width           =   2565
  75.       Begin VB.CommandButton cmdEdit 
  76.          Enabled         =   0   'False
  77.          Height          =   435
  78.          Index           =   3
  79.          Left            =   120
  80.          Picture         =   "frmItem.frx":000C
  81.          Style           =   1  'Graphical
  82.          TabIndex        =   2
  83.          Top             =   270
  84.          Width           =   1140
  85.       End
  86.       Begin VB.CommandButton cmdEdit 
  87.          Height          =   435
  88.          Index           =   2
  89.          Left            =   1350
  90.          Picture         =   "frmItem.frx":1DAB
  91.          Style           =   1  'Graphical
  92.          TabIndex        =   5
  93.          Top             =   840
  94.          Width           =   1140
  95.       End
  96.       Begin VB.CommandButton cmdEdit 
  97.          Enabled         =   0   'False
  98.          Height          =   435
  99.          Index           =   1
  100.          Left            =   120
  101.          Picture         =   "frmItem.frx":3C1C
  102.          Style           =   1  'Graphical
  103.          TabIndex        =   4
  104.          Top             =   840
  105.          Width           =   1140
  106.       End
  107.       Begin VB.CommandButton cmdEdit 
  108.          Enabled         =   0   'False
  109.          Height          =   435
  110.          Index           =   0
  111.          Left            =   1350
  112.          Picture         =   "frmItem.frx":5A1C
  113.          Style           =   1  'Graphical
  114.          TabIndex        =   3
  115.          Top             =   270
  116.          Width           =   1140
  117.       End
  118.    End
  119.    Begin MSFlexGridLib.MSFlexGrid msfGrid 
  120.       Height          =   3300
  121.       Left            =   285
  122.       TabIndex        =   7
  123.       Top             =   210
  124.       Width           =   2370
  125.       _ExtentX        =   4180
  126.       _ExtentY        =   5821
  127.       _Version        =   393216
  128.       Cols            =   1
  129.       FixedCols       =   0
  130.       FormatString    =   "<名    称          "
  131.    End
  132.    Begin VB.Label Label2 
  133.       Caption         =   "请选择表名:"
  134.       Height          =   270
  135.       Left            =   2940
  136.       TabIndex        =   11
  137.       Top             =   225
  138.       Width           =   1170
  139.    End
  140. End
  141. Attribute VB_Name = "frmItem"
  142. Attribute VB_GlobalNameSpace = False
  143. Attribute VB_Creatable = False
  144. Attribute VB_PredeclaredId = True
  145. Attribute VB_Exposed = False
  146. Option Explicit
  147. Dim mTableName As String
  148. Dim mRst As Recordset
  149. Dim mSql As String
  150. Dim mOldName As String
  151. Private Type ItemStruc
  152.     ID As Long
  153.     TableName As String
  154.     Alias As String
  155. End Type
  156. Dim mATable() As ItemStruc
  157. '*****cmdEdit
  158. Const mAPPEND = 3
  159. Const mDELETE = 0
  160. Const mSAVE = 1
  161. Const mRETURN = 2
  162. '******msfGrid
  163. Const mGridName = 0
  164. Const mGRIDID = 1
  165. Const mGRIDLOG = 2
  166. Const mFormatString = "<名    称          |<ID |<Log"
  167. Const mMsg1 = "名称不能为空,请您输入名称后再试!!"
  168. Const mMsg2 = "请选择表名!!"
  169. Const mMsg3 = "对不起!您不能删除该记录,因该职务员工表在用!"
  170. Const mMsg4 = "对不起!您不能删除该记录,因该请假类型在用!"
  171. Const mMsg5 = "对不起!您不能删除该记录,因该部门还有员工!"
  172. Private Sub IniForm()
  173.     SetGridColor msfGrid
  174.     With msfGrid
  175.         .FormatString = mFormatString
  176.         .ColWidth(mGRIDID) = 0
  177.         .ColWidth(mGRIDLOG) = 0
  178.     End With
  179.     txtEdit.BackColor = gGridBackColor
  180. End Sub
  181. Private Sub cboTable_Click()
  182.     Dim IntID As Long
  183.     With cboTable
  184.         If .ListIndex = -1 Then Exit Sub
  185.         IntID = .ItemData(.ListIndex)
  186.         Dim strTable As String
  187.         strTable = GetTableName(IntID)
  188.         If strTable = Empty Then Exit Sub
  189.         mTableName = strTable
  190.         RefreshGrid strTable
  191.     End With
  192. End Sub
  193. Private Sub RefreshGrid(strTable As String)
  194.     mSql = " select * from " & strTable _
  195.         & " where F_DelFlag=" & gFALSE _
  196.         & " order by ID"
  197.     Set mRst = gDataBase.OpenRecordset(mSql, dbOpenSnapshot)
  198.     Dim Str As String
  199.     Dim intRows As Integer
  200.     Dim intCols As Integer
  201.     While Not mRst.EOF
  202.         intRows = intRows + 1
  203.         Str = Str & Trim(mRst!Name) & vbTab
  204.         Str = Str & CStr(mRst!ID) & vbTab
  205.         Str = Str & gFALSE
  206.         If Not mRst.EOF Then Str = Str & vbCr
  207.         mRst.MoveNext
  208.     Wend
  209.     mRst.Close
  210.     Set mRst = Nothing
  211.     intCols = 3
  212.     intRows = intRows + msfGrid.FixedRows
  213.     ClipToGrid msfGrid, Str, intRows, intCols
  214.     cmdEdit(mDELETE).Enabled = (msfGrid.Rows > msfGrid.FixedRows)
  215. End Sub
  216. Private Sub cboTable_KeyDown(KeyCode As Integer, Shift As Integer)
  217.     If KeyCode = vbKeyReturn Then
  218.         SendKeyTab KeyCode
  219.     End If
  220. End Sub
  221. Private Sub cmdEdit_Click(Index As Integer)
  222.     Select Case Index
  223.         Case mAPPEND
  224.             AppendData
  225.         Case mSAVE
  226.             SaveData
  227.         Case mDELETE
  228.             DeleteData
  229.             cmdEdit(mDELETE).Enabled = (msfGrid.Rows > msfGrid.FixedRows)
  230.         Case mRETURN
  231.             If cmdEdit(mSAVE).Enabled Then
  232.                 If MsgBox(gMsg8, vbQuestion + vbYesNo, gTitle) = vbYes Then
  233.                     SaveData
  234.                 End If
  235.             End If
  236.             Unload Me
  237.     End Select
  238. End Sub
  239. Private Sub SaveData()
  240.     With msfGrid
  241.         If Not ValidTableName Then Exit Sub
  242.         Dim I As Integer
  243.         Dim strName As String
  244.         Dim lngID As Long
  245.         Dim intLog As Integer
  246.         On Error GoTo SaveErr
  247.         For I = .FixedRows To .Rows - 1
  248.             intLog = CInt(.TextMatrix(I, mGRIDLOG))
  249.             
  250.             If intLog = gTRUE Then
  251.                 lngID = Val(.TextMatrix(I, mGRIDID))
  252.                 strName = Trim(.TextMatrix(I, mGridName))
  253.                 mSql = " Update " & mTableName _
  254.                     & " set Name='" & strName & "'" _
  255.                     & " where ID=" & lngID
  256.                 gDataBase.Execute mSql
  257.                 .TextMatrix(I, mGRIDLOG) = gFALSE
  258.             End If
  259.         Next
  260.     End With
  261.     cmdEdit(mSAVE).Enabled = False
  262.     Exit Sub
  263. SaveErr:
  264.     MsgBox gMsg5 & vbCrLf & Err.Description, vbExclamation, gTitle
  265.     Err.Clear
  266. End Sub
  267. Private Sub DeleteData()
  268.     Dim IsTrans As Boolean
  269.     With msfGrid
  270.         If .Rows <= .FixedRows Then Exit Sub
  271.         If .row < .FixedRows Then
  272.             MsgBox gMsg4, vbExclamation, gTitle
  273.             Exit Sub
  274.         End If
  275.         Dim tmpStr As String
  276. '        If mTableName = "Title" Then
  277. '            tmpStr = mMsg3
  278. '        ElseIf mTableName = "LeaveType" Then
  279. '            tmpStr = mMsg4
  280. '        ElseIf mTableName = "Department" Then
  281. '            tmpStr = mMsg5
  282. '        End If
  283. '
  284. '        If MsgBox(tmpStr, vbQuestion + vbOKCancel _
  285. '            + vbDefaultButton2, gTitle) = vbCancel Then Exit Sub
  286.         If MsgBox(gMsg10, vbOKCancel + vbQuestion + vbDefaultButton2) = vbCancel Then Exit Sub
  287.         
  288.         Dim lngID As Long
  289.         lngID = Val(.TextMatrix(.row, mGRIDID))
  290.         
  291.         If mTableName = "Title" Then
  292.             mSql = "select * from Employee where TitleID=" _
  293.                 & lngID & " order by WorkNo"
  294.         ElseIf mTableName = "LeaveType" Then
  295.             mSql = "select * from Leave where TypeId=" _
  296.                 & lngID & " order by WorkNo"
  297.         ElseIf mTableName = "Department" Then
  298.             mSql = "select * from Employee where DeptID=" _
  299.                 & lngID & " order by WorkNo"
  300.         End If
  301.         
  302.         Set mRst = gDataBase.OpenRecordset(mSql)
  303.         If mRst.RecordCount > 0 Then
  304.             If mTableName = "Title" Then
  305.                 tmpStr = mMsg3
  306.             ElseIf mTableName = "LeaveType" Then
  307.                 tmpStr = mMsg4
  308.             ElseIf mTableName = "Department" Then
  309.                 tmpStr = mMsg5
  310.             End If
  311.             MsgBox tmpStr, vbExclamation, gTitle
  312.             Exit Sub
  313.         End If
  314.         If Not ValidTableName Then Exit Sub
  315.         On Error GoTo DeleteErr
  316.         BeginTrans
  317.         IsTrans = True
  318.         
  319. '        If mTableName = "LeaveType" Then
  320. '            mSql = "update " & "Leave" & _
  321. '                " set F_DelFlag=" & gTRUE _
  322. '                & " Where TypeID=" & lngID
  323. '        ElseIf mTableName = "Title" Then
  324. '            mSql = "update " & "Employee" & _
  325. '                " set F_DelFlag=" & gTRUE _
  326. '                & " Where TitleID=" & lngID
  327. '        ElseIf mTableName = "Department" Then
  328. '            mSql = "update " & "Employee" & _
  329. '                " set F_DelFlag=" & gTRUE _
  330. '                & " Where DeptID=" & lngID
  331. '        End If
  332. '        gDataBase.Execute mSql
  333.         
  334.         mSql = "update " & mTableName & _
  335.             " set F_DelFlag=" & gTRUE _
  336.             & " Where ID=" & lngID
  337.         gDataBase.Execute mSql
  338.         CommitTrans
  339.         IsTrans = False
  340.         
  341.         If .Rows = .FixedRows + 1 Then
  342.             .Rows = .FixedRows
  343.         Else
  344.             .RemoveItem .row
  345.         End If
  346.         
  347.     End With
  348.     mSql = ""
  349.     Exit Sub
  350. DeleteErr:
  351.     If IsTrans Then Rollback
  352.     MsgBox gMsg6 & vbCrLf & Err.Description, vbExclamation, gTitle
  353.     Err.Clear
  354. End Sub
  355. Private Function ValidTableName() As Boolean
  356.     ValidTableName = True
  357.     If mTableName = "" Then
  358.         MsgBox mMsg2, vbInformation, gTitle
  359.         cboTable.SetFocus
  360.         ValidTableName = False
  361.         Exit Function
  362.     End If
  363. End Function
  364. Private Sub AppendData()
  365.     Dim strName As String
  366.     strName = Trim(txtName)
  367.     If strName = Empty Then
  368.         MsgBox mMsg1, vbInformation, gTitle
  369.         txtName.SetFocus
  370.         Exit Sub
  371.     End If
  372.     
  373.     If Not ValidTableName Then Exit Sub
  374.     
  375.     On Error GoTo AppendErr
  376.     mSql = " select * from " & mTableName _
  377.         & " where Name='" & strName & "'" _
  378.         & " and F_DelFlag=" & gFALSE
  379.     Set mRst = gDataBase.OpenRecordset(mSql)
  380.     If mRst.RecordCount > 0 Then
  381.         MsgBox gMsg3, vbExclamation, gTitle
  382.         txtName.SetFocus
  383.         Exit Sub
  384.     End If
  385.     
  386.     mSql = "Insert into " & mTableName & "(Name)" _
  387.         & " values('" & strName & "')"
  388.     gDataBase.Execute mSql
  389.     RefreshGrid mTableName
  390.     txtName = ""
  391.     txtName.SetFocus
  392.     Exit Sub
  393. AppendErr:
  394.     MsgBox gMsg7 & vbCrLf & Err.Description, vbExclamation, gTitle
  395.     Err.Clear
  396. End Sub
  397. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  398.     Dim AltDown As Boolean
  399.     AltDown = (Shift And vbAltMask) > 0
  400.     If AltDown Then
  401.         Select Case KeyCode
  402.             Case vbKeyA
  403.                 cmdEdit_Click mAPPEND
  404.             Case vbKeyS
  405.                 cmdEdit_Click mSAVE
  406.             Case vbKeyD
  407.                 cmdEdit_Click mDELETE
  408.             Case vbKeyR
  409.                 cmdEdit_Click mRETURN
  410.         End Select
  411.     End If
  412.     
  413.     If KeyCode = vbKeyF2 Then
  414.         cmdEdit_Click mSAVE
  415.     End If
  416.     If KeyCode = 27 Then
  417.         cmdEdit_Click mRETURN
  418.     End If
  419. End Sub
  420. Private Sub Form_Load()
  421.     IniForm
  422.     IniCbo
  423. End Sub
  424. Private Function GetTableName(IntID As Long) As String
  425.     GetTableName = Empty
  426.     Dim I As Integer
  427.     For I = 0 To UBound(mATable)
  428.         If mATable(I).ID = IntID Then
  429.             GetTableName = Trim(mATable(I).TableName)
  430.             Exit For
  431.         End If
  432.     Next
  433. End Function
  434. Private Sub IniCbo()
  435.     ReDim mATable(0)
  436.     Dim IntLen As Integer
  437.     mATable(0).ID = 0
  438.     mSql = "select F_ID,F_TableName,F_ItemName from T_Struct order by F_ID "
  439.     Set mRst = gDataBase.OpenRecordset(mSql, dbOpenSnapshot)
  440.     While Not mRst.EOF
  441.         IntLen = UBound(mATable)
  442.         IntLen = IntLen + 1
  443.         ReDim Preserve mATable(IntLen)
  444.         With mATable(IntLen)
  445.             .ID = mRst!F_ID
  446.             .TableName = IIf(IsNull(mRst!F_TableName), "", Trim(mRst!F_TableName))
  447.             .Alias = IIf(IsNull(mRst!F_ItemName), "", Trim(mRst!F_ItemName))
  448.         End With
  449.         mRst.MoveNext
  450.     Wend
  451.     mRst.Close
  452.     Set mRst = Nothing
  453.     
  454.     Dim I As Integer
  455.     If UBound(mATable) > 0 Then
  456.         For I = 1 To UBound(mATable)
  457.             With mATable(I)
  458.                 cboTable.AddItem .Alias
  459.                 cboTable.ItemData(cboTable.NewIndex) = .ID
  460.             End With
  461.         Next
  462.         cboTable.ListIndex = 0
  463.     End If
  464.     cmdEdit(mAPPEND).Enabled = (cboTable.ListCount > 0)
  465. End Sub
  466. Private Sub msfGrid_DblClick()
  467.     With msfGrid
  468.         If .MouseRow = 0 Then Exit Sub
  469.         If .Rows <= .FixedRows Then Exit Sub
  470.         mOldName = Trim(.TextMatrix(.row, mGridName))
  471.         SetTxtPosition msfGrid, txtEdit
  472.     End With
  473. End Sub
  474. Private Sub msfGrid_KeyDown(KeyCode As Integer, Shift As Integer)
  475.     If KeyCode = vbKeyReturn Then
  476.         msfGrid_DblClick
  477.     End If
  478. End Sub
  479. Private Sub txtEdit_GotFocus()
  480.     GotFocus txtEdit
  481. End Sub
  482. Private Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer)
  483.     Select Case KeyCode
  484.         Case vbKeyReturn
  485.             Dim strName As String
  486.             strName = Trim(txtEdit)
  487.             If strName = Empty Then Exit Sub
  488.             txtEdit.Visible = False
  489.             If mOldName <> strName Then
  490.                 With msfGrid
  491.                     .TextMatrix(.row, mGridName) = strName
  492.                     .TextMatrix(.row, mGRIDLOG) = gTRUE
  493.                 End With
  494.                 If Not cmdEdit(mSAVE).Enabled Then cmdEdit(mSAVE).Enabled = True
  495.             End If
  496.             msfGrid.SetFocus
  497.         Case vbKeyDown, vbKeyUp
  498.             txtEdit.Visible = False
  499.             KeyDownByUpDown msfGrid, KeyCode
  500.             msfGrid.SetFocus
  501.     End Select
  502. End Sub
  503. Private Sub txtEdit_LostFocus()
  504.     txtEdit.Visible = False
  505. End Sub
  506. Private Sub txtName_GotFocus()
  507.     GotFocus txtName
  508. End Sub
  509. Private Sub txtName_KeyDown(KeyCode As Integer, Shift As Integer)
  510.     If KeyCode = vbKeyReturn Then
  511.         SendKeyTab KeyCode
  512.     End If
  513. End Sub