[AccessD] Build tables programatically

Hewson, Jim JHewson at nciinc.com
Wed Feb 11 08:18:37 CST 2009


John,
I have an Access 2003 database that uses A2007 runtime on a client's
machine.
The data store is located on the client's C:\ Drive so any changes made
to the data store needs to be done through the front end.
I use a function called from a Module... I still haven't wrapped my head
around a class.
When I modify the front end the links to the tables are created before I
place a new copy on the client's machine.  Therefore all I need to do is
"relink" the tables.

Here it is - HTH...

Function UpdateTable()
    
    Dim dbRemote As Database
    Dim db As Database
    Dim tDef As TableDef
    Dim tdefs As TableDefs
    Dim strFileName As String
    
    strFileName = "C:\DiaconateDatabase\DiaconateData.mdb"
    
    Set dbRemote = OpenDatabase(strFileName)
    
    dbRemote.Execute "CREATE TABLE tblConEdGroups (ConEdGroupID
AutoIncrement, ConEdGroup Text(50), MaxPerYr Single, CONSTRAINT
tblConEdGroups_PK PRIMARY KEY(ConEdGroupID));"
    dbRemote.Execute "CREATE TABLE tblConEdQualifiers (ConEdQualifierID
AutoIncrement, ConEdGroupID Long, ConEd Text(50), ConEdQualifier Single,
ConEdUnits Text(50), ConEdPoints Single, Ordinal Single, CONSTRAINT
tblConEdQualifiers_PK PRIMARY KEY(ConEdQualifierID));"
    dbRemote.Execute "CREATE TABLE tblConEdReq (ConEdReqID
AutoIncrement, Year Long, Requirements Single, CONSTRAINT tblConEdReq_PK
PRIMARY KEY(ConEdReqID));"
    dbRemote.Execute "CREATE TABLE tblContinuingEducation (ConEdID
AutoIncrement, DeaconID Long, DateCompleted DateTime, Title Text(50),
Location Text(50), ConEdQualifierID Long, Qualifier Single, CONSTRAINT
tblContinuingEducation_PK PRIMARY KEY(ConEdID));"
    dbRemote.Execute "CREATE TABLE tblDuties (DutyID Long, Duty
Text(50), Ordinal Single, CONSTRAINT tblDuties_PK PRIMARY KEY(DutyID));"
    dbRemote.Execute "CREATE TABLE tblParishDuties (ParishDutiesID Long,
ParishID Long, DutyID Long, CONSTRAINT tblParishDuties_PK PRIMARY
KEY(ParishDutiesID));"
    
'Add Field -- BIT equals Yes/No
    dbRemote.Execute "ALTER TABLE tblDeacon ADD COLUMN OrdinationYear
Text(10);"
    dbRemote.Execute "ALTER TABLE tblDeacon ADD COLUMN BackgroundCheck
DateTime;"
    dbRemote.Execute "ALTER TABLE tblDeanery ADD COLUMN DeaconID Long;"
    dbRemote.Execute "ALTER TABLE tblParish ADD COLUMN DeaconsNeeded
Byte;"
    dbRemote.Execute "ALTER TABLE tblParish ADD COLUMN FutureDeacons
Byte;"
    
'Delete Field
'    dbRemote.Execute "ALTER TABLE tblDeacon DROP COLUMN
WPhoneExtension;"
'    dbRemote.Execute "DROP INDEX PastorID ON tblParish"

'Change the type or size of a field
    ' dbRemote.Execute "ALTER TABLE tblDeacon ALTER COLUMN MyField
TEXT(100);"
    
'DROP Table - delete table no longer used
'    dbRemote.Execute "DROP Table tblSurvey"
        
    dbRemote.Close
    Set db = CurrentDb
    Set tdefs = db.TableDefs
    
'relink tables
    For Each tDef In tdefs
        If tDef.SourceTableName <> "" Then 'If the table source is other
than a base table
            tDef.Connect = ";Database=" & strFileName
            tDef.RefreshLink 'refresh link
        End If
    Next
    
    Set dbRemote = Nothing
    
'update queries. 
   DoCmd.SetWarnings False

        DoCmd.OpenQuery "zUpdateConEdGroupsFields"
        DoCmd.OpenQuery "zUpdateConEdQualifiersFields"
        DoCmd.OpenQuery "zUpdateConEdReqFields"
        DoCmd.OpenQuery "zUpdateContinuingEducationFields"

    DoCmd.SetWarnings True
'
End Function

Jim
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Wednesday, February 11, 2009 7:43 AM
To: Access Developers discussion and problem solving
Subject: [AccessD] Build tables programatically

For the class lecture it would be handy to be able to build Access
tables programatically.  I do not 
know how to do this, though the authors of books usually do so.

Does anyone on this list have any code library that would allow me to
create field X with data type 
Y, that is a PK etc etc.

Having that, I can build append queries to append specific data into
these tables, but if anyone has 
such a thing, code to extract actual data from a table and write the SQL
Statements that would 
append that into a specific table would be nice.

IOW (for example) I have an existing state table and an agency table
with a state ID.  In order to 
minimize the impact on the readers having to go manually create a state
and agency table and 
manually input data into those tables, it would be nice to provide code
that builds those two tables 
and then populates those tables with a few data elements.

Ideas anyone?

-- 
John W. Colby
www.ColbyConsulting.com
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
################################################################################
If you have received this message in error, please contact the sender
immediately and be aware that the use, copying, or dissemination of 
this information is prohibited. This email transmission contains 
information from NCI Information Systems, Inc. that may be considered 
privileged or confidential and is intended solely for the named 
recipient.
################################################################################




More information about the AccessD mailing list