1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Public Function GetScriptSQL() as String
Dim LDB As DAO.Database
Dim TBL As DAO.TableDef
Dim FLD As DAO.Field
Dim IND As DAO.Index
Dim REL As DAO.Relation
Dim DataTypes As Collection
Set DataTypes = New Collection
DataTypes.Add Key:=CStr(1), Item:="BIT"
DataTypes.Add Key:=CStr(2), Item:="TINYINT"
DataTypes.Add Key:=CStr(3), Item:="SMALLINT"
DataTypes.Add Key:=CStr(4), Item:="INTEGER"
DataTypes.Add Key:=CStr(5), Item:="CURRENCY"
DataTypes.Add Key:=CStr(6), Item:="SINGLE"
DataTypes.Add Key:=CStr(7), Item:="DOUBLE"
DataTypes.Add Key:=CStr(8), Item:="DATE"
DataTypes.Add Key:=CStr(9), Item:="BINARY"
DataTypes.Add Key:=CStr(10), Item:="VARCHAR"
DataTypes.Add Key:=CStr(11), Item:="LONGBINARY"
DataTypes.Add Key:=CStr(12), Item:="LONGCHAR"
DataTypes.Add Key:=CStr(15), Item:="GUID"
DataTypes.Add Key:=CStr(16), Item:="BIGINT"
DataTypes.Add Key:=CStr(17), Item:="VARBINARY"
DataTypes.Add Key:=CStr(18), Item:="CHAR"
DataTypes.Add Key:=CStr(19), Item:="NUMERIC"
DataTypes.Add Key:=CStr(20), Item:="NUMERIC"
DataTypes.Add Key:=CStr(21), Item:="DOUBLE"
DataTypes.Add Key:=CStr(22), Item:="TIME"
DataTypes.Add Key:=CStr(23), Item:="TIMESTAMP"
DataTypes.Add Key:=CStr(24), Item:="VARBINARY"
DataTypes.Add Key:=CStr(101), Item:="LONGBINARY"
Dim Script As String
Dim Fk_fld As String
Dim Fk_src As String
Set LDB = CurrentDb
For Each TBL In LDB.TableDefs
If (TBL.Attributes And (dbSystemObject Or dbAttachedTable)) = 0 Then
Script = Script & "CREATE TABLE " & TBL.Name & vbCrLf & "(" & vbCrLf
For Each FLD In TBL.Fields
Script = Script & vbTab & FLD.Name & vbTab & DataTypes(CStr(FLD.Type)) & IIf(FLD.Type = 10 Or FLD.Type = 18, "(" & FLD.Size & ")", "") & IIf(FLD.Required, vbTab & "NOT NULL", "") & IIf(Len(FLD.DefaultValue) > 0, vbTab & "DEFAULT VALUE " & FLD.DefaultValue, "") & "," & vbCrLf
Next
For Each IND In TBL.Indexes
If (IND.Name = "PrimaryKey") Then
Script = Script & vbTab & "PRIMARY KEY ("
For Each FLD In IND.Fields
Script = Script & FLD.Name & ", "
Next
Script = Left(Script, Len(Script) - 2) & ")" & vbCrLf
End If
Next
Script = Script & ");" & vbCrLf & vbCrLf
End If
Next
For Each REL In LDB.Relations
Script = Script & "ALTER TABLE " & REL.ForeignTable & " ADD CONSTRAINT " & REL.Name
Fk_fld = ""
Fk_src = ""
For Each FLD In REL.Fields
Fk_fld = Fk_fld & FLD.Name & ", "
Fk_src = Fk_src & FLD.ForeignName & ", "
Next
Script = Script & " FOREIGN KEY (" & Left(Fk_fld, Len(Fk_fld) - 2) & ")"
Script = Script & " REFERENCES " & REL.table & "(" & Left(Fk_src, Len(Fk_src) - 2) & ");" & vbCrLf
Next
LDB.Close
Set LDB = Nothing
GetScriptDSQL = Script
End Function |
Partager