' -------------------------------------------------------------------------
'             Gnration d'une base de donnes pour
'                          Microsoft Access 2.0
'                            (1/4/1999 17:07:38)
' -------------------------------------------------------------------------
'      Nom de la base : Vue principale Eurecas
'      Projet : Eurecas
'      Auteur : Engel - Silverio
'      Date de dernire modification : 9/7/1998 8:55:47
' -------------------------------------------------------------------------

Dim WSpace As WorkSpace
Dim MaBD As DataBase
Dim UneTable As TableDef
Dim UnIndex As Index
Dim UneRelation As Relation
Dim UnChamp As Field
Dim UnePropriete As Property
Dim Idx As Integer


Function ExisteTable (NomTable As String) As Integer
  Dim Idx As Integer
  Dim Tmp As Integer

  Tmp = False
  For Idx = 0 To MaBD.TableDefs.Count-1
    Set UneTable = MaBD.TableDefs (Idx)
    If UneTable.Name = NomTable Then
      Tmp = True
    End If
  Next Idx
  ExisteTable = Tmp
End Function 

Function ExisteIndex (NomIndex As String) As Integer
  Dim Idx As Integer
  Dim Tmp As Integer

  Tmp = False
  For Idx = 0 To UneTable.Indexes.Count-1
    Set UnIndex = UneTable.Indexes (Idx)
    If UnIndex.Name = NomIndex Then
      Tmp = True
    End If
  Next Idx
  ExisteIndex = Tmp
End Function 

Function ExisteRelation (NomRelation As String) As Integer
  Dim Idx As Integer
  Dim Tmp As Integer

  Tmp = False
  For Idx = 0 To MaBD.Relations.Count-1
    Set UneRelation = MaBD.Relations (Idx)
    If UneRelation.Name = NomRelation Then
      Tmp = True
    End If
  Next Idx
  ExisteRelation = Tmp
End Function 

Sub Generation ()

Set WSpace = DBEngine (0)
Set MaBD = WSpace(0)

Debug.Print "Suppression des relations ..."
For idx = 0 To MaBD.Relations.count - 1
  Set UneRelation = MaBD.Relations(0)
  Debug.Print "  " + UneRelation.Name
  MaBD.Relations.Delete UneRelation.Name
Next idx

If ExisteTable ("CCY") Then
  Debug.Print "Suppression de la table CCY"
  MABD.TableDefs.Delete "CCY"
End If

If ExisteTable ("CTY") Then
  Debug.Print "Suppression de la table CTY"
  MABD.TableDefs.Delete "CTY"
End If


' ------------------------------------------------------------------------
' Cration de la table CCY
' ------------------------------------------------------------------------

Debug.Print

Debug.Print "Cration de la table CCY"
Set UneTable = MaBD.CreateTableDef ()
UneTable.Name = "CCY"

' -------------------- Attribut ID --------------------

Set UnChamp = UneTable.CreateField ("ID", DB_LONG) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut ID_R_LOCALISER --------------------

Set UnChamp = UneTable.CreateField ("ID_R_LOCALISER", DB_LONG)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut ISOCODE --------------------

Set UnChamp = UneTable.CreateField ("ISOCODE", DB_TEXT, 3) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut NAME --------------------

Set UnChamp = UneTable.CreateField ("NAME", DB_TEXT, 40) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut DECPOS --------------------

Set UnChamp = UneTable.CreateField ("DECPOS", DB_INTEGER) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut UOQ --------------------

Set UnChamp = UneTable.CreateField ("UOQ", DB_TEXT, 4) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut INTBAS --------------------

Set UnChamp = UneTable.CreateField ("INTBAS", DB_TEXT, 32) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut EXCHANGE --------------------

Set UnChamp = UneTable.CreateField ("EXCHANGE", DB_CURRENCY) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut REFCCY --------------------

Set UnChamp = UneTable.CreateField ("REFCCY", DB_INTEGER) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut UEMCCY --------------------

Set UnChamp = UneTable.CreateField ("UEMCCY", DB_INTEGER) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_USER --------------------

Set UnChamp = UneTable.CreateField ("LAST_USER", DB_TEXT, 20)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_MODIFY --------------------

Set UnChamp = UneTable.CreateField ("LAST_MODIFY", DB_DATE)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_VALIDATOR --------------------

Set UnChamp = UneTable.CreateField ("LAST_VALIDATOR", DB_TEXT, 20)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_VALIDATE --------------------

Set UnChamp = UneTable.CreateField ("LAST_VALIDATE", DB_DATE)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut DOWNLOADKEY --------------------

Set UnChamp = UneTable.CreateField ("DOWNLOADKEY", DB_TEXT, 32)  
UneTable.Fields.Append UnChamp

WSpace.BeginTrans
MaBD.TableDefs.Append UneTable
WSpace.CommitTrans

Set UnePropriete = MaBD.TableDefs("CCY").CreateProperty("Description", DB_TEXT, "Entit devise")
MaBD.TableDefs("CCY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("ID").CreateProperty("Description", DB_TEXT, "Identifiant devise")
MaBD.TableDefs("CCY").Fields("ID").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("ID_R_LOCALISER").CreateProperty("Description", DB_TEXT, "Identifiant ville")
MaBD.TableDefs("CCY").Fields("ID_R_LOCALISER").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("ISOCODE").CreateProperty("Description", DB_TEXT, "Code ISO de la devise")
MaBD.TableDefs("CCY").Fields("ISOCODE").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("NAME").CreateProperty("Description", DB_TEXT, "Libell de la devise")
MaBD.TableDefs("CCY").Fields("NAME").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("DECPOS").CreateProperty("Description", DB_TEXT, "Positions dcimales ?")
MaBD.TableDefs("CCY").Fields("DECPOS").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("UOQ").CreateProperty("Description", DB_TEXT, "Unit montaire")
MaBD.TableDefs("CCY").Fields("UOQ").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("EXCHANGE").CreateProperty("Description", DB_TEXT, "par rapport  l'Euro")
MaBD.TableDefs("CCY").Fields("EXCHANGE").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("REFCCY").CreateProperty("Description", DB_TEXT, "Devise de rfrence pour le taux de conversion")
MaBD.TableDefs("CCY").Fields("REFCCY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("UEMCCY").CreateProperty("Description", DB_TEXT, "Devise faisant partie de l'UEM")
MaBD.TableDefs("CCY").Fields("UEMCCY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("LAST_USER").CreateProperty("Description", DB_TEXT, "Nom d'accs de l'utilisateur ayant modifi l'enregistrement")
MaBD.TableDefs("CCY").Fields("LAST_USER").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("LAST_MODIFY").CreateProperty("Description", DB_TEXT, "Date de la dernire modification de l'enregistrement")
MaBD.TableDefs("CCY").Fields("LAST_MODIFY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("LAST_VALIDATOR").CreateProperty("Description", DB_TEXT, "Nom d'accs de l'utilisateur ayant valid l'enregistrement")
MaBD.TableDefs("CCY").Fields("LAST_VALIDATOR").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("LAST_VALIDATE").CreateProperty("Description", DB_TEXT, "Date de la validation de l'enregistrement")
MaBD.TableDefs("CCY").Fields("LAST_VALIDATE").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CCY").Fields("DOWNLOADKEY").CreateProperty("Description", DB_TEXT, "Cl externe prvue comme interface avec d'autres applications")
MaBD.TableDefs("CCY").Fields("DOWNLOADKEY").Properties.Append UnePropriete


Debug.Print "Cl primaire PK_DEVISE"
Set UnIndex = MaBD.TableDefs("CCY").CreateIndex ("PK_DEVISE")
UnIndex.IgnoreNulls = False
UnIndex.Primary = True
UnIndex.Required = True
UnIndex.Unique = True
Set UnChamp = UnIndex.CreateField ("ID")
UnIndex.Fields.Append UnChamp

MaBD.TableDefs("CCY").Indexes.Append UnIndex


' -------------------------------------------------------------------------
' Index de la table CCY
' -------------------------------------------------------------------------

Debug.Print "Cration de l'index I_FK_R_LOCALISER de la table CCY"
Set UnIndex = MaBD.TableDefs("CCY").CreateIndex ("I_FK_R_LOCALISER")
UnIndex.IgnoreNulls = True
UnIndex.Primary = False
UnIndex.Required = True
UnIndex.Unique = False
Set UnChamp = UnIndex.CreateField ("ID_R_LOCALISER")
UnIndex.Fields.Append UnChamp

MaBD.TableDefs("CCY").Indexes.Append UnIndex


' ------------------------------------------------------------------------
' Cration de la table CTY
' ------------------------------------------------------------------------

Debug.Print

Debug.Print "Cration de la table CTY"
Set UneTable = MaBD.CreateTableDef ()
UneTable.Name = "CTY"

' -------------------- Attribut ID --------------------

Set UnChamp = UneTable.CreateField ("ID", DB_LONG) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut SHORTNAME --------------------

Set UnChamp = UneTable.CreateField ("SHORTNAME", DB_TEXT, 20) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut NAME --------------------

Set UnChamp = UneTable.CreateField ("NAME", DB_TEXT, 40) 
UnChamp.Required = True 
UneTable.Fields.Append UnChamp

' -------------------- Attribut WEEKEND --------------------

Set UnChamp = UneTable.CreateField ("WEEKEND", DB_TEXT, 7)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_USER --------------------

Set UnChamp = UneTable.CreateField ("LAST_USER", DB_TEXT, 20)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_MODIFY --------------------

Set UnChamp = UneTable.CreateField ("LAST_MODIFY", DB_DATE)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_VALIDATOR --------------------

Set UnChamp = UneTable.CreateField ("LAST_VALIDATOR", DB_TEXT, 20)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut LAST_VALIDATE --------------------

Set UnChamp = UneTable.CreateField ("LAST_VALIDATE", DB_DATE)  
UneTable.Fields.Append UnChamp

' -------------------- Attribut DOWNLOADKEY --------------------

Set UnChamp = UneTable.CreateField ("DOWNLOADKEY", DB_TEXT, 32)  
UneTable.Fields.Append UnChamp

WSpace.BeginTrans
MaBD.TableDefs.Append UneTable
WSpace.CommitTrans

Set UnePropriete = MaBD.TableDefs("CTY").CreateProperty("Description", DB_TEXT, "Ville")
MaBD.TableDefs("CTY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("ID").CreateProperty("Description", DB_TEXT, "Identifiant ville")
MaBD.TableDefs("CTY").Fields("ID").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("SHORTNAME").CreateProperty("Description", DB_TEXT, "Libell de la ville")
MaBD.TableDefs("CTY").Fields("SHORTNAME").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("NAME").CreateProperty("Description", DB_TEXT, "Nom de la ville")
MaBD.TableDefs("CTY").Fields("NAME").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("WEEKEND").CreateProperty("Description", DB_TEXT, "Weekend")
MaBD.TableDefs("CTY").Fields("WEEKEND").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("LAST_USER").CreateProperty("Description", DB_TEXT, "Nom d'accs de l'utilisateur ayant modifi l'enregistrement")
MaBD.TableDefs("CTY").Fields("LAST_USER").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("LAST_MODIFY").CreateProperty("Description", DB_TEXT, "Date de la dernire modification de l'enregistrement")
MaBD.TableDefs("CTY").Fields("LAST_MODIFY").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("LAST_VALIDATOR").CreateProperty("Description", DB_TEXT, "Nom d'accs de l'utilisateur ayant valid l'enregistrement")
MaBD.TableDefs("CTY").Fields("LAST_VALIDATOR").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("LAST_VALIDATE").CreateProperty("Description", DB_TEXT, "Date de la validation de l'enregistrement")
MaBD.TableDefs("CTY").Fields("LAST_VALIDATE").Properties.Append UnePropriete
Set UnePropriete = MaBD.TableDefs("CTY").Fields("DOWNLOADKEY").CreateProperty("Description", DB_TEXT, "Cl externe prvue comme interface avec d'autres applications")
MaBD.TableDefs("CTY").Fields("DOWNLOADKEY").Properties.Append UnePropriete


Debug.Print "Cl primaire PK_CTY"
Set UnIndex = MaBD.TableDefs("CTY").CreateIndex ("PK_CTY")
UnIndex.IgnoreNulls = False
UnIndex.Primary = True
UnIndex.Required = True
UnIndex.Unique = True
Set UnChamp = UnIndex.CreateField ("ID")
UnIndex.Fields.Append UnChamp

MaBD.TableDefs("CTY").Indexes.Append UnIndex

' Appel d'une autre procdure car la taille de chaque
' procedure ne doit pas dpasser 64ko

Cles_Etrangeres

End Sub


Sub Cles_Etrangeres

' -------------------------------------------------------------------------
' Cration des contraintes rfrentielles
' -------------------------------------------------------------------------

Debug.Print

Debug.Print "Cl trangre FK_R_LOCALISER de CCY"
If ExisteRelation ("FK_R_LOCALISER") Then
  MABD.Relations.Delete "FK_R_LOCALISER"
End If

Set UneRelation = MaBD.CreateRelation ("FK_R_LOCALISER")
UneRelation.Attributes = DB_RELATIONDONTENFORCE
UneRelation.Table = "CTY"
UneRelation.ForeignTable = "CCY"
Set UnChamp = UneRelation.CreateField ("ID")
UnChamp.ForeignName = "ID_R_LOCALISER"
UneRelation.Fields.Append UnChamp


MaBD.Relations.Append UneRelation

Debug.Print
Debug.Print "Fin de la gnration"
End Sub