home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_6_93 / bonus / dmsrc / module1.txt < prev    next >
Text File  |  1995-02-26  |  15KB  |  505 lines

  1. Option Explicit
  2.  
  3. Global gDatabase As database   'Current Database
  4. Global gDatabaseName As String
  5. Global gDatabaseForm As Form
  6. Global gDatabaseType As String
  7.  
  8. Function addField (table, FName, fType, FSize, FCounter)
  9.  
  10.     Dim f As New field
  11.  
  12.     On Error Resume Next
  13.  
  14.     addField = True
  15.     f.Name = FName
  16.     f.type = fType
  17.     f.size = TypeToSize(fType, FSize)
  18.     If fType = 4 And FCounter = 1 Then f.Attributes = 16
  19.     
  20.     gDatabase.TableDefs.Refresh
  21.     If Err <> 0 Then
  22.         MsgBox "Error During Refresh Attempt:" + Chr$(13) + Error$, 64, "Data Manager"
  23.         addField = False
  24.         Exit Function
  25.     End If
  26.  
  27.     gDatabase.TableDefs(table).Fields.Refresh
  28.     If Err <> 0 Then
  29.         MsgBox "Error During Refresh Attempt:" + Chr$(13) + Error$, 64, "Data Manager"
  30.         addField = False
  31.         Exit Function
  32.     End If
  33.  
  34.     gDatabase.TableDefs(table).Fields.Append f
  35.     If Err <> 0 Then
  36.         MsgBox "Error During Add Field Attempt:" + Chr$(13) + Error$, 64, "Data Manager"
  37.         addField = False
  38.         Exit Function
  39.     End If
  40.     
  41.     
  42. End Function
  43.  
  44. Function AddTable (x As String, FName, fType, FSize, FCounter)
  45.  
  46.     Dim td As New tabledef
  47.     Dim f As New field
  48.     Dim bInvalid As Integer
  49.  
  50.     On Error Resume Next
  51.     AddTable = True
  52.     
  53.     f.Name = FName
  54.     f.type = fType
  55.     f.size = TypeToSize(fType, FSize)
  56.     If fType = 4 And FCounter = 1 Then f.Attributes = 16
  57.     td.Fields.Append f
  58.  
  59.   
  60.  ' Do
  61.     bInvalid = False
  62.     If x = "" Or bInvalid = True Then
  63.         x = InputBox("Table Name:", "Create New Table")
  64.     End If
  65.  
  66.     If x <> "" Then
  67.         td.Name = x
  68.         gDatabase.TableDefs.Append td
  69.         If Err <> 0 Then
  70.             MsgBox "Error During Attempt to Create Table:" + Chr$(13) + Error$, 64, "Data Manager"
  71.             x = ""
  72.          '   If Err = 3010 Or Err = 3125 Then
  73.          '       bInvalid = True
  74.          '   Else
  75.                 AddTable = False
  76.                 Exit Function
  77.          '   End If
  78.         Else
  79.             RefreshDatabaseWindow
  80.         End If
  81.         
  82.     Else
  83.         AddTable = False
  84.     End If
  85.  ' Loop While bInvalid = True
  86. End Function
  87.  
  88. 'returns true if database is closed
  89. Function CloseCurrentDatabase ()
  90.  
  91.     'Used for loop through forms
  92.     Dim i, max, temp, abort As Integer
  93.     
  94.     
  95.     'If there is no database open, return true
  96.     If gDatabaseName = "" Then
  97.         CloseCurrentDatabase = True
  98.     Else
  99.         'Unload all query and tabledef forms
  100.  
  101.         max = forms.Count - 1
  102.         i = 0
  103.         abort = False
  104.         Do While i <= max
  105.             If forms(i).Tag <> "Main" And forms(i).Tag <> "Database" Then
  106.                 temp = forms.Count
  107.                 Unload forms(i)
  108.                 If temp = forms.Count Then
  109.                     abort = True
  110.                     Exit Do
  111.                 End If
  112.                 max = max - 1
  113.             Else
  114.                 i = i + 1
  115.             End If
  116.         Loop
  117.  
  118.         'If all query and tabledef forms closed, and the user didn't abort,
  119.         'close the database and return Success, else return Failure
  120.         If forms.Count = 2 And Not abort Then
  121.             Unload gDatabaseForm
  122.             CloseCurrentDatabase = True
  123.         Else
  124.             CloseCurrentDatabase = False
  125.         End If
  126.     End If
  127.             
  128.  
  129. End Function
  130.  
  131. Sub OpenADatabase (cmdialog As Control, dataBaseType As String)
  132.  
  133.       
  134.     On Error Resume Next
  135.  
  136.     Dim x As String
  137.     Dim stgpos As Integer
  138.  
  139.     gDatabaseType = dataBaseType
  140.  
  141.     If dataBaseType = "ODBC" Then    'Make ODBC Menu visible
  142.         Set gDatabase = OpenDatabase("", 0, 0, "odbc;")
  143.         If Err = 3059 Then
  144.             Exit Sub
  145.         ElseIf Err <> 0 Then
  146.             MsgBox "Could Not Connect:" + Chr$(13) + Error$, 64, "Data Manager"
  147.             Exit Sub
  148.         End If
  149.         x = "ODBC"
  150.         stgpos = InStr(gDatabase.Connect, "DATABASE=")
  151.         If stgpos > 0 Then x = Mid$(gDatabase.Connect, stgpos + 9)
  152.         gDatabaseName = x
  153.         OpenDatabaseWindow x
  154.     ElseIf dataBaseType = "Access" Then
  155.             cmdialog.DefaultExt = "mdb"
  156.             cmdialog.Filename = ""
  157.             cmdialog.DialogTitle = "Open Database"
  158.             cmdialog.CancelError = True
  159.             cmdialog.Filter = "Access (*.mdb)|*.mdb|All Files (*.*)|*.*|"
  160.             cmdialog.Flags = &H4& Or &H1000& 'remove readonly checkbox
  161.             
  162.             cmdialog.Action = 1
  163.             If Err <> 32755 Then
  164.                 Set gDatabase = OpenDatabase(cmdialog.Filename)
  165.                 If Err <> 0 Then
  166.                     MsgBox "Could Not Open Database:" + Chr$(13) + Error$, 64, "Data Manager"
  167.                     Exit Sub
  168.                 Else
  169.                     'This next line used to read gDatabaseName=gDatabase.Name
  170.                     'but this didn't include the path of the file.
  171.                     gDatabaseName = cmdialog.Filename
  172.                     x = cmdialog.Filetitle
  173.                     OpenDatabaseWindow gDatabaseName
  174.                 End If
  175.             End If
  176.     ElseIf dataBaseType = "Btrieve" Then
  177.             cmdialog.Filename = ""
  178.             cmdialog.DefaultExt = "ddf"
  179.             cmdialog.DialogTitle = "Open Database"
  180.             cmdialog.CancelError = True
  181.             cmdialog.Filter = "Btrieve (*.ddf)|*.ddf|All Files (*.*)|*.*|"
  182.             cmdialog.Flags = &H4& Or &H1000&  'remove readonly checkbox
  183.             
  184.             cmdialog.Action = 1
  185.             If Err <> 32755 Then
  186.                 Set gDatabase = OpenDatabase(cmdialog.Filename, 0, 0, "btrieve")
  187.                 If Err <> 0 Then
  188.                     MsgBox "Could Not Open Database:" + Chr$(13) + Error$, 64, "Data Manager"
  189.                     Exit Sub
  190.                 Else
  191.                     'This next line used to read gDatabaseName=gDatabase.Name
  192.                     'but this didn't include the path of the file.
  193.                     gDatabaseName = cmdialog.Filename
  194.                     x = cmdialog.Filetitle
  195.                     OpenDatabaseWindow gDatabaseName
  196.                 End If
  197.             End If
  198.     Else
  199.         Load OpenDBForm
  200.         OpenDBForm.Label1 = "Pick Your " + gDatabaseType + " Directory:"
  201.         OpenDBForm.Show 1
  202.         If OpenDBForm.ExitCondition = "OK" Then
  203.             x = OpenDBForm.Dir1
  204.             If Right(x, 1) <> "\" Then x = x + "\"
  205.             Set gDatabase = OpenDatabase(x, 0, 0, dataBaseType + ";")
  206.             If Err <> 0 Then
  207.                 MsgBox "Could Not Open Database:" + Chr$(13) + Error$, 64, "Data Manager"
  208.                 Exit Sub
  209.             Else
  210.                 gDatabaseName = gDatabase.Name
  211.                 x = OpenDBForm.Dir1
  212.                 OpenDatabaseWindow x
  213.             End If
  214.         End If
  215.     End If
  216.  
  217. End Sub
  218.  
  219. Sub OpenDatabaseWindow (title As Variant)
  220.     Dim x As New dbForm
  221.     
  222.     Set gDatabaseForm = x
  223.     x.Caption = "Database: " + title
  224.     'gDatabaseName = title
  225.     RefreshDatabaseWindow
  226.     gDatabaseForm.Show
  227.     
  228.     
  229. End Sub
  230.  
  231. Sub OpenNewDatabase (cmdialog As Control, Verfmt As Integer)
  232. 'VerFmt=0 means Access 1.1
  233. 'VerFmt=1 means Access 1.0
  234.  
  235.     On Error Resume Next
  236.     cmdialog.DefaultExt = "mdb"
  237.     cmdialog.DialogTitle = "New Database"
  238.     cmdialog.Filename = ""
  239.     cmdialog.CancelError = True
  240.     cmdialog.Filter = "Access (*.mdb)|*.mdb|All Files (*.*)|*.*|"
  241.     cmdialog.Flags = &H4&
  242.  
  243.     cmdialog.Action = 2
  244.     If Err <> 32755 Then
  245.         Set gDatabase = CreateDatabase(cmdialog.Filename, ";LANGID=0x0809;CP=1252;COUNTRY=0", Verfmt)
  246.         If Err <> 0 Then
  247.             MsgBox "Could Not Create Database:  " + Chr$(13) + Error$, 64, "Data Manager"
  248.             Exit Sub
  249.         End If
  250.  
  251.         gDatabaseName = cmdialog.Filename
  252.         
  253.         OpenDatabaseWindow (UCase(cmdialog.Filetitle))
  254.     End If
  255.  
  256. End Sub
  257.  
  258. Sub OpenNewTableDesign ()
  259.     On Error Resume Next
  260.  
  261.     Dim sTableName As String
  262.  
  263.     sTableName = InputBox("Table Name:", "Create New Table")
  264.     If sTableName = "" Then Exit Sub
  265.     
  266.     'Check to see if table already exists
  267.     Dim td As New tabledef
  268.     Dim fld As New field
  269.  
  270.     td.Name = sTableName
  271.     fld.Name = "blank"
  272.     fld.type = 1
  273.     fld.size = 12
  274.     td.Fields.Append fld
  275.     gDatabase.TableDefs.Append td
  276.     If Err <> 0 Then  'Problem adding table of that name
  277.         MsgBox "A table already exists with the name """ & sTableName & """.", 33, "Data Manager"
  278.         Exit Sub
  279.     Else
  280.         gDatabase.TableDefs.Delete sTableName
  281.     End If
  282.  
  283.     Dim x As New TableForm
  284.     x.Caption = "Table: " & sTableName
  285.     x.TableName = "New Table"
  286.     
  287.     x.Grid1.ColWidth(0) = 1
  288.     x.Grid1.ColWidth(1) = 3000
  289.     x.Grid1.ColWidth(2) = 2000
  290.     x.Grid1.ColWidth(3) = 2000
  291.  
  292.     x.Grid1.Row = 0
  293.     x.Grid1.Col = 1: x.Grid1.Text = "Field Name"
  294.     x.Grid1.Col = 2: x.Grid1.Text = "Field Type"
  295.     x.Grid1.Col = 3: x.Grid1.Text = "Field Size"
  296.  
  297.     x.Grid1.Rows = 11
  298.     x.Grid2.Rows = 10
  299.  
  300.     x.Grid2.ColWidth(0) = 1
  301.     x.Grid2.ColWidth(1) = 2000
  302.     x.Grid2.ColWidth(2) = 3000
  303.     x.Grid2.ColWidth(3) = 2000
  304.     x.Grid2.ColWidth(4) = 2000
  305.  
  306.     x.Grid2.Row = 0
  307.     x.Grid2.Col = 1: x.Grid2.Text = "Index Name"
  308.     x.Grid2.Col = 2: x.Grid2.Text = "Index Fields"
  309.     x.Grid2.Col = 3: x.Grid2.Text = "Unique?"
  310.     x.Grid2.Col = 4: x.Grid2.Text = "Primary?"
  311.     
  312. End Sub
  313.  
  314. Function OpenTableDesign (table As String)
  315.     On Error Resume Next
  316.  
  317.     Dim t As tabledef
  318.     Dim i As Integer
  319.     Dim y As String
  320.     Dim x As New TableForm
  321.  
  322.     OpenTableDesign = True
  323.  
  324.     x.Caption = "Table: " + table
  325.     x.TableName = table
  326.     
  327.     x.Grid1.ColWidth(0) = 1
  328.     x.Grid1.ColWidth(1) = 3000
  329.     x.Grid1.ColWidth(2) = 2000
  330.     x.Grid1.ColWidth(3) = 2000
  331.  
  332.     x.Grid1.Row = 0
  333.     x.Grid1.Col = 1: x.Grid1.Text = "Field Name"
  334.     x.Grid1.Col = 2: x.Grid1.Text = "Field Type"
  335.     x.Grid1.Col = 3: x.Grid1.Text = "Field Size"
  336.  
  337.     x.Grid2.Rows = 11
  338.     x.Grid2.ColWidth(0) = 1
  339.     x.Grid2.ColWidth(1) = 2000
  340.     x.Grid2.ColWidth(2) = 3000
  341.     x.Grid2.ColWidth(3) = 2000
  342.     x.Grid2.ColWidth(4) = 2000
  343.  
  344.     x.Grid2.Row = 0
  345.     x.Grid2.Col = 1: x.Grid2.Text = "Index Name"
  346.     x.Grid2.Col = 2: x.Grid2.Text = "Index Fields"
  347.     x.Grid2.Col = 3: x.Grid2.Text = "Unique?"
  348.     x.Grid2.Col = 4: x.Grid2.Text = "Primary?"
  349.  
  350.     x.Grid2.Rows = 10
  351.  
  352.     If Not RefreshTableFields(x, table) Then
  353.         MsgBox "Could Not Open Table:" + Chr$(13) + Error$, 64, "Data Manager"
  354.         OpenTableDesign = False
  355.         Unload x
  356.         Exit Function
  357.     End If
  358.  
  359.     If Not RefreshTableIndexes(x, table) Then
  360.         MsgBox "Could Not Open Table:" + Chr$(13) + Error$, 64, "Data Manager"
  361.         OpenTableDesign = False
  362.         Unload x
  363.         Exit Function
  364.     End If
  365.  
  366. End Function
  367.  
  368. Sub RefreshDatabaseWindow ()
  369.     Dim i As Integer
  370.  
  371.     gDatabaseForm.List1.Clear
  372.     gDatabase.TableDefs.Refresh
  373.     i = 0
  374.     Do While i < gDatabase.TableDefs.Count
  375.         If Left(UCase(gDatabase.TableDefs(i).Name), 4) <> "MSYS" Then
  376.             gDatabaseForm.List1.AddItem gDatabase.TableDefs(i).Name
  377.         End If
  378.         i = i + 1
  379.     Loop
  380.     If gDatabaseForm.List1.ListCount > 0 Then gDatabaseForm.List1.ListIndex = 0
  381. End Sub
  382.  
  383. Function RefreshTableFields (x As Form, table As String)
  384.     
  385.     Dim s As snapshot
  386.     Dim i As Integer
  387.     
  388.     On Error Resume Next
  389.     RefreshTableFields = True
  390.  
  391.     Set s = gDatabase.ListFields(table)
  392.     If Err <> 0 Then
  393.         RefreshTableFields = False
  394.         Exit Function
  395.     End If
  396.     
  397.     x.Grid1.Clear
  398.     i = s.RecordCount + 1
  399.     If i > 10 Then
  400.         x.Grid1.Rows = i + 1
  401.     Else
  402.         x.Grid1.Rows = 11
  403.     End If
  404.     
  405.     i = 1
  406.     Do While Not s.EOF
  407.         x.Grid1.Row = i
  408.         x.Grid1.Col = 1: x.Grid1.Text = s!Name
  409.         x.Grid1.Col = 2: x.Grid1.Text = TypeToName(s!type)
  410.         x.Grid1.Col = 3: x.Grid1.Text = SizeToText(s!type, s!size)
  411.         i = i + 1
  412.         s.MoveNext
  413.     Loop
  414.     s.Close
  415.  
  416. End Function
  417.  
  418. Function RefreshTableIndexes (x As Form, table As String)
  419.     
  420.     Dim i As Integer
  421.     Dim t As tabledef
  422.  
  423.     On Error Resume Next
  424.     RefreshTableIndexes = True
  425.  
  426.     gDatabase.TableDefs.Refresh
  427.     gDatabase.TableDefs(table).Indexes.Refresh
  428.     
  429.     Set t = gDatabase.TableDefs(table)
  430.     x.Grid2.Rows = t.Indexes.Count + 1
  431.     If t.Indexes.Count = 0 Then
  432.         x.Grid2.Rows = 2
  433.         x.Grid2.Row = 1
  434.         x.Grid2.Col = 1: x.Grid2.Text = ""
  435.         x.Grid2.Col = 2: x.Grid2.Text = ""
  436.         x.Grid2.Col = 3: x.Grid2.Text = ""
  437.         x.Grid2.Col = 4: x.Grid2.Text = ""
  438.     End If
  439.     i = 1
  440.     For i = 0 To t.Indexes.Count - 1
  441.         x.Grid2.Row = i + 1
  442.         x.Grid2.Col = 1: x.Grid2.Text = t.Indexes(i).Name
  443.         x.Grid2.Col = 2: x.Grid2.Text = t.Indexes(i).Fields
  444.  
  445.         x.Grid2.Col = 3
  446.         If t.Indexes(i).Unique Then
  447.             x.Grid2.Text = "Unique"
  448.         Else
  449.             x.Grid2.Text = "Duplicates OK"
  450.         End If
  451.  
  452.         x.Grid2.Col = 4
  453.         If t.Indexes(i).Primary Then
  454.             x.Grid2.Text = "Primary"
  455.         Else
  456.             x.Grid2.Text = "Not Primary"
  457.         End If
  458.     Next i
  459.     t.Close
  460.  
  461. End Function
  462.  
  463. Function SizeToText (fType, FSize)
  464.     If fType = 10 Then
  465.         SizeToText = FSize
  466.     Else
  467.         SizeToText = ""
  468.     End If
  469.  
  470. End Function
  471.  
  472. Function TypeToName (x)
  473.     Select Case x
  474.         Case 1: TypeToName = "Boolean"
  475.         Case 2: TypeToName = "Byte"
  476.         Case 3: TypeToName = "Integer"
  477.         Case 4: TypeToName = "Long Integer"
  478.         Case 5: TypeToName = "Currency"
  479.         Case 6: TypeToName = "Single"
  480.         Case 7: TypeToName = "Double"
  481.         Case 8: TypeToName = "Date/Time"
  482.         Case 9: TypeToName = "<Reserved>"
  483.         Case 10: TypeToName = "Text"
  484.         Case 11: TypeToName = "Binary"
  485.         Case 12: TypeToName = "Memo"
  486.     End Select
  487. End Function
  488.  
  489. Function TypeToSize (fType, FSize)
  490.     Select Case fType
  491.         Case 1: TypeToSize = 1
  492.         Case 2: TypeToSize = 1
  493.         Case 3: TypeToSize = 2
  494.         Case 4: TypeToSize = 4
  495.         Case 5: TypeToSize = 8
  496.         Case 6: TypeToSize = 4
  497.         Case 7: TypeToSize = 8
  498.         Case 8: TypeToSize = 8
  499.         Case 10: TypeToSize = FSize
  500.         Case 11: TypeToSize = 0
  501.         Case 12: TypeToSize = 0
  502.     End Select
  503. End Function
  504.  
  505.