home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD15746332001.psc / DBofADO.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  2001-03-03  |  28.2 KB  |  718 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Begin VB.Form frmDBofADO 
  4.    BorderStyle     =   3  'Fixed Dialog
  5.    Caption         =   "Database Structure - ADO"
  6.    ClientHeight    =   5985
  7.    ClientLeft      =   2760
  8.    ClientTop       =   3750
  9.    ClientWidth     =   8985
  10.    Icon            =   "DBofADO.frx":0000
  11.    LinkTopic       =   "Form1"
  12.    MaxButton       =   0   'False
  13.    MDIChild        =   -1  'True
  14.    MinButton       =   0   'False
  15.    ScaleHeight     =   5985
  16.    ScaleWidth      =   8985
  17.    ShowInTaskbar   =   0   'False
  18.    Begin VB.OptionButton optJetVersion 
  19.       Caption         =   "3.51"
  20.       Height          =   315
  21.       Index           =   0
  22.       Left            =   3840
  23.       TabIndex        =   18
  24.       Top             =   30
  25.       Value           =   -1  'True
  26.       Width           =   885
  27.    End
  28.    Begin VB.OptionButton optJetVersion 
  29.       Caption         =   "3.6"
  30.       Height          =   315
  31.       Index           =   1
  32.       Left            =   4920
  33.       TabIndex        =   17
  34.       Top             =   30
  35.       Width           =   735
  36.    End
  37.    Begin VB.OptionButton optJetVersion 
  38.       Caption         =   "4.0"
  39.       Height          =   315
  40.       Index           =   2
  41.       Left            =   5850
  42.       TabIndex        =   16
  43.       Top             =   30
  44.       Width           =   735
  45.    End
  46.    Begin VB.ComboBox cboQueryTemplate 
  47.       BeginProperty Font 
  48.          Name            =   "Arial"
  49.          Size            =   9
  50.          Charset         =   0
  51.          Weight          =   400
  52.          Underline       =   0   'False
  53.          Italic          =   0   'False
  54.          Strikethrough   =   0   'False
  55.       EndProperty
  56.       Height          =   345
  57.       Left            =   150
  58.       Style           =   2  'Dropdown List
  59.       TabIndex        =   15
  60.       Top             =   4230
  61.       Width           =   1215
  62.    End
  63.    Begin VB.ComboBox cboSelectView 
  64.       Enabled         =   0   'False
  65.       Height          =   315
  66.       Left            =   7230
  67.       TabIndex        =   7
  68.       Text            =   "cboSelectView"
  69.       Top             =   975
  70.       Width           =   1560
  71.    End
  72.    Begin VB.CommandButton cmdQuery 
  73.       Enabled         =   0   'False
  74.       BeginProperty Font 
  75.          Name            =   "Arial"
  76.          Size            =   8.25
  77.          Charset         =   0
  78.          Weight          =   700
  79.          Underline       =   0   'False
  80.          Italic          =   0   'False
  81.          Strikethrough   =   0   'False
  82.       EndProperty
  83.       Height          =   405
  84.       Left            =   5730
  85.       Picture         =   "DBofADO.frx":030A
  86.       Style           =   1  'Graphical
  87.       TabIndex        =   6
  88.       Top             =   4215
  89.       Width           =   1005
  90.    End
  91.    Begin VB.CommandButton cmdQueryExecute 
  92.       Height          =   345
  93.       Left            =   3390
  94.       Picture         =   "DBofADO.frx":12C4
  95.       Style           =   1  'Graphical
  96.       TabIndex        =   5
  97.       ToolTipText     =   "Execute query statement"
  98.       Top             =   4260
  99.       Width           =   1035
  100.    End
  101.    Begin VB.CommandButton cmdQueryAbort 
  102.       Height          =   345
  103.       Left            =   2400
  104.       Picture         =   "DBofADO.frx":2026
  105.       Style           =   1  'Graphical
  106.       TabIndex        =   4
  107.       ToolTipText     =   "Abort query"
  108.       Top             =   4260
  109.       Width           =   975
  110.    End
  111.    Begin VB.TextBox txtQuery 
  112.       BeginProperty Font 
  113.          Name            =   "MS Sans Serif"
  114.          Size            =   8.25
  115.          Charset         =   0
  116.          Weight          =   700
  117.          Underline       =   0   'False
  118.          Italic          =   0   'False
  119.          Strikethrough   =   0   'False
  120.       EndProperty
  121.       Height          =   1065
  122.       Left            =   150
  123.       MultiLine       =   -1  'True
  124.       TabIndex        =   3
  125.       Text            =   "DBofADO.frx":2D88
  126.       Top             =   4695
  127.       Visible         =   0   'False
  128.       Width           =   8655
  129.    End
  130.    Begin VB.CommandButton cmdQueryClear 
  131.       Height          =   345
  132.       Left            =   1410
  133.       Picture         =   "DBofADO.frx":2D91
  134.       Style           =   1  'Graphical
  135.       TabIndex        =   2
  136.       ToolTipText     =   "Clear query statement"
  137.       Top             =   4260
  138.       Width           =   975
  139.    End
  140.    Begin VB.CommandButton cmdTable 
  141.       BeginProperty Font 
  142.          Name            =   "Arial"
  143.          Size            =   8.25
  144.          Charset         =   0
  145.          Weight          =   700
  146.          Underline       =   0   'False
  147.          Italic          =   0   'False
  148.          Strikethrough   =   0   'False
  149.       EndProperty
  150.       Height          =   405
  151.       Left            =   6750
  152.       Picture         =   "DBofADO.frx":39B3
  153.       Style           =   1  'Graphical
  154.       TabIndex        =   1
  155.       Top             =   4215
  156.       Width           =   1005
  157.    End
  158.    Begin VB.CommandButton cmdClose 
  159.       BeginProperty Font 
  160.          Name            =   "Arial"
  161.          Size            =   8.25
  162.          Charset         =   0
  163.          Weight          =   700
  164.          Underline       =   0   'False
  165.          Italic          =   0   'False
  166.          Strikethrough   =   0   'False
  167.       EndProperty
  168.       Height          =   405
  169.       Left            =   7770
  170.       Picture         =   "DBofADO.frx":496D
  171.       Style           =   1  'Graphical
  172.       TabIndex        =   0
  173.       Top             =   4215
  174.       Width           =   1005
  175.    End
  176.    Begin MSComctlLib.ImageList ImageList1 
  177.       Left            =   4260
  178.       Top             =   1380
  179.       _ExtentX        =   1005
  180.       _ExtentY        =   1005
  181.       BackColor       =   -2147483643
  182.       ImageWidth      =   16
  183.       ImageHeight     =   16
  184.       MaskColor       =   12632256
  185.       _Version        =   393216
  186.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  187.          NumListImages   =   12
  188.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  189.             Picture         =   "DBofADO.frx":5927
  190.             Key             =   "imgDatabase"
  191.          EndProperty
  192.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  193.             Picture         =   "DBofADO.frx":5B73
  194.             Key             =   "imgClosed"
  195.          EndProperty
  196.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  197.             Picture         =   "DBofADO.frx":5C6F
  198.             Key             =   "imgOpen"
  199.          EndProperty
  200.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  201.             Picture         =   "DBofADO.frx":5D83
  202.             Key             =   "imgTable"
  203.          EndProperty
  204.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  205.             Picture         =   "DBofADO.frx":609F
  206.             Key             =   "imgTableOpen"
  207.          EndProperty
  208.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  209.             Picture         =   "DBofADO.frx":63BB
  210.             Key             =   "imgField"
  211.          EndProperty
  212.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  213.             Picture         =   "DBofADO.frx":64CD
  214.             Key             =   "imgProp"
  215.          EndProperty
  216.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  217.             Picture         =   "DBofADO.frx":67E9
  218.             Key             =   "imgIndex"
  219.          EndProperty
  220.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  221.             Picture         =   "DBofADO.frx":6945
  222.             Key             =   "imgQueries"
  223.          EndProperty
  224.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  225.             Picture         =   "DBofADO.frx":6C99
  226.             Key             =   "imgQuery"
  227.          EndProperty
  228.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  229.             Picture         =   "DBofADO.frx":7365
  230.             Key             =   "imgRelations"
  231.          EndProperty
  232.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  233.             Picture         =   "DBofADO.frx":76B9
  234.             Key             =   "imgRelation"
  235.          EndProperty
  236.       EndProperty
  237.    End
  238.    Begin MSComctlLib.TreeView tvwDB 
  239.       Height          =   2760
  240.       Left            =   150
  241.       TabIndex        =   8
  242.       Top             =   1365
  243.       Width           =   3930
  244.       _ExtentX        =   6932
  245.       _ExtentY        =   4868
  246.       _Version        =   393217
  247.       Indentation     =   529
  248.       LabelEdit       =   1
  249.       LineStyle       =   1
  250.       Style           =   7
  251.       ImageList       =   "ImageList1"
  252.       Appearance      =   1
  253.    End
  254.    Begin MSComctlLib.ListView lvwProperties 
  255.       Height          =   2130
  256.       Left            =   4470
  257.       TabIndex        =   9
  258.       Top             =   2025
  259.       Width           =   4305
  260.       _ExtentX        =   7594
  261.       _ExtentY        =   3757
  262.       View            =   3
  263.       LabelEdit       =   1
  264.       LabelWrap       =   -1  'True
  265.       HideSelection   =   0   'False
  266.       FullRowSelect   =   -1  'True
  267.       _Version        =   393217
  268.       Icons           =   "ImageList1"
  269.       SmallIcons      =   "ImageList1"
  270.       ForeColor       =   -2147483640
  271.       BackColor       =   -2147483643
  272.       BorderStyle     =   1
  273.       Appearance      =   1
  274.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  275.          Name            =   "MS Sans Serif"
  276.          Size            =   8.25
  277.          Charset         =   0
  278.          Weight          =   400
  279.          Underline       =   0   'False
  280.          Italic          =   0   'False
  281.          Strikethrough   =   0   'False
  282.       EndProperty
  283.       NumItems        =   0
  284.    End
  285.    Begin VB.Label lblJetVersion 
  286.       Caption         =   "Jet.OLEDB version:"
  287.       Height          =   315
  288.       Left            =   2190
  289.       TabIndex        =   19
  290.       Top             =   60
  291.       Width           =   1485
  292.    End
  293.    Begin VB.Label lblDatabase 
  294.       Caption         =   "Database:"
  295.       Height          =   420
  296.       Left            =   150
  297.       TabIndex        =   14
  298.       Top             =   510
  299.       Width           =   8625
  300.    End
  301.    Begin VB.Label lblTableList 
  302.       Caption         =   "Tables && Fields:"
  303.       Height          =   195
  304.       Left            =   150
  305.       TabIndex        =   13
  306.       Top             =   1050
  307.       Width           =   2310
  308.    End
  309.    Begin VB.Label lblFieldProperties 
  310.       Caption         =   "Field properties:"
  311.       Height          =   195
  312.       Left            =   4530
  313.       TabIndex        =   12
  314.       Top             =   1065
  315.       Width           =   1140
  316.    End
  317.    Begin VB.Label lblTableName 
  318.       BorderStyle     =   1  'Fixed Single
  319.       Height          =   285
  320.       Left            =   6630
  321.       TabIndex        =   11
  322.       Top             =   1350
  323.       Width           =   2130
  324.    End
  325.    Begin VB.Label lblFieldName 
  326.       BorderStyle     =   1  'Fixed Single
  327.       Height          =   285
  328.       Left            =   6630
  329.       TabIndex        =   10
  330.       Top             =   1665
  331.       Width           =   2130
  332.    End
  333. Attribute VB_Name = "frmDBofADO"
  334. Attribute VB_GlobalNameSpace = False
  335. Attribute VB_Creatable = False
  336. Attribute VB_PredeclaredId = True
  337. Attribute VB_Exposed = False
  338. ' DBofADO.frm
  339. ' By Herman Liu
  340. ' An extract from an actual application of mine (with modifications to reduce some of its
  341. ' features, e.g. option to use query and allowance for change of fields, etc.).
  342. ' ========================================================================================
  343. ' PURPOSES:
  344. ' ----------------------------------------------------------------------------------------
  345. ' (1) To show how to use the ADO Schema to obtain a list of tables of a database.
  346. ' (2) To show how to provide a re-usable single form (the same form can be used for any
  347. '     MDB file name, and another form can be used to display as many tables as there are
  348. '     in that database. Otherwise, you will need 10 forms if there are 10 tables).
  349. ' (3) To show the possible techniques to enable opening several tables on the screen in
  350. '     the same session (using the same form) yet without conflict.
  351. ' (4) To show how to display various attributes/properties in descriptive text which is
  352. '     more understandable, rather than the VB's original numeric codes.
  353. ' ========================================================================================
  354. ' NOTES:
  355. ' ----------------------------------------------------------------------------------------
  356. ' (a) For a study of DAO, refer my "DBofDAO".
  357. ' (b) Use of Access 97 is assumed: PROVIDER=Microsoft.Jet.OLEDB.3.51 (though you may change
  358. ' it to "3.6" if you installed "3.6").  If you are using Access 2000, you must change it
  359. ' from "3.51" to "3.6".  If you do not have the "3.6", download a copy of "Acjet40sp4.exe"
  360. ' ("http://support.microsoft.com/support/kb/articles/q239/1/14.asp?FinishURL=%2Fdownloads%
  361. ' 2Frelease%2Easp%3FReleaseID%3D1264 4%26redirect%3Dno").  After the update, remember to
  362. ' change the Reference of your project to "Microsoft DAO 3.6 Object Library".
  363. ' ----------------------------------------------------------------------------------------
  364. ' (c) Subsequent to the original posting of this code, MS has made availble the OLEDB 4.0.
  365. ' If you wish to use Jet.OLEDB.4.0, you have to download "Microsoft Jet 4.0 Service
  366. ' Pack 3" which contains the complete Jet 4.0 components up to Service Pack 3 (SP3). This
  367. ' is the same version of Jet shipped with Windows 2000 and Windows Millennium. ("http://
  368. ' www.microsoft.com/data/download_Jet4SP3.htm".  Before you can install Jet40SP3_Comp.exe,
  369. ' you have to install MDAC 2.6 first - "http://www.microsoft.com/data/download_260SDK.htm")
  370. ' ----------------------------------------------------------------------------------------
  371. ' (d) ADOX have some collections not available in ADO.  It includes objects for schema
  372. ' creation and modification.  The type library reference is "Microsoft ADO Ext. for DDL
  373. ' and Security".  The ADOX library file name is Msadox.dll, and the program ID (ProgID)
  374. ' is "ADOX".  If you have included ADOX in the project References, then instead of using
  375. ' the table Schema method as adopted in this program, you may use ADOX, however you must
  376. ' also use Jet.OLEDB.4.0 in this case.
  377. ' Dim X As New ADOX.Catalog, tbls As ADOX.Tables, tbl As ADOX.Table
  378. ' gAcnn.ConnectionString = (whatever our connection string)
  379. ' gAcnn.Open (whatever our connection string)
  380. ' Set X.ActiveConnection = gAcnn
  381. ' Set tbls = X.Tables
  382. ' then loop through each tbl in tbles.
  383. ' ----------------------------------------------------------------------------------------
  384. ' (e) The Count property of TreeView is limited to 32767. It would return an incorrect
  385. ' value if you add more than 32767 nodes to the TreeView. The Index property of a Node
  386. ' object also returns an incorrect value for the same reason.  If you add more than 65535
  387. ' nodes, the TreeView's scrollbar may disappear and the TreeView may experience redraw
  388. ' problems.  (To work around, you may use SendMessage API to obtain the true node count.
  389. ' Alternately, you can use a variable to keep track of how many nodes. Each time you add
  390. ' or remove a node, +/- the variable by one.  But performance will become extremely slow
  391. ' as you add more and more nodes.)
  392. ' ----------------------------------------------------------------------------------------
  393. ' ========================================================================================
  394. ' REMARKS:
  395. ' ----------------------------------------------------------------------------------------
  396. ' MDI form
  397. '   "Window" menu is provided so that you can switch between tables opened, if you open
  398. '       more than one on the screen.
  399. ' TABLES form
  400. '   Double click a table name will invokd the GRID form (alternatively highlight that
  401. '       table name and click "Table" button).
  402. ' GRID form
  403. '   Click the tiny colored buttons below the Grid will show various attributes/properties.
  404. ' -----------------------------------------------------------------------------------------
  405. Option Explicit
  406. Dim rsSchema As adodb.Recordset
  407. Dim rs As adodb.Recordset
  408. Dim mNodeDB As Node
  409. Dim mNodeTables As Node
  410. Dim mnodeFields As Node
  411. Dim mListItem As ListItem
  412. Dim arrQueryTemplate(9) As String
  413. Dim mCurrListRef           ' Flag to assure this node is already clicked
  414. Dim mSuspend As Boolean
  415. Private Sub Form_Load()
  416.     On Error Resume Next
  417.     Dim i As Integer, n As Integer, j As Integer
  418.     Dim mctn As Integer
  419.     Dim mType As Long
  420.     Dim mAttr As Integer
  421.     Dim mstrType As String
  422.     Dim mstrAttr As String
  423.     Dim mtblName As String
  424.     Dim mNumTables As Integer
  425.     Dim mFldName As String
  426.     Dim tmp As String
  427.     Dim mSeq As Integer
  428.     mSuspend = True
  429.     lblDatabase = "Database: " & gFileSpec
  430.      ' Configure cboSelectView control.
  431.     cboSelectView.Clear
  432.     With cboSelectView
  433.         .AddItem "Icon View"         ' 0
  434.         .AddItem "SmallIcon View"    ' 1
  435.         .AddItem "List View"         ' 2
  436.         .AddItem "Report View"       ' 3
  437.         .ListIndex = 3
  438.     End With
  439.      ' Configure cboQueryTemplate control.
  440.     cboQueryTemplate.Clear
  441.     With cboQueryTemplate
  442.         .AddItem "Select"            ' e.g. crosstab, parameter, summary
  443.         .AddItem "Action"            ' e.g. append, delete, update
  444.         .AddItem "Make-table"
  445.         .AddItem "SQL"               ' In a client/server environment
  446.         .ListIndex = 3
  447.     End With
  448.      ' Configure ListView control.
  449.     lvwProperties.ListItems.Clear
  450.     lvwProperties.Icons = ImageList1
  451.     lvwProperties.SmallIcons = ImageList1
  452.     lvwProperties.ColumnHeaders.Clear
  453.     lvwProperties.ColumnHeaders.Add , , "Property", 1700
  454.     lvwProperties.ColumnHeaders.Add , , "Value", lvwProperties.Width - 100 - 1700
  455.     lvwProperties.View = lvwReport
  456.         ' we want to show coloumn headers
  457.     lvwProperties.HideColumnHeaders = False
  458.         ' We don't want shade/highlight any item at start
  459.     lvwProperties.HideSelection = True
  460.         
  461.        'Configure TreeView
  462.     tvwDB.Nodes.Clear
  463.     tvwDB.Indentation = 5
  464.     Set gAcnn = New adodb.Connection
  465.     gAcnn.CursorLocation = adUseClient
  466.     If optJetVersion(0).Value = True Then
  467.         gAcnn.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & gFileSpec & ";"
  468.     ElseIf optJetVersion(1).Value = True Then
  469.         gAcnn.Open "PROVIDER=Microsoft.Jet.OLEDB.3.6;Data Source=" & gFileSpec & ";"
  470.     ElseIf optJetVersion(2).Value = True Then
  471.         gAcnn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & gFileSpec & ";"
  472.     End If
  473.     Set rsSchema = gAcnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
  474.     Me.MousePointer = vbHourglass
  475.     '--------------------------------------------------------------------
  476.     ' Set root node of TreeView.
  477.     '--------------------------------------------------------------------
  478.     Set mNodeDB = tvwDB.Nodes.Add(, , "RootDB", "Database", "imgDatabase")
  479.     mNodeDB.Tag = "RootDB"
  480.      
  481.     '------------------------
  482.     ' Set table nodes.
  483.     '------------------------
  484.     Do Until rsSchema.EOF
  485.          ' Since MS current schema returns tables named "MSys...."
  486.          ' as well as their TABLE_TYPE is also "TABLE", we exclude them.
  487.         If UCase(Left(rsSchema!Table_name, 4)) <> "MSYS" Then
  488.            If UCase(Left(rsSchema!Table_name, 11)) <> "SWITCHBOARD" Then
  489.                mtblName = rsSchema!Table_name
  490.                Set mNodeTables = tvwDB.Nodes.Add("RootDB", tvwChild, "X" & mtblName, _
  491.                    mtblName, "imgTable")
  492.                mNodeTables.Tag = "Tables"
  493.            End If
  494.         End If
  495.         rsSchema.MoveNext
  496.     Loop
  497.     rsSchema.Close
  498.     If mNodeTables Is Nothing Then
  499.         Me.MousePointer = vbDefault
  500.         MsgBox "No table in the database"
  501.         Exit Sub
  502.     End If
  503.     ' REDIM gstrFields and gstrFieldsOrig according to No. of tables in DB
  504.     mNumTables = tvwDB.Nodes("RootDB").Children
  505.     ReDim gstrFields(mNumTables, 2) As String
  506.     ReDim gstrFieldsOrig(mNumTables, 2) As String
  507.     '----------------------------------------------------------------------
  508.     ' Set field nodes for each table (at the same time fill first dimension
  509.     '   of gstrFields and gstrFieldsOrig)
  510.     ' We only want field Name, Type, DefinedSize, Attributes & NumericScale
  511.     ' totalling 6.
  512.     '----------------------------------------------------------------------
  513.     Set rs = New adodb.Recordset
  514.     mctn = tvwDB.Nodes("RootDB").Children
  515.       ' We begin with the first table, but what is its node index in Nodex?
  516.     n = tvwDB.Nodes("RootDB").Child.FirstSibling.Index
  517.       ' The Nodes collection is a 1-based collection.
  518.     mSeq = 0
  519.     For i = n To mctn + n - 1
  520.        mtblName = tvwDB.Nodes(i).Text
  521.        
  522.          ' We have the table name, so we Query that table in order to get
  523.          ' the field names.  1 record is more than good enough, hence the
  524.          ' second argument is 1.
  525.            Set rs = gAcnn.Execute("SELECT * FROM [" & mtblName & "]", 1, 1)
  526.        
  527.        For j = 0 To rs.Fields.Count - 1
  528.             mFldName = rs.Fields(j).Name
  529.             Set mnodeFields = tvwDB.Nodes.Add("X" & mtblName, tvwChild, _
  530.                 mFldName & "X" & CStr(mSeq), mFldName, "imgField")
  531.             mnodeFields.Tag = "Fields"
  532.             mSeq = mSeq + 1
  533.        Next
  534.        rs.Close
  535.        
  536.        ' Fill first dimension of gstrFields and gstrFieldsOrig with table name
  537.        ' (starting with subscript 0)
  538.        gstrFields(i - n, 1) = mtblName
  539.        gstrFieldsOrig(i - n, 1) = mtblName
  540.     Next i
  541.      ' Sort the top group of nodes.
  542.     tvwDB.Nodes(1).Sorted = True
  543.      ' Expand top node.
  544.     tvwDB.Nodes(1).Expanded = True
  545.      ' Hide these buttons
  546.     cboQueryTemplate.Visible = False
  547.     cmdQueryExecute.Visible = False
  548.     cmdQueryClear.Visible = False
  549.     cmdQueryAbort.Visible = False
  550.     txtQuery.Visible = False
  551.     Me.MousePointer = vbDefault
  552.     mSuspend = False
  553.     Exit Sub
  554. End Sub
  555. Private Sub Form_Activate()
  556.       ' Effectively continued from Form_load
  557.     If mNodeTables Is Nothing Then
  558.          Unload Me
  559.     End If
  560. End Sub
  561. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  562.     Dim i As Integer
  563.     For i = Forms.Count - 1 To 0 Step -1
  564.         If Forms(i).Name <> "frmFrame" Then
  565.              Unload Forms(i)
  566.         End If
  567.     Next
  568. End Sub
  569. Private Sub cmdQuery_Click()
  570.       ' Allow/disallow buttons
  571.     cboQueryTemplate.Visible = True
  572.     cmdQueryAbort.Visible = True
  573.     cmdQueryClear.Visible = True
  574.     cmdQueryExecute.Visible = True
  575.     cmdQuery.Visible = False
  576.     cmdTable.Visible = False
  577.     cmdClose.Visible = False
  578.     txtQuery.Visible = True
  579.     txtQuery.SetFocus
  580. End Sub
  581. ' Called from tvwDB_Dblclick
  582. Private Sub GetProperties(mtblName, mFldName, mNodeKey)
  583.     ' Query that retrieves the fields
  584.     Set rs = gAcnn.Execute("SELECT * FROM [" & mtblName & "]", 1, 1)
  585.     lvwProperties.ListItems.Clear
  586.     Dim i As Integer
  587.     Dim mthisFldName As String
  588.     Dim mType As Long
  589.     Dim mAttr
  590.     Dim mstrType As String
  591.     Dim mstrAttr As String
  592.     Dim mDefinedSize
  593.     Dim mNumericScale
  594.     Dim mPrecision
  595.     For i = 0 To rs.Fields.Count - 1
  596.         If CStr(rs.Fields(i).Name) = mFldName Then
  597.              mthisFldName = rs.Fields(i).Name
  598.                 mType = rs.Fields(i).Type
  599.              mstrType = ConvType(mType)
  600.                 mAttr = rs.Fields(i).Attributes
  601.              mstrAttr = ConvAttr(mAttr)
  602.              mDefinedSize = rs.Fields(i).DefinedSize
  603.              mNumericScale = rs.Fields(i).NumericScale
  604.              mPrecision = rs.Fields(i).Precision
  605.              
  606.              Set mListItem = lvwProperties.ListItems.Add(, , _
  607.                   Text:="Name:", SmallIcon:="imgProp")
  608.              mListItem.SubItems(1) = mthisFldName
  609.              
  610.              Set mListItem = lvwProperties.ListItems.Add(, , _
  611.                   Text:="Type:", SmallIcon:="imgProp")
  612.              mListItem.SubItems(1) = mstrType
  613.              
  614.              Set mListItem = lvwProperties.ListItems.Add(, , _
  615.                   Text:="Attributes:", SmallIcon:="imgProp")
  616.              mListItem.SubItems(1) = mstrAttr
  617.              
  618.              Set mListItem = lvwProperties.ListItems.Add(, , _
  619.                   Text:="DefinedSize:", SmallIcon:="imgProp")
  620.              mListItem.SubItems(1) = mDefinedSize
  621.              
  622.              Set mListItem = lvwProperties.ListItems.Add(, , _
  623.                   Text:="NumericScale:", SmallIcon:="imgProp")
  624.              mListItem.SubItems(1) = mNumericScale
  625.              
  626.              Set mListItem = lvwProperties.ListItems.Add(, , _
  627.                   Text:="Precision:", SmallIcon:="imgProp")
  628.              mListItem.SubItems(1) = mPrecision
  629.              Exit For
  630.         End If
  631.     Next i
  632.     lblTableName.Caption = Space(4) & mtblName
  633.     lblFieldName.Caption = Space(4) & mFldName
  634.     rs.Close
  635.     Set rs = Nothing
  636.     mCurrListRef = mNodeKey
  637. End Sub
  638. Private Sub tvwDB_Click()
  639.    Dim tmpNode As Node
  640.    Dim tmtes' mSeqDefinedSizmes.List    Next i
  641.  ema e As NodeB_ClicyExecute.Visible = Truems(1) = mNumevate Sub tvwn.Visibl = mNVisible =bs.List    NeADO.frx":39B3
  642.         gAcnn.le =bs.Lme.Caption = Space(4) & mFldName
  643.     rs.Close
  644.     Set r rs.Fiel.le =bs.Lmm = lvwProperties.ListItems.Add(, , _
  645.                   Text:="Precision:", Smlaec(1) = mNumericScale
  646.         
  647.       rop")
  648.              mListItem.SubItems(1) iems(1) iScaended = True
  649.      ' HideeeeeeeeeeeeeeeeeeeeeeeeeeeeeIle =bs.List    NeADO.frx":39B3
  650. List  =bs.List    NNNNNNNNNv 
  651.    lvwPrope=bs.LieryClear.VisimCu(efinedSize,erties.L.frx":39B3
  652. List le =bs.Lme.Caption = Spa) = mNumericScpeeeeeIle =bsning seaec(1) x":39Bt    NNTreeView.
  653.     '-----------------------==========eeeeIe==eeeeIe==eeeeIe==eeeeIe==et'Configure T      Set mLis         
  654. g Then
  655. O.frx":39   Set mLis         
  656. g The
  657.     tv   es' mSeqDefinedSizmes.List    Next i
  658.  ema e As NodeB_ClicyExecute.Visible = Truems(1) = mNumevate Sub tvwn.Visibl = mNVisible =bs.List    NeADO.frx":39B3
  659.         gAcnn.le =bs.Lme.Caption = Space(4) & mFldName
  660.     rs.Close
  661.     Set r rs.Fiel.le =bs.L.le =bs.Lme.Caption =t    ption =t    ption Node
  662.    Di=bs.Lme..le =bs.Lme.Lme.Captit r rs.Fiel"Precision:", Smlaec(1) =  = mNumevataption =t    p
  663. O.frs.List
  664.   s.Add(, , _
  665.        ="imgPrnrst dime
  666.    .le '(, , _--------------------------------------
  667. ' (1) To show how tmFldName, dd(, , _
  668.        ="imgPrnrst dime
  669.         
  670.              Set mLima e As NodeB_ClicyExe    = = = = = =.    =bs.st    NeA & mFldName
  671. s.List
  672. stItemsAs NoeeeeIe==eeeeIe=bs.lts nodlme
  673.     ' In a c.l(1) r-------
  674. ' (1) To sties.ListItems.Add(, , _
  675.                 Oset
  676. , , _
  677.             v      =  SiaTicScale
  678. s.L.frx------
  679. " & mtblNaDB_Click()
  680.     cmdQuer
  681.             vole = rs.Fields(i).NumericScalme.Captit t       '.Ca    cmdQuer
  682.           cmdQue-
  683. _d:As Boolean
  684. bs.List    N
  685. _d:sylT mDefinedS--
  686. ' (1).ks.lts nodlm
  687. ' (1).ks.l,,,,,,,,,,,,,, =  SiaTicScale
  688. s.L.frx-TicScale
  689. s.L.frx-TicScale
  690. s.L.frx--------
  691. ' (1) TTicScale
  692. s.L.frx--------
  693.        .Visible =DaVisible =bs.Lis-
  694.     SeLme..le =bs.Lme.Lme.Captit r rs.Fiel"Precision:", Smlaec(1)--
  695. ' (1) To sties.ListItems.Add(, , _
  696.        c            mF
  697. ' es.ListItems.AdL.frx":39B3
  698. , =  SiaTicScale  Do Until rsScale  DoicScale  l 0
  699.   T (1) TTicScale
  700. s.L.frx--------
  701.        .Visible =DaVisible =bs.Li- 1
  702.        Captit mallIcx-------- tablel,,,,,,,,,sipt 0)
  703.      tc l 0
  704. ' (1).ks.lts n---
  705. " blel,,,,,,,Prope"Fields"
  706.  mtblNacale  ,,,,Prope"abs.Lm,,Prope"FietblNa ,,Prop  
  707.                n---
  708.         ale  Do Until rsScaietblNa ,,ProropevwDBXsible =DaV    sScaiet1)
  709. dd= rs.FielDaV   pe"Fities.ListItem = = = 
  710. ' (1) TTirDaV   pe"FeqDefcoloumnG'  393216
  711.     gAcnn.le =b Di=bs.Lme..le aiet1tabase =--
  712.   icScalme.Captit f
  713. End Su   Me.MousePointer = vbDefault
  714.     mSuspend = False
  715.     Exit Sub
  716. End S rle aip
  717.     ",Prope"pend, delete) To stcision:".Captionf optJetVersil----ce(4) & mFldN4) & mFldN4) & mFldN4) =
  718.