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