Bonjour,
Je souhaite créer une une base de donnée MDB à partir de VBA Excel. Après diverses recherches sur le net, j'en suis arrivé à utiliser deux méthodes, mais j'ai quelques questions à leur propos.
1- en utilisant une requête SQL
Ce code me crée bien ma base et ma table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Dim cnn As Object Dim cat As Object Set cnn = CreateObject("ADODB.Connection") Set cat = CreateObject("ADOX.Catalog") cat.Create "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Engine Type=5; Data Source=E:\2017\Bilan.mbd" cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\2017\Bilan.mbd" cnn.Execute "CREATE TABLE Files (Id INT PRIMARY KEY NOT NULL, Path VARCHAR(255))", adCmdText + adExecuteNoRecords 'cnn.Execute "CREATE UNIQUE INDEX UX_Id ON Files (Id )", adCmdText cnn.Close Set cat = Nothing Set cnn = Nothing
En utilisant cette méthode, y-a-t-il un moyen de faire en sorte que le champ Id s'auto-incrémente au fur et à mesure des ajouts d'enregistrements?
1- en utilisant ADOX
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Dim cnn As Object Dim cat As Object Dim objTable As Object Dim objKey As Object Set cnn = CreateObject("ADODB.Connection") Set cat = CreateObject("ADOX.Catalog") Set objTable = CreateObject("ADOX.Table") Set objKey = CreateObject("ADOX.Key") cat.Create "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Engine Type=5; Data Source=E:\2017\Bilan.mbd" cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\2017\Bilan.mbd" Set cat.ActiveConnection = cnn objTable.Name = "Files" With objTable.Columns .Append "Id", adInteger .Append "Path", adWChar, 255 End With objKey.Name = "Id" objKey.Type = adKeyPrimary objKey.Columns.Append "Id" objTable.Keys.Append objKey cat.Tables.Append objTable cnn.Close Set objTable = Nothing Set cat = Nothing Set cnn = Nothing
Même question, y-a-t-il un moyen de faire en sorte que le champ Id s'auto-incrémente au fur et à mesure des ajouts d'enregistrements?
N'étant pas un expert en VBA et bases de données, quels sont les avantages / inconvénients de ces deux méthodes?
Voyez vous dans ces deux codes des erreurs ou choses choquantes?
Merci.
Ikes qui ne demande qu'à apprendre et comprendre.![]()
Partager