Solved

Check Tables In A Database

Posted on 2002-04-24
8
153 Views
Last Modified: 2008-03-06
Hello Experts.
I open a database (set newDB=workspace.opendatabase....)
Is there any way to check how many tables this database
contain ? and their names ?
Many thanks
0
Comment
Question by:HESUS
  • 4
  • 2
  • 2
8 Comments
 
LVL 50

Expert Comment

by:Ryan Chong
ID: 6965074
Debug.print newDB.TableDefs.Count

For i = 1 To newdb.TableDefs.Count - 1
        If myTableName = newdb.TableDefs(i).Name Then
            CheckTableName = True
            MsgBox "Got Table":exit for
        End If
    Next i
0
 
LVL 3

Expert Comment

by:n_narayanan
ID: 6965097
For Access Database

See

http://www.freevbcode.com/ShowCode.Asp?ID=139


You can use SQLDMO object for SQL Server,

Dim oTable As SQLDMO.Table
Dim oColumn As SQLDMO.Column

Me.MousePointer = vbHourglass

lblInfn.Visible = False

If Trim$(cboData.Text) <> "" Then
    cboTable.Clear

For Each oTable In oSQLServer.Databases (cboData.Text).Tables
        cboTable.AddItem oTable.Name
    Next
End If
lblInfn.Visible = True

The code is taken from the link

http://www.freevbcode.com/ShowCode.Asp?ID=4160

Cheers

Narayanan
0
 

Author Comment

by:HESUS
ID: 6966511
To ryancys thank you.
I need a solution for a case that I do not know the names
of the tables.
Thanks
0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 

Author Comment

by:HESUS
ID: 6966542
To Narayanan many thanks.
I tried to use the code that you refered me to(http://www.freevbcode.com/ShowCode.Asp?ID=139) and when I run it, I get an error message in the line :
                  colTables.Add td.Name
the error:Method or data member not found.
I do have the dao ref.
any sugestions?
thank you very much.
0
 
LVL 50

Expert Comment

by:Ryan Chong
ID: 6967572
Simple, is this what you want:

For i = 1 To newdb.TableDefs.Count - 1
       Debug.Print newdb.TableDefs(i).Name
   Next i

? or ..?
0
 
LVL 3

Accepted Solution

by:
n_narayanan earned 100 total points
ID: 6967619
Hesus

It is working fine for me.

What you do, first open the vb project then go to project / references menu to add Microsoft DAO Reference 2.5 or 3.51

Put a Command Button and Put a Listbox

in the command button click event write this,
But note that you have to give the valid database

Private Sub Command1_Click()
Dim tables As Collection, i As Integer
 Set tables = NonSystemTables("D:\mydatabase.mdb")
 For i = 1 To tables.Count
    List1.AddItem tables(i)
 Next
End Sub


Also pate this function inside,


Public Function NonSystemTables(dbPath As String) As Collection

'Input: Full Path to an Access Database

'Returns: Collection of the names
'of non-system tables in that database
'or Nothing if there is an error

'Requires: a reference to data access
'objects (DAO) in your project

On Error GoTo ErrHandler

Dim td As DAO.TableDef
Dim db As DAO.Database
Dim colTables As Collection

Set db = workspaces(0).opendatabase(dbPath)

Set colTables = New Collection

 For Each td In db.TableDefs

    If td.Attributes >= 0 And td.Attributes <> dbHiddenObject _
         And td.Attributes <> 2 Then
   
          colTables.Add td.Name
    End If
  Next
db.Close
Set NonSystemTables = colTables

Exit Function
ErrHandler:
On Error Resume Next
If Not db Is Nothing Then db.Close

Set NonSystemTables = Nothing

End Function

If you still have problem,

Give me your email id. I will mail you the project.

Regards

Narayanan


0
 

Author Comment

by:HESUS
ID: 6971483
To ryancys.
Many thanks for your efforts.
The solution you are suggesting is providing few other strings that are not relevant to my needs. I guess that I can filter them, but I cannot be sure that these are the only once.
Thanks again for the help.
0
 

Author Comment

by:HESUS
ID: 6971499
To n_narayanan thank you.
I still get the same error message (collection type do not have Collection. Add),
But maybe this is because I am still using VB6.
Anyway, instead of using Collection type, I am using A List, and I get the results I need.
Many thanks for your willing to help.
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question