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

其他数据库

开发平台:

Visual Basic

  1. Attribute VB_Name = "modCommFun"
  2. Option Explicit
  3. Global Const gFIXEDROWS = 1
  4. Public Const gGridBackColor = &H80000018
  5. Public Const gGridForeColor = &H0
  6. Public Const gCellSelBackColor = &H80000001 '查询结果的背景色
  7. Public Const gCellSelForeColor = vbWhite
  8. Public Const gTRUE = -1
  9. Public Const gFALSE = 0
  10. Public Function EraseSpecialSign(ByVal Str As String) As String '过滤'"
  11. Dim m_Ch As String
  12. Dim i As Integer
  13.     EraseSpecialSign = ""
  14.     For i = 1 To Len(Str)
  15.         m_Ch = Mid(Str, i, 1)
  16.         If m_Ch <> "'" And Not (AscB(LeftB(m_Ch, 1)) = 34 And AscB(RightB(m_Ch, 1)) = 0) Then
  17.             EraseSpecialSign = EraseSpecialSign & m_Ch
  18.         End If
  19.     Next i
  20. End Function
  21. Public Function CheckIsDigit(KeyAscii As Integer, Optional TempStr As String) As Integer
  22.     If TempStr = "Price" Then
  23.         If KeyAscii <> 46 And (KeyAscii < 48 Or KeyAscii > 57) Then
  24.             CheckIsDigit = 0
  25.         Else
  26.             CheckIsDigit = KeyAscii
  27.         End If
  28.     Else
  29.         If KeyAscii < 48 Or KeyAscii > 57 Then
  30.             CheckIsDigit = 0
  31.         Else
  32.             CheckIsDigit = KeyAscii
  33.         End If
  34.     End If
  35. End Function
  36. Public Sub GotFocus(Text1 As TextBox)
  37.     Text1.SelStart = 0
  38.     Text1.SelLength = Len(Text1.Text)
  39. End Sub
  40. Public Sub SendKeyTab(KeyCode As Integer)
  41.     If KeyCode = 13 Then
  42.         SendKeys "{TAB}"
  43.     End If
  44. End Sub
  45. Public Function GetTheVeryLen(m_Txt As String, m_Len As Integer) As String
  46.     GetTheVeryLen = StrConv(Trim(m_Txt), vbNarrow)
  47.     GetTheVeryLen = LeftB(GetTheVeryLen, m_Len)
  48. End Function
  49. Private Function DeleteLastPart(Str As String) As String
  50. Dim i As String
  51.     i = InStr(Str, "(")
  52.     If i > 0 Then
  53.         Str = Left(Str, i - 1)
  54.     Else
  55.         i = InStr(Str, "(")
  56.         If i > 0 Then
  57.             Str = Left(Str, i - 1)
  58.         End If
  59.     End If
  60.     DeleteLastPart = Str
  61. End Function
  62. Public Function FixedLen(tempVar As Variant, ByVal tempLen As Long, Optional ByVal Opsition As Long = 0) As String
  63.     Dim tempString As String
  64.     Dim ByteLen As Long
  65.     tempString = Trim(CStr(tempVar))
  66.     
  67.     If IsNumeric(tempString) Then
  68.         tempString = Left(tempString, tempLen)
  69.         ByteLen = Len(tempString)
  70.     Else
  71.         tempString = Left(tempString, Int(tempLen / 2))
  72.         ByteLen = LenB(StrConv(tempString, vbFromUnicode))
  73.     End If
  74.     
  75.     If Opsition = 0 Then '左对齐
  76.         FixedLen = tempString & Space(tempLen - ByteLen)
  77.     ElseIf Opsition = 1 Then '右对齐
  78.         FixedLen = Space(tempLen - ByteLen) & tempString
  79.     ElseIf Opsition = 2 Then '居中
  80.         FixedLen = Space(Int((tempLen - ByteLen) / 2)) & tempString & Space(tempLen - ByteLen - Int((tempLen - ByteLen) / 2))
  81.     End If
  82.     
  83. End Function
  84. Public Sub EditGridTxt(msfGrid As MSFlexGrid, obj As Control, Optional aPosition As AlignmentConstants = vbLeftJustify)
  85.     Dim i As Long
  86.     With msfGrid
  87.         If .row = 0 Then
  88.             obj.Visible = False
  89.             Exit Sub
  90.         End If
  91.         If TypeOf obj Is TextBox Or TypeOf obj Is ComboBox Then
  92.             obj.Visible = False
  93.             obj.Width = .CellWidth
  94.             If TypeOf obj Is TextBox Then
  95.                 obj.Text = ""
  96.                 obj.Top = .Top + .CellTop
  97.                 obj.Left = .Left + .CellLeft
  98.                 obj.Height = .CellHeight
  99.                 obj.Left = .Left + .CellLeft
  100.                 obj.Alignment = aPosition
  101.                 obj.Text = .Text
  102.                 obj.SelStart = 0
  103.                 obj.SelLength = Len(obj)
  104.             ElseIf TypeOf obj Is ComboBox Then
  105.                 obj.Top = .Top + .CellTop
  106.                 obj.Left = .Left + .CellLeft
  107.                 For i = 0 To obj.ListCount
  108.                     If obj.List(i) = Trim(.Text) Then
  109.                         If Trim(.Text) = Empty Then
  110.                             If obj.ListCount > 0 Then
  111.                                 obj.ListIndex = 0
  112.                             End If
  113.                         Else
  114.                             obj.ListIndex = i
  115.                         End If
  116.                         Exit For
  117.                     End If
  118.                 Next
  119.             End If
  120.         
  121.             obj.Visible = True
  122.             obj.SetFocus
  123.         End If
  124.     End With
  125. End Sub
  126. Public Function GetMaxDayInAMonth(myYear As Integer, MyMonth As Integer) As Integer
  127. If MyMonth = 2 Then
  128.     If (myYear Mod 400) = 0 Then
  129.         GetMaxDayInAMonth = 29
  130.     ElseIf (myYear Mod 100) = 0 Then
  131.         GetMaxDayInAMonth = 28
  132.     ElseIf (myYear Mod 4) = 0 Then
  133.         GetMaxDayInAMonth = 29
  134.     Else
  135.         GetMaxDayInAMonth = 28
  136.     End If
  137. Else
  138.     If MyMonth < 8 Then
  139.         GetMaxDayInAMonth = IIf((MyMonth Mod 2) = 0, 30, 31)
  140.     Else
  141.         GetMaxDayInAMonth = IIf((MyMonth Mod 2) = 0, 31, 30)
  142.     End If
  143. End If
  144. End Function
  145. Public Function ValiText(KeyIn As Integer, ValidateString As String, Editable As Boolean) As Integer
  146.     Dim ValidateList As String
  147.     Dim KeyOut As Integer
  148.     If Editable = True Then
  149.          ValidateList = UCase(ValidateString) & Chr(8)
  150.     Else
  151.          ValidateList = UCase(ValidateString)
  152.     End If
  153.     If InStr(1, ValidateList, UCase(Chr(KeyIn)), 1) > 0 Then
  154.         KeyOut = KeyIn
  155.     Else
  156.         KeyOut = 0
  157.         Beep
  158.     End If
  159.     ValiText = KeyOut
  160. End Function
  161. 'Private Sub SetHandIco()
  162. '    Dim picPath As String
  163. '    picPath = App.Path + "pichand.ico"
  164. '    If Dir(picPath) <> "" Then
  165. '        Set gicoHand = LoadPicture(picPath)
  166. '    End If
  167. 'End Sub
  168. Public Sub SortGridByCol(myGrid As MSFlexGrid)
  169.     With myGrid
  170.         If .row = .FixedRows Then
  171.             .Sort = 1
  172.         End If
  173.     End With
  174. End Sub
  175. Public Sub FillCbo(myCbo As ComboBox, myArray() As ItemStruc, Optional IniValue As Integer = 1) 'optional为所有类别准备
  176.     Dim i As Integer
  177.     With myCbo
  178.         .Clear
  179.         If UBound(myArray) >= 1 Then
  180.             For i = IniValue To UBound(myArray)
  181.                 .AddItem myArray(i).Name
  182.                 .ItemData(.NewIndex) = myArray(i).ID
  183.             Next
  184.             If .ListCount > 0 Then
  185.                 .ListIndex = 0
  186.             End If
  187.         End If
  188.     End With
  189. End Sub
  190. Public Sub LookForCbo(myCbo As ComboBox, intFind As Integer)
  191.     Dim i As Integer
  192.     With myCbo
  193.         For i = 0 To .ListCount - 1
  194.             If .ItemData(i) = intFind Then
  195.                 .ListIndex = i
  196.                 Exit For
  197.             End If
  198.         Next
  199.     End With
  200. End Sub
  201. Public Sub LookForCboByStr(myCbo As ComboBox, strFind As String)
  202.     Dim i As Integer
  203.     With myCbo
  204.         For i = 0 To .ListCount - 1
  205.             If Trim(.List(i)) = strFind Then
  206.                 .ListIndex = i
  207.                 Exit For
  208.             End If
  209.         Next
  210.     End With
  211. End Sub
  212. Public Sub getItemData(cboMycbo As ComboBox, myItem As Integer)
  213.     With cboMycbo
  214.         If .ListIndex = -1 Then
  215.             myItem = .ItemData(0)
  216.         Else
  217.             myItem = .ItemData(.ListIndex)
  218.         End If
  219.     End With
  220. End Sub
  221. Public Sub SetGridColor(myGrid As MSFlexGrid)
  222.     With myGrid
  223.         .RowHeight(.FixedRows - 1) = 300
  224.         .BackColor = gGridBackColor '&H80000018  '&HC0FFFF '&HC0FFC0
  225.         .BackColorFixed = &HC0C0C0  '&HC0FFC0
  226.         .ForeColorFixed = &HC00000  ' &H0&      '&HFF00FF  '&HC0&    &HFF0000   '  '&H80000002 '&HC00000   '
  227.         .ForeColor = gGridForeColor ' &H0
  228.         .BackColorSel = &H8000000D '&HC00000
  229.         .GridColor = &HC0C0C0
  230.         .GridColorFixed = &H0&      ' &H808080  ' &HC0C0C0
  231.         '.ForeColorFixed =
  232.         .BackColorBkg = &H80000018 ' &HFFFFFF ''&HC0FFFF
  233.         .AllowUserResizing = flexResizeColumns
  234.         .ScrollBars = flexScrollBarBoth
  235.         .Rows = gFIXEDROWS
  236.     End With
  237. End Sub
  238. Public Sub ToDeleteFromGrid(myGrid As MSFlexGrid, intKeyRow As Integer, strMsg As String, strMyDataBase As Database, strTableName As String, strDeleteField As String)
  239.     If Trim(strMsg) <> Empty Then
  240.         If MsgBox(strMsg, _
  241.             vbQuestion + vbYesNo + vbDefaultButton2, _
  242.             gTitle) = vbNo Then Exit Sub
  243.     End If
  244.     Dim strKey As String
  245.     With myGrid
  246.         strKey = Trim(.TextMatrix(.row, intKeyRow))
  247.         SetDelFlagForTable Trim(strKey), strMyDataBase, strTableName, strDeleteField, True
  248.         If .Rows = .FixedRows + 1 Then
  249.             .Rows = .FixedRows
  250.         Else
  251.             .RemoveItem .row
  252.         End If
  253.     End With
  254. End Sub
  255. Public Sub SetDelFlagForTable(varKey As Variant, strMyDataBase As Database, strTableName As String, strDeleteField As String, Optional isStr As Boolean = True)
  256.     Dim Sql As String
  257.     Sql = "update " & strTableName _
  258.             & " set F_DelFlag=" & gTRUE _
  259.             & " where " & strDeleteField & "="
  260.     If isStr Then
  261.         Sql = Sql & "'" & varKey & "'"
  262.     Else
  263.         Sql = Sql & varKey
  264.     End If
  265.     strMyDataBase.Execute Sql
  266. End Sub
  267. Public Sub DeleteFromDataBase(varKey As Variant, strMyDataBase As Database, strTableName As String, strDeleteField As String, Optional isStr As Boolean = True)
  268.     Dim Sql As String
  269.     Sql = "delete * from " & strTableName _
  270.             & " where " & strDeleteField & "="
  271.     If isStr Then
  272.         Sql = Sql & "'" & varKey & "'"
  273.     Else
  274.         Sql = Sql & varKey
  275.     End If
  276.     strMyDataBase.Execute Sql
  277. End Sub
  278. Public Function IsExist(strMyDataBase As Database, strTableName As String, strFindField As String, varFindValue As Variant, Optional isStr As Boolean = True) As Boolean
  279.     Dim Rst As Recordset
  280.     Dim Sql As String
  281.     Sql = "select * from " & strTableName & _
  282.         " where " & strFindField & "=" '& strFindValue & "'"
  283.     If isStr Then
  284.         Sql = Sql & "'" & varFindValue & "'"
  285.     Else
  286.         Sql = Sql & varFindValue
  287.     End If
  288.     Set Rst = strMyDataBase.OpenRecordset(Sql, dbOpenSnapshot)
  289.     If Rst.RecordCount > 0 Then
  290.         IsExist = True
  291.     Else
  292.         IsExist = False
  293.     End If
  294.     Rst.Close
  295.     Set Rst = Nothing
  296. End Function
  297. Public Sub CloseColor(msfGrid As MSFlexGrid)
  298.     Dim i As Integer
  299.     Dim J As Integer
  300.     With msfGrid
  301.         If .Redraw Then .Redraw = False
  302.         For i = .FixedRows To .Rows - 1
  303.             .row = i
  304.             .col = 0
  305.             If .CellBackColor = gCellSelBackColor Then
  306.                 For J = 0 To .Cols - 1
  307.                     .col = J
  308.                     .CellBackColor = gGridBackColor
  309.                     .CellForeColor = gGridForeColor
  310.                 Next
  311.             End If
  312.         Next
  313.         .Redraw = True
  314.     End With
  315. End Sub
  316. Public Sub SetTxtPosition(tmpGrid As MSFlexGrid, tmpTxt As TextBox)
  317.     With tmpGrid
  318.         tmpTxt.Top = .Top + .CellTop
  319.         tmpTxt.Left = .Left + .CellLeft
  320.         tmpTxt.Width = .CellWidth
  321.         tmpTxt.Height = .CellHeight
  322.         tmpTxt = .Text
  323.         tmpTxt.Visible = True
  324.         tmpTxt.SetFocus
  325.     End With
  326. End Sub
  327. Public Function JoinSqlStr(varToLook As Variant, WhereFlag As Boolean, strFindField As String, Optional isStr As Boolean = True) As String
  328.     Dim Sql As String
  329.     If isStr Then
  330.         If varToLook = Empty Then
  331.             JoinSqlStr = Empty
  332.             Exit Function
  333.         End If
  334.     Else
  335.         If varToLook = 0 Then
  336.             JoinSqlStr = Empty
  337.             Exit Function
  338.         End If
  339.     End If
  340.     
  341.     If WhereFlag Then
  342.         Sql = Sql & " and "
  343.     Else
  344.         Sql = Sql & " Where "
  345.         WhereFlag = True
  346.     End If
  347.     Sql = Sql & " InStr(1," & strFindField & ",'" & varToLook & "',0)>0 "
  348.     JoinSqlStr = Sql
  349. End Function
  350. Public Sub SaveRegister()
  351.     Dim AppSet As String
  352.     Dim StrSet As String
  353.     AppSet = "OutProd"
  354.     StrSet = "Setting"
  355.     SaveSetting AppSet, StrSet, "OwnName", gOwnName
  356.     SaveSetting AppSet, StrSet, "OwnAddress", gOwnAddress
  357.     SaveSetting AppSet, StrSet, "OwnPhone", gOwnPhone
  358.     SaveSetting AppSet, StrSet, "OwnFax", gOwnFax
  359.     SaveSetting AppSet, StrSet, "OwnPost", gOwnPost
  360.     SaveSetting AppSet, StrSet, "OwnOwner", gOwnOwner
  361. End Sub
  362. Public Sub GetRegister()
  363.     Dim AppSet As String
  364.     Dim StrSet As String
  365.     AppSet = "OutProd"
  366.     StrSet = "Setting"
  367.     Const DEFAULTNAME = "温州现代集团"
  368.     Const DEFAULTADDRESS = "温州市金丝桥路20号"
  369.     Const DEFAULTPHONE = "(86-577)8848030"
  370.     Const DEFAULTFAX = "(86-577)8845711"
  371.     Const DEFAULTPOST = "325000"
  372.     Const DEFAULTOWNER = ""
  373.     Const DEFAULTLOGINNAME = "默认用户"
  374.     Const DEFAULTLOGINPASS = ""
  375.     gLoginName = GetSetting(AppSet, StrSet, "LoginName", DEFAULTLOGINNAME)
  376.     gOwnName = GetSetting(AppSet, StrSet, "OwnName", DEFAULTNAME)
  377.     gOwnAddress = GetSetting(AppSet, StrSet, "OwnAddress", DEFAULTADDRESS)
  378.     gOwnPhone = GetSetting(AppSet, StrSet, "OwnPhone", DEFAULTPHONE)
  379.     gOwnFax = GetSetting(AppSet, StrSet, "OwnFax", DEFAULTFAX)
  380.     gOwnPost = GetSetting(AppSet, StrSet, "OwnPost", DEFAULTPOST)
  381.     gOwnOwner = GetSetting(AppSet, StrSet, "OwnOwner", DEFAULTOWNER)
  382. End Sub
  383. Public Sub KeyDownByUpDown(tmpGrid As MSFlexGrid, KeyCode As Integer)
  384.     Dim sRow, SCol As Integer
  385.     With tmpGrid
  386.         Select Case KeyCode
  387.             Case vbKeyDown
  388.                 sRow = .row + 1
  389.                 If sRow = .Rows Then
  390.                     sRow = .FixedRows + 1
  391.                 End If
  392.             Case vbKeyUp
  393.                 sRow = .row - 1
  394.                 If sRow = 0 Then
  395.                     sRow = .Rows - 1
  396.                 End If
  397.         End Select
  398.         SCol = .col
  399.         .row = sRow
  400.         .col = SCol
  401.         .RowSel = sRow
  402.     End With
  403. End Sub