VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB

by Payman Motamedi (1 Submission)
Category: Databases/Data Access/DAO/ADO
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Thu 25th April 2002
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB

Rate Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB



Dim rsTable, rsField As dao.Recordset
Dim str1, str2 As String, db1, db2 As dao.Database
Dim int1 As Integer, fld As Field, tdf As dao.TableDef

CreateDB = False

On Error GoTo CreateDB_Error
Set db1 = OpenDatabase(G_RefDB)
Set rsTable = db1.OpenRecordset("Select Distinct TableName from tblTableFields")

If Dir(dbName) <> "" Then Kill dbName

Set db2 = CreateDatabase(dbName, dbLangGeneral)

rsTable.MoveFirst
Do Until rsTable.EOF
    On Error Resume Next
    db2.TableDefs.Delete rsTable!TableName
    On Error GoTo 0
    Set tdf = db2.CreateTableDef(rsTable!TableName)
    Set rsField = db1.OpenRecordset("Select * from tblTableFields where TableName = '" & rsTable!TableName & "'")
    rsField.MoveLast
    rsField.MoveFirst
    Do Until rsField.EOF
    Select Case rsField!Type
        Case "dbText"
            Set fld = tdf.CreateField(rsField!FieldName, dbText)
        Case "dbInteger"
            Set fld = tdf.CreateField(rsField!FieldName, dbInteger)
        Case "dbLong"
            Set fld = tdf.CreateField(rsField!FieldName, dbLong)
        Case "dbBoolean"
            Set fld = tdf.CreateField(rsField!FieldName, dbBoolean)
        Case "dbByte"
            Set fld = tdf.CreateField(rsField!FieldName, dbByte)
        Case "dbSingle"
            Set fld = tdf.CreateField(rsField!FieldName, dbSingle)
        Case "dbDate"
            Set fld = tdf.CreateField(rsField!FieldName, dbDate)
        Case "dbDouble"
            Set fld = tdf.CreateField(rsField!FieldName, dbDouble)
        Case "dbLongBinary"
            Set fld = tdf.CreateField(rsField!FieldName, dbLongBinary)
        Case "dbMemo"
            Set fld = tdf.CreateField(rsField!FieldName, dbMemo)
    End Select
        'Set fld = tdf.CreateField(rsField!FieldName, rsField!Type)
        If Not IsNull(rsField!Size) Then fld.Size = rsField!Size
        If Not IsNull(rsField!DefaultValue) Then fld.DefaultValue = rsField!DefaultValue
        If rsField!Type = "dbText" Then fld.AllowZeroLength = rsField!AllowZero
    tdf.Fields.Append fld
    rsField.MoveNext
    Loop
 db2.TableDefs.Append tdf
 db2.TableDefs.Refresh
rsTable.MoveNext
On Error Resume Next

On Error GoTo 0
Loop
rsTable.Close
rsField.Close
db1.Close
db2.Close
Set rsTable = Nothing
Set rsField = Nothing
Set db1 = Nothing
Set db2 = Nothing
CreateDB = True
Exit Function
CreateDB_Error:
MsgBox "The error: " & Err.Description & "has happened"
End Function

Download this snippet    Add to My Saved Code

Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB Comments

No comments have been posted about Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB. Why not be the first to post a comment about Creating a blank DB by reading its structure (Tables, fields, Data Type) from a table in another DB.

Post your comment

Subject:
Message:
0/1000 characters