Afficher un message
Vieux 12/04/2006, 19h22   #1 (permalink)
Solenfou
XLDnaute Nouveau
 
Date d'inscription: septembre 2005
Messages: 6
Par défaut ADOX Creer Database et Table

Bonsoir le forum,

Dans une application, je crée à la volée une base de donnée Access et une Table.

J'ai fais 2 versions:

A) Avec reference à 'Microsoft ADO ext. 2.8'

Option Explicit
Option Compare Text

Public Const DataPath As String = 'c:\\Test\\'


Sub Create_Table()
Dim MaTableIndex As New Table
Dim cat As New ADOX.Catalog
Dim MaTableName As String

MaTableName = 'MaTable'

With cat
.Create 'Provider=Microsoft.Jet.OLEDB.4.0;' & 'Data Source=' & DataPath & 'TESTRef.mdb;'
.ActiveConnection = 'Provider=Microsoft.Jet.OLEDB.4.0;' & 'Data Source=' & DataPath & 'TESTRef.mdb;'
On Error Resume Next
.Tables.Delete MaTableName
On Error GoTo 0
End With

With MaTableIndex
.Name = MaTableName
With .Columns
.Append 'Date', adVarWChar, 10
.Append 'Number', adInteger, 10
.Append 'Number2', adInteger, 10
.Append 'Document', adVarWChar, 50
.Append 'Name', adVarWChar, 80
.Append 'AKA', adVarWChar, 80
.Append 'City', adVarWChar, 50
.Append 'Country', adVarWChar, 50
End With
End With

cat.Tables.Append MaTableIndex

End Sub


B) Sans reference (pas d'Option Explicit)


Public Const DataPath As String = 'c:\\Test\\'


Sub Create_Table2()
Dim MaTableId As Object
Dim MaTableIndex As Object
Dim ADODOX As Object
Dim ADODOXCatalog As Object
Dim MaTableName As String

MaTableName = 'MaTable'

Set ADODOX = CreateObject('ADOX.Catalog')
Set ADODOXCatalog = ADODOX

Set MaTableId = CreateObject('ADOX.Table')
Set MaTableIndex = MaTableId



With ADODOXCatalog
.Create 'Provider=Microsoft.Jet.OLEDB.4.0;' & 'Data Source=' & DataPath & 'TESTNoRef.mdb;'
.ActiveConnection = 'Provider=Microsoft.Jet.OLEDB.4.0;' & 'Data Source=' & DataPath & 'TESTNoRef.mdb;'
On Error Resume Next
.Tables.Delete MaTableName
On Error GoTo 0
End With

With MaTableIndex
.Name = MaTableName
With .Columns
.Append 'Date'
.Append 'Number'
.Append 'Number2'
.Append 'Document'
.Append 'Name'
.Append 'AKA'
.Append 'City'
.Append 'Country'
End With
End With

With ADODOXCatalog
.Tables.Append MaTableId
End With

Set ADODOXCatalog = Nothing
Set MaTableId = Nothing

End Sub



Dans la version A, je peux determiner le type de données et la taille de mes champs.

Dans la version B je suis obligé de ne pas déterminer le type et la taille des mes champs.

Y aurait-il un moyen pour pouvoir determiner le type et la taille des champs dans ma version B ?


PS: _Thierry tu reconnaitra des noms d'objet...


Merci de votre aide

Solenfou
Solenfou est déconnecté   Réponse avec citation
ANNONCES