Αυτό το σεμινάριο περιέχει παραδείγματα χρήσης SQL με πρόσβαση VBA. Όπως θα δείτε παρακάτω, για την εκτέλεση ερωτημάτων SQL στην Access with VBA μπορείτε να χρησιμοποιήσετε είτε το DoCmd.RunSQL ή CurrentDb. Εκτέλεση μεθόδους.
SQL Select
Αυτό το παράδειγμα θα χρησιμοποιήσει τη δήλωση SQL Select για να ανοίξει ένα σύνολο εγγραφών:
Dim rs As Recordset Set rs = CurrentDb.OpenRecordset ("select * from Table1 where num = 0", dbOpenDynaset)
Πίνακας ενημέρωσης SQL
Αυτή η γραμμή κώδικα VBA χρησιμοποιεί τη μέθοδο DoCmd.RunSQL για την ενημέρωση ενός πίνακα:
DoCmd.RunSQL ("ΕΝΗΜΕΡΩΣΗ πίνακα 1 SET num = 0 όπου num = 999")
Or μπορείτε να χρησιμοποιήσετε τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb. Εκτέλεση "ΕΝΗΜΕΡΩΣΗ πίνακα 1 SET num = 0 όπου num = 999"
SQL Alter Table
Αυτή η γραμμή κώδικα VBA χρησιμοποιεί το DoCmd.RunSQL για να αλλάξει έναν πίνακα:
DoCmd.RunSQL ("ΑΛΛΑΓΟΣ ΠΙΝΑΚΑΣ Πίνακας 3 ΠΡΟΣΘΗΚΗ ΣΤΗΛΗ Χρήματα μισθών")
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb. Εκτέλεση "ΑΛΛΑΓΟΣ ΠΙΝΑΚΑΣ Πίνακας 3 ΠΡΟΣΘΗΚΗ ΣΤΗΛΗ Χρήματα μισθών"
Drop Table
Αυτή η γραμμή κώδικα VBA χρησιμοποιεί το DoCmd.RunSQL για να αλλάξει έναν πίνακα:
DoCmd.RunSQL ("DROP Table Table1")
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb. Εκτέλεση "DROP Table Table1"
SQL Delete
Αυτός ο κώδικας χρησιμοποιεί το DoCmd.RunSQL για να διαγράψει εγγραφές από έναν πίνακα:
DoCmd.RunSQL ("ΔΙΑΓΡΑΦΗ ΑΠΟ πίνακα 1 όπου num = 999")
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb. Εκτέλεση "ΔΙΑΓΡΑΦΗ ΑΠΟ πίνακα 1 όπου num = 999"
SQL Insert Into
Αυτή η παρουσία του DoCmd.RunSQL εισάγει εγγραφές σε έναν πίνακα:
DoCmd.RunSQL ("INSERT INTO Table1 (LastName, dob, num) VALUES ('L1',#01/01/2001#, 78)")
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb.Execute "INSERT INTO Table1 (LastName, dob, num) VALUES ('L1',#01/01/2001#, 78)"
SQL Δημιουργία πίνακα
Αυτός ο κώδικας θα δημιουργήσει έναν πίνακα χρησιμοποιώντας SQL:
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Δημιουργία ευρετηρίου
Αυτή η γραμμή κώδικα VBA χρησιμοποιεί το DoCmd.RunSQL για να αλλάξει έναν πίνακα:
DoCmd.RunSQL ("CREATE INDEX" & IndexName & "ON" & TableName & "(" & ColumnName & ");")
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb.Ecute "CREATE INDEX" & IndexName & "ON" & TableName & "(" & ColumnName & ");"
Δείκτης πτώσης
Αυτή η γραμμή κώδικα VBA χρησιμοποιεί το DoCmd.RunSQL για να αλλάξει έναν πίνακα:
DoCmd.RunSQL "DROP INDEX ID ON Table1;"
Or με τη .Εκτέλεση της μεθόδου του αντικειμένου βάσης δεδομένων:
CurrentDb.Execute "DROP INDEX ID ON Table1;"
Δημιουργία βάσης δεδομένων
Αυτός ο κώδικας θα δημιουργήσει μια βάση δεδομένων (χωρίς SQL):
Access.DBEngine.CreateDatabase "c: \ Temp \ testDB1.accdb", DB_LANG_GENERAL
Ερωτήματα SQL
Άνοιγμα ερωτήματος
Μπορείτε να χρησιμοποιήσετε το DoCmd.OpenQuery για να ανοίξετε ένα αποθηκευμένο ερώτημα:
DoCmd.OpenQuery "qry_1", acViewNormal, acEdit
Εκτέλεση ερωτήματος
Το CurrentDB.Execute θα εκτελέσει ένα ερώτημα:
CurrentDb.Εκτέλεση "qry_1", dbFailOnError
Εξαγωγή ερωτήματος στο Excel
DoCmd.OutputTo θα εξαγάγει ένα ερώτημα στο Excel:
DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLS, "c: \ temp \ ExportedQuery.xls"