📄 validations.bas
字号:
Attribute VB_Name = "Validations"
Public Function IsValidEmailAddress(AddressString As String) As Boolean
Dim sHost As String
Dim iPos As Integer
Dim sInvalidChars As String
If Len(Trim(AddressString)) = 0 Then
IsValidEmailAddress = False
Exit Function
End If
sInvalidChars = "!#$%^&*()=+{}[]|\;:'/?>,< "
For iPos = 1 To Len(AddressString)
If InStr(sInvalidChars, _
Mid(AddressString, iPos, 1)) > 0 Then
IsValidEmailAddress = False
Exit Function
End If
Next
iPos = InStr(AddressString, "@")
If iPos = 0 Or Left(AddressString, 1) = "@" Then
IsValidEmailAddress = False
Exit Function
End If
sHost = Mid(AddressString, iPos + 1)
'can't have multiple "@" chars in the string
If InStr(sHost, "@") > 0 Then
IsValidEmailAddress = False
Exit Function
End If
IsValidEmailAddress = IsValidIPHost(UCase(sHost))
End Function
Public Function IsValidIPHost(HostString As String) As Boolean
Dim sHost As String
Dim bDottedQuad As Boolean
Dim sSplit() As String
Dim ictr As Integer
Dim bAns As Boolean
Dim sTopLevelDomains() As String
sHost = HostString
If InStr(sHost, ".") = 0 Then
IsValidIPHost = False
Exit Function
End If
sSplit = Split(sHost, ".")
If UBound(sSplit) = 3 Then
bDottedQuad = True
For ictr = 0 To 3
If Not IsNumeric(sSplit(ictr)) Then
bDottedQuad = False
Exit For
End If
Next
If bDottedQuad Then
bAns = True
For ictr = 0 To 3
If ictr = 0 Then
bAns = Val(sSplit(ictr)) <= 239
If bAns = False Then Exit For
Else
bAns = Val(sSplit(ictr)) <= 255
If bAns = False Then Exit For
End If
Next
IsValidIPHost = bAns
Exit Function
End If
End If 'ubound(ssplit) = 3
IsValidIPHost = isTopLevelDomain(sSplit(UBound(sSplit)))
End Function
Public Function isTopLevelDomain(DomainString As String) As Boolean
Dim asTopLevels() As String
Dim ictr As Integer
Dim iNumDomains As Integer
Dim bAns As Boolean
iNumDomains = 251
ReDim asTopLevels(iNumDomains - 1) As String
'Obtained from www.IANA.com. Can and will change
asTopLevels(0) = "COM"
asTopLevels(1) = "ORG"
asTopLevels(2) = "NET"
asTopLevels(3) = "EDU"
asTopLevels(4) = "GOV"
asTopLevels(5) = "MIL"
asTopLevels(6) = "INT"
asTopLevels(7) = "AF"
asTopLevels(8) = "AL"
asTopLevels(9) = "DZ"
asTopLevels(10) = "AS"
asTopLevels(11) = "AD"
asTopLevels(12) = "AO"
asTopLevels(13) = "AI"
asTopLevels(14) = "AQ"
asTopLevels(15) = "AG"
asTopLevels(16) = "AR"
asTopLevels(17) = "AM"
asTopLevels(18) = "AW"
asTopLevels(19) = "AC"
asTopLevels(20) = "AU"
asTopLevels(21) = "AT"
asTopLevels(22) = "AZ"
asTopLevels(23) = "BS"
asTopLevels(24) = "BH"
asTopLevels(25) = "BD"
asTopLevels(26) = "BB"
asTopLevels(27) = "BY"
asTopLevels(28) = "BZ"
asTopLevels(29) = "BT"
asTopLevels(30) = "BJ"
asTopLevels(31) = "BE"
asTopLevels(32) = "BM"
asTopLevels(33) = "BO"
asTopLevels(34) = "BA"
asTopLevels(35) = "BW"
asTopLevels(36) = "BV"
asTopLevels(37) = "BR"
asTopLevels(38) = "IO"
asTopLevels(39) = "BN"
asTopLevels(40) = "BG"
asTopLevels(41) = "BF"
asTopLevels(42) = "BI"
asTopLevels(43) = "KH"
asTopLevels(44) = "CM"
asTopLevels(45) = "CA"
asTopLevels(46) = "CV"
asTopLevels(47) = "KY"
asTopLevels(48) = "CF"
asTopLevels(49) = "TD"
asTopLevels(50) = "CL"
asTopLevels(51) = "CN"
asTopLevels(52) = "CX"
asTopLevels(53) = "CC"
asTopLevels(54) = "CO"
asTopLevels(55) = "KM"
asTopLevels(56) = "CD"
asTopLevels(57) = "CG"
asTopLevels(58) = "CK"
asTopLevels(59) = "CR"
asTopLevels(60) = "CI"
asTopLevels(61) = "HR"
asTopLevels(62) = "CU"
asTopLevels(63) = "CY"
asTopLevels(64) = "CZ"
asTopLevels(65) = "DK"
asTopLevels(66) = "DJ"
asTopLevels(67) = "DM"
asTopLevels(68) = "DO"
asTopLevels(69) = "TP"
asTopLevels(70) = "EC"
asTopLevels(71) = "EG"
asTopLevels(72) = "SV"
asTopLevels(73) = "GQ"
asTopLevels(74) = "ER"
asTopLevels(75) = "EE"
asTopLevels(76) = "ET"
asTopLevels(77) = "FK"
asTopLevels(78) = "FO"
asTopLevels(79) = "FJ"
asTopLevels(80) = "FI"
asTopLevels(81) = "FR"
asTopLevels(82) = "GF"
asTopLevels(83) = "PF"
asTopLevels(84) = "TF"
asTopLevels(85) = "GA"
asTopLevels(86) = "GM"
asTopLevels(87) = "GE"
asTopLevels(88) = "DE"
asTopLevels(89) = "GH"
asTopLevels(90) = "GI"
asTopLevels(91) = "GR"
asTopLevels(92) = "GL"
asTopLevels(93) = "GD"
asTopLevels(94) = "GP"
asTopLevels(95) = "GU"
asTopLevels(96) = "GT"
asTopLevels(97) = "GG"
asTopLevels(98) = "GN"
asTopLevels(99) = "GW"
asTopLevels(100) = "GY"
asTopLevels(101) = "HT"
asTopLevels(102) = "HM"
asTopLevels(103) = "VA"
asTopLevels(104) = "HN"
asTopLevels(105) = "HK"
asTopLevels(106) = "HU"
asTopLevels(107) = "IS"
asTopLevels(108) = "IN"
asTopLevels(109) = "ID"
asTopLevels(110) = "IR"
asTopLevels(111) = "IQ"
asTopLevels(112) = "IE"
asTopLevels(113) = "IM"
asTopLevels(114) = "IL"
asTopLevels(115) = "IT"
asTopLevels(116) = "JM"
asTopLevels(117) = "JP"
asTopLevels(118) = "JE"
asTopLevels(119) = "JO"
asTopLevels(120) = "KZ"
asTopLevels(121) = "KE"
asTopLevels(122) = "KI"
asTopLevels(123) = "KP"
asTopLevels(124) = "KR"
asTopLevels(125) = "KW"
asTopLevels(126) = "KG"
asTopLevels(127) = "LA"
asTopLevels(128) = "LV"
asTopLevels(129) = "LB"
asTopLevels(130) = "LS"
asTopLevels(131) = "LR"
asTopLevels(132) = "LY"
asTopLevels(133) = "LI"
asTopLevels(134) = "LT"
asTopLevels(135) = "LU"
asTopLevels(136) = "MO"
asTopLevels(137) = "MK"
asTopLevels(138) = "MG"
asTopLevels(139) = "MW"
asTopLevels(140) = "MY"
asTopLevels(141) = "MV"
asTopLevels(142) = "ML"
asTopLevels(143) = "MT"
asTopLevels(144) = "MH"
asTopLevels(145) = "MQ"
asTopLevels(146) = "MR"
asTopLevels(147) = "MU"
asTopLevels(148) = "YT"
asTopLevels(149) = "MX"
asTopLevels(150) = "FM"
asTopLevels(151) = "MD"
asTopLevels(152) = "MC"
asTopLevels(153) = "MN"
asTopLevels(154) = "MS"
asTopLevels(155) = "MA"
asTopLevels(156) = "MZ"
asTopLevels(157) = "MM"
asTopLevels(158) = "NA"
asTopLevels(159) = "NR"
asTopLevels(160) = "NP"
asTopLevels(161) = "NL"
asTopLevels(162) = "AN"
asTopLevels(163) = "NC"
asTopLevels(164) = "NZ"
asTopLevels(165) = "NI"
asTopLevels(166) = "NE"
asTopLevels(167) = "NG"
asTopLevels(168) = "NU"
asTopLevels(169) = "NF"
asTopLevels(170) = "MP"
asTopLevels(171) = "NO"
asTopLevels(172) = "OM"
asTopLevels(173) = "PK"
asTopLevels(174) = "PW"
asTopLevels(175) = "PA"
asTopLevels(176) = "PG"
asTopLevels(177) = "PY"
asTopLevels(178) = "PE"
asTopLevels(179) = "PH"
asTopLevels(180) = "PN"
asTopLevels(181) = "PL"
asTopLevels(182) = "PT"
asTopLevels(183) = "PR"
asTopLevels(184) = "QA"
asTopLevels(185) = "RE"
asTopLevels(186) = "RO"
asTopLevels(187) = "RU"
asTopLevels(188) = "RW"
asTopLevels(189) = "KN"
asTopLevels(190) = "LC"
asTopLevels(191) = "VC"
asTopLevels(192) = "WS"
asTopLevels(193) = "SM"
asTopLevels(194) = "ST"
asTopLevels(195) = "SA"
asTopLevels(196) = "SN"
asTopLevels(197) = "SC"
asTopLevels(198) = "SL"
asTopLevels(199) = "SG"
asTopLevels(200) = "SK"
asTopLevels(201) = "SI"
asTopLevels(202) = "SB"
asTopLevels(203) = "SO"
asTopLevels(204) = "ZA"
asTopLevels(205) = "GS"
asTopLevels(206) = "ES"
asTopLevels(207) = "LK"
asTopLevels(208) = "SH"
asTopLevels(209) = "PM"
asTopLevels(210) = "SD"
asTopLevels(211) = "SR"
asTopLevels(212) = "SJ"
asTopLevels(213) = "SZ"
asTopLevels(214) = "SE"
asTopLevels(215) = "CH"
asTopLevels(216) = "SY"
asTopLevels(217) = "TW"
asTopLevels(218) = "TJ"
asTopLevels(219) = "TZ"
asTopLevels(220) = "TH"
asTopLevels(221) = "TG"
asTopLevels(222) = "TK"
asTopLevels(223) = "TO"
asTopLevels(224) = "TT"
asTopLevels(225) = "TN"
asTopLevels(226) = "TR"
asTopLevels(227) = "TM"
asTopLevels(228) = "TC"
asTopLevels(229) = "TV"
asTopLevels(230) = "UG"
asTopLevels(231) = "UA"
asTopLevels(232) = "AE"
asTopLevels(233) = "GB"
asTopLevels(234) = "US"
asTopLevels(235) = "UM"
asTopLevels(236) = "UY"
asTopLevels(237) = "UZ"
asTopLevels(238) = "VU"
asTopLevels(239) = "VE"
asTopLevels(240) = "VN"
asTopLevels(241) = "VG"
asTopLevels(242) = "VI"
asTopLevels(243) = "WF"
asTopLevels(244) = "EH"
asTopLevels(245) = "YE"
asTopLevels(246) = "YU"
asTopLevels(247) = "ZR"
asTopLevels(248) = "ZM"
asTopLevels(249) = "ZW"
asTopLevels(250) = "UK"
For ictr = 0 To iNumDomains - 1
If asTopLevels(ictr) = DomainString Then
bAns = True
Exit For
End If
Next
isTopLevelDomain = bAns
End Function
Public Function FillBrGrid(vBRID As Variant, GridName As VSFlexGrid)
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "select * from t_Statement where p_BranchId='" & Trim(vBRID) & "' order by p_Date, p_SNo", CNimanager
With GridName
.Width = 9135
.AllowUserResizing = flexResizeBoth
.Rows = 1
.Cols = 9
.FixedRows = 1
.Font.Name = "verdana"
.FontBold = True
.FontSize = 7
.TextMatrix(0, 0) = "Date"
.TextMatrix(0, 1) = "From/To"
.TextMatrix(0, 2) = "Credit"
.TextMatrix(0, 3) = "Debit"
.TextMatrix(0, 4) = "Loan/Lib."
.TextMatrix(0, 5) = "Number"
.TextMatrix(0, 6) = "Description"
.TextMatrix(0, 7) = "Ledger"
.TextMatrix(0, 8) = "Type"
.ColWidth(0) = 1200
.ColWidth(1) = 500
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 1100
.ColWidth(7) = 1200
.FixedAlignment(0) = flexAlignLeftCenter
.FixedAlignment(1) = flexAlignLeftCenter
.FixedAlignment(2) = flexAlignLeftCenter
.FixedAlignment(3) = flexAlignLeftCenter
.FixedAlignment(4) = flexAlignLeftCenter
.FixedAlignment(5) = flexAlignLeftCenter
.FixedAlignment(6) = flexAlignLeftCenter
.FixedAlignment(7) = flexAlignLeftCenter
.FixedAlignment(8) = flexAlignLeftCenter
.ColAlignment(0) = flexAlignLeftCenter
.ColAlignment(1) = flexAlignLeftCenter
.ColAlignment(2) = flexAlignLeftCenter
.ColAlignment(3) = flexAlignLeftCenter
.ColAlignment(4) = flexAlignLeftCenter
.ColAlignment(5) = flexAlignLeftCenter
.ColAlignment(6) = flexAlignLeftCenter
.ColAlignment(7) = flexAlignLeftCenter
.ColAlignment(8) = flexAlignLeftCenter
i = 1
If Not rst.EOF Or Not rst.BOF Then
While Not rst.EOF
.Rows = .Rows + 1
.TextMatrix(i, 0) = Format(rst("p_Date"), "dd-MMM-yyyy")
.TextMatrix(i, 1) = Trim(rst("p_ById"))
.TextMatrix(i, 2) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_Credit"))), 2), ",", ""))
.TextMatrix(i, 3) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_Debit"))), 2), ",", ""))
.TextMatrix(i, 4) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_LoanLiability"))), 2), ",", ""))
.TextMatrix(i, 5) = Trim(Null2Blank(rst("p_ChequeNo")))
.TextMatrix(i, 6) = Trim(Null2Blank(rst("p_Desc")))
.TextMatrix(i, 7) = Trim(Null2Blank(rst("p_Ledger")))
.TextMatrix(i, 8) = Trim(rst("p_Type"))
i = i + 1
rst.MoveNext
Wend
End If
End With
If Not Trim(vBRID) = "" Then
GridName.Visible = True
Else
GridName.Visible = False
End If
End Function
Public Function FillVenGrid(vVID As Variant, GridName As VSFlexGrid)
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
'rst.Open "select * from t_Statement where p_BranchId='" & Trim(vBRID) & "' order by p_Date, p_SNo", CNimanager
rst.Open "select * from t_VendorStatement where p_VendorId='" & Trim(vVID) & "' order by p_Date, p_SNo", CNimanager
With GridName
.Width = 9135
.AllowUserResizing = flexResizeColumns
.Rows = 1
.Cols = 9
.FixedRows = 1
.Font.Name = "verdana"
.FontBold = True
.FontSize = 7
.TextMatrix(0, 0) = "Date"
.TextMatrix(0, 1) = "From/To"
.TextMatrix(0, 2) = "Credit"
.TextMatrix(0, 3) = "Debit"
.TextMatrix(0, 4) = "Loan/Lib."
.TextMatrix(0, 5) = "Number"
.TextMatrix(0, 6) = "Description"
.TextMatrix(0, 7) = "Ledger"
.TextMatrix(0, 8) = "Type"
.ColWidth(0) = 1200
.ColWidth(1) = 500
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 1100
.ColWidth(7) = 1200
.FixedAlignment(0) = flexAlignLeftCenter
.FixedAlignment(1) = flexAlignLeftCenter
.FixedAlignment(2) = flexAlignLeftCenter
.FixedAlignment(3) = flexAlignLeftCenter
.FixedAlignment(4) = flexAlignLeftCenter
.FixedAlignment(5) = flexAlignLeftCenter
.FixedAlignment(6) = flexAlignLeftCenter
.FixedAlignment(7) = flexAlignLeftCenter
.FixedAlignment(8) = flexAlignLeftCenter
.ColAlignment(0) = flexAlignLeftCenter
.ColAlignment(1) = flexAlignLeftCenter
.ColAlignment(2) = flexAlignLeftCenter
.ColAlignment(3) = flexAlignLeftCenter
.ColAlignment(4) = flexAlignLeftCenter
.ColAlignment(5) = flexAlignLeftCenter
.ColAlignment(6) = flexAlignLeftCenter
.ColAlignment(7) = flexAlignLeftCenter
.ColAlignment(8) = flexAlignLeftCenter
i = 1
If Not rst.EOF Or Not rst.BOF Then
While Not rst.EOF
.Rows = .Rows + 1
.TextMatrix(i, 0) = Format(rst("p_Date"), "dd-MMM-yyyy")
.TextMatrix(i, 1) = Trim(rst("p_ById"))
.TextMatrix(i, 2) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_Credit"))), 2), ",", ""))
.TextMatrix(i, 3) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_Debit"))), 2), ",", ""))
.TextMatrix(i, 4) = Trim(Replace(FormatNumber(Val(Null2Blank(rst("p_LoanLiability"))), 2), ",", ""))
.TextMatrix(i, 5) = Trim(Null2Blank(rst("p_ChequeNo")))
.TextMatrix(i, 6) = Trim(Null2Blank(rst("p_Desc")))
.TextMatrix(i, 7) = Trim(Null2Blank(rst("p_Ledger")))
.TextMatrix(i, 8) = Trim(rst("p_Type"))
i = i + 1
rst.MoveNext
Wend
End If
End With
If Not Trim(vVID) = "" Then
GridName.Visible = True
Else
GridName.Visible = False
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -