home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / ACTIVEB / ACTIVE.ZIP / Setupex.exe / _SETUP.1 / Utilities.bas < prev    next >
Encoding:
BASIC Source File  |  1996-01-30  |  6.5 KB  |  158 lines

  1. Attribute VB_Name = "Utilities"
  2. Option Explicit
  3.  
  4. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  5. ' Name:         SafeCDate
  6. ' Description:
  7. '               'Safely' converts a variant to a date. i.e handles null values properly
  8. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  9.  
  10. Public Function SafeCDate(value As Variant) As Date
  11.     If IsEmpty(value) Or IsNull(value) Or value = "" Then
  12.         SafeCDate = #12:00:00 AM#
  13.     Else
  14.         SafeCDate = CDate(value)
  15.     End If
  16. End Function
  17.  
  18.  
  19. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  20. ' Name:         ValidatePrimitiveTypes
  21. ' Description:
  22. '               Tests the param 'Data' against the valid values of 'DataType'.
  23. '               If the data is valid then returns 'True'. If the data is not valid
  24. '               then presents a MsgBox with vail ranges. e.g if 'DataType' = "Byte" then
  25. '               the MsgBox is 'Identifier' & " must be a number between 0 and 255".
  26. '               If 'Identifier' = "" Then 'Identifier' = "Value".
  27. ' Returns:
  28. '               True:= 'Data' is valid , False: 'Data' is not valid
  29. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  30.  
  31. Public Function ValidatePrimitiveTypes(DataType As String, Data As Variant, Identifier As String) As Boolean
  32. On Error GoTo ValidatePrimitiveTypes_Err:
  33.     Dim l As Long
  34.     Dim d As Double
  35.     If Identifier = "" Then
  36.         Identifier = "Value"
  37.     Else
  38.         Identifier = """" & Identifier & """"
  39.     End If
  40.     
  41.     Select Case DataType
  42.         Case Is = "Boolean"
  43.             'True/False or 1/0
  44.             If IsNumeric(Data) Then
  45.                 If Data = 1 Or Data = 0 Then
  46.                     ValidatePrimitiveTypes = True
  47.                 Else
  48.                     ValidatePrimitiveTypes = False
  49.                     MsgBox Identifier & " must be either the text ""True"" or ""False"" or the numbers -1(true) or 0(false)"
  50.                 End If
  51.             ElseIf Data = "True" Or Data = "False" Then
  52.                 ValidatePrimitiveTypes = True
  53.             Else
  54.                 ValidatePrimitiveTypes = False
  55.                 MsgBox Identifier & " must be either the text ""True"" or ""False"" or the numbers 1 or 0"
  56.             End If
  57.         Case Is = "Byte"
  58.             '0-255
  59.             If IsNumeric(Data) Then
  60.                 l = Data
  61.                 If l >= 0 And l <= 255 Then
  62.                     ValidatePrimitiveTypes = True
  63.                 Else
  64.                     ValidatePrimitiveTypes = False
  65.                     MsgBox Identifier & " must be a number between 0 and 255"
  66.                 End If
  67.             Else
  68.                 ValidatePrimitiveTypes = False
  69.                 MsgBox Identifier & " must be a number between 0 and 255"
  70.             End If
  71.         Case Is = "Integer"
  72.             '-32,768 to -32,768
  73.             If IsNumeric(Data) Then
  74.                 l = Data
  75.                 If l >= -32768 And l <= 32768 Then
  76.                     ValidatePrimitiveTypes = True
  77.                 Else
  78.                     ValidatePrimitiveTypes = False
  79.                     MsgBox Identifier & " must be a number between -32,768 and 32,768"
  80.                 End If
  81.             Else
  82.                 ValidatePrimitiveTypes = False
  83.                 MsgBox Identifier & " must be a number between -32,768 and 32,768"
  84.             End If
  85.         Case Is = "Long"
  86.             '-2,147,483,648 to 2,147,483,647
  87.             If IsNumeric(Data) Then
  88.                 l = Data
  89.                 If l >= -2147483648# And l <= 2147483647 Then
  90.                     ValidatePrimitiveTypes = True
  91.                 Else
  92.                     ValidatePrimitiveTypes = False
  93.                     MsgBox Identifier & " must be a number between -2,147,483,648 and 2,147,483,647"
  94.                 End If
  95.             Else
  96.                 ValidatePrimitiveTypes = False
  97.                 MsgBox Identifier & " must be a number between -2,147,483,648 and 2,147,483,647"
  98.             End If
  99.         Case Is = "Currency"
  100.             '-922,337,203,685,477.5808 to 922,337,203,685,477.5807
  101.             If IsNumeric(Data) Then
  102.                 d = Data
  103.                 If d >= -9.22337203685478E+18 And d <= 9.22337203685478E+18 Then
  104.                     Dim c As Currency
  105.                     c = d
  106.                     ValidatePrimitiveTypes = True
  107.                 Else
  108.                     ValidatePrimitiveTypes = False
  109.                     MsgBox Identifier & " must be a ammount between -922,337,203,685,477.5808 and 922,337,203,685,477.5807"
  110.                 End If
  111.                 ValidatePrimitiveTypes = True
  112.             Else
  113.                 ValidatePrimitiveTypes = False
  114.                 MsgBox Identifier & " must be an ammount between -922,337,203,685,477.5808 and 922,337,203,685,477.5807"
  115.             End If
  116.         Case Is = "Date"
  117.             'January 1, 100 A.D. through December 31, 9999 A.D.
  118.             If IsDate(Data) Then
  119.                 ValidatePrimitiveTypes = True
  120.             Else
  121.                 ValidatePrimitiveTypes = False
  122.                 MsgBox Identifier & " must be a date between January 1, 100 A.D. and December 31, 9999 A.D."
  123.             End If
  124.         Case Is = "Single"
  125.             '-3.402823E38 To 3.402823E38
  126.             If IsNumeric(Data) Then
  127.                 d = Data
  128.                 If d >= -3.402823E+38 And l <= 3.402823E+38 Then
  129.                     ValidatePrimitiveTypes = True
  130.                 Else
  131.                     ValidatePrimitiveTypes = False
  132.                     MsgBox Identifier & " must be a number between -3.402823E+38 and 3.402823E+38"
  133.                 End If
  134.             Else
  135.                 ValidatePrimitiveTypes = False
  136.             End If
  137.         Case Is = "Double"
  138.             '-1.79769313486232E308 To  1.79769313486232E308
  139.             If IsNumeric(Data) Then
  140.                 ValidatePrimitiveTypes = True
  141.             Else
  142.                 ValidatePrimitiveTypes = False
  143.                 MsgBox Identifier & " must be a number between -1.79769313486232E+308 and  1.79769313486232E+308"
  144.             End If
  145.         Case Is = "String"
  146.             ValidatePrimitiveTypes = True
  147.         Case Is = "Variant"
  148.             ValidatePrimitiveTypes = True
  149.     End Select
  150.     Exit Function
  151.     
  152. ValidatePrimitiveTypes_Err:
  153.     Debug.Print Err.Number & " " & Err.Description
  154.     MsgBox Identifier & " is too large or to small a number"
  155.     ValidatePrimitiveTypes = False
  156. End Function
  157.  
  158.