ADOX Creer Database et Table

Solenfou

XLDnaute Nouveau
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
 

MichelXld

XLDnaute Barbatruc
bonsoir Solenfou

tu peux remplacer les constantes par leurs valeurs

With .Columns
.Append 'Date', 202, 10
.Append 'Number', 3, 10
.Append 'Number2', 3, 10
.Append 'Document', 202, 50
.Append 'Name', 202, 80
.Append 'AKA', 202, 80
.Append 'City', 202, 50
.Append 'Country', 202, 50
End With





la liste :

AdArray 0x2000
adBigInt 20
adBinary 128
adBoolean 11
adBSTR 8
adChapter 136
adChar 129
adCurrency 6
adDate 7
adDBDate 133
adDBTime 134
adDBTimeStamp 135
adDecimal 14
adDouble 5
adEmpty 0
adError 10
adFileTime 64
adGUID 72
adIDispatch 9
adInteger 3
adIUnknown 13
adLongVarBinary 205
adLongVarChar 201
adLongVarWChar 203
adNumeric 131
adPropVariant 138
adSingle 4
adSmallInt 2
adTinyInt 16
adUnsignedBigInt 21
adUnsignedInt 19
adUnsignedSmallInt 18
adUnsignedTinyInt 17
adUserDefined 132
adVarBinary 204
adVarChar 200
adVariant 12
adVarNumeric 139
adVarWChar 202
adWChar 130




bonne soirée
MichelXld
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin