Ce didacticiel contient des exemples d'utilisation de SQL avec VBA Access. Comme vous le verrez ci-dessous, pour exécuter des requêtes SQL dans Access avec VBA, vous pouvez utiliser soit le DoCmd.RunSQL ou CurrentDb.Execute méthodes.
Sélection SQL
Cet exemple utilisera l'instruction SQL Select pour ouvrir un jeu d'enregistrements :
Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("select * from Table1 where num=0", dbOpenDynaset)
Tableau de mise à jour SQL
Cette ligne de code VBA utilise la méthode DoCmd.RunSQL pour mettre à jour une table :
DoCmd.RunSQL ("UPDATE table1 SET num =0 où num=999")
Ou vous pouvez utiliser la méthode .Execute de l'objet de base de données :
CurrentDb.Execute "UPDATE table1 SET num =0 où num=999"
Table de modification SQL
Cette ligne de code VBA utilise DoCmd.RunSQL pour modifier une table :
DoCmd.RunSQL ("ALTER TABLE Table3 ADD COLUMN Salary money")
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "ALTER TABLE Table3 ADD COLUMN Salary money"
Supprimer le tableau
Cette ligne de code VBA utilise DoCmd.RunSQL pour modifier une table :
DoCmd.RunSQL ("DROP Table Table1")
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "DROP Table Table1"
Supprimer SQL
Ce code utilise le DoCmd.RunSQL pour supprimer les enregistrements d'une table :
DoCmd.RunSQL ("DELETE FROM table1 where num=999")
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "DELETE FROM table1 where num=999"
Insertion SQL dans
Cette instance de DoCmd.RunSQL insère des enregistrements dans une table :
DoCmd.RunSQL ("INSERT INTO Table1 ( LastName, dob, num ) VALUES ('L1',#01/01/2001#,78)")
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "INSERT INTO Table1 ( LastName, dob, num ) VALUES ('L1',#01/01/2001#,78)"
SQL Créer une table
Ce code créera une table en utilisant SQL :
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Créer un index
Cette ligne de code VBA utilise DoCmd.RunSQL pour modifier une table :
DoCmd.RunSQL ("CREATE INDEX " & IndexName & " ON " & TableName & "(" & ColumnName & ");")
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "CREATE INDEX " & IndexName & " ON " & TableName & "(" & ColumnName & ");"
Indice de chute
Cette ligne de code VBA utilise DoCmd.RunSQL pour modifier une table :
DoCmd.RunSQL "DROP INDEX ID ON Table1;"
Ou avec la méthode .Execute de l'objet base de données :
CurrentDb.Execute "DROP INDEX ID ON Table1;"
Créer une base de données
Ce code va créer une base de données (pas de SQL) :
Access.DBEngine.CreateDatabase "c:\Temp\testDB1.accdb", DB_LANG_GENERAL
Requêtes SQL
Ouvrir la requête
Vous pouvez utiliser DoCmd.OpenQuery pour ouvrir une requête enregistrée :
DoCmd.OpenQuery "qry_1", acViewNormal, acEdit
Exécuter l'ordre
CurrentDB.Execute exécutera une requête :
CurrentDb.Execute "qry_1", dbFailOnError
Exporter la requête vers Excel
DoCmd.OutputTo exportera une requête vers Excel :
DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLS, "c:\temp\ExportedQuery.xls"