Hướng dẫn này chứa các ví dụ về cách sử dụng SQL với VBA Access. Như bạn sẽ thấy bên dưới, để chạy các truy vấn SQL trong Access với VBA, bạn có thể sử dụng DoCmd.RunSQL hoặc CurrentDb.Execute các phương pháp.
Lựa chọn SQL
Ví dụ này sẽ sử dụng câu lệnh SQL Select để mở một tập bản ghi:
Dim rs As Recordset Set rs = CurrentDb.OpenRecordset ("select * from Table1 where num = 0", dbOpenDynaset)
Bảng cập nhật SQL
Dòng mã VBA này sử dụng phương thức DoCmd.RunSQL để cập nhật Bảng:
DoCmd.RunSQL ("CẬP NHẬT table1 SET num = 0 trong đó num = 999")
Hoặc bạn có thể sử dụng phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "UPDATE table1 SET num = 0 where num = 999"
Bảng thay thế SQL
Dòng mã VBA này sử dụng DoCmd.RunSQL để thay đổi bảng:
DoCmd.RunSQL ("ALTER TABLE Table3 ADD COLUMN Lương tiền")
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "ALTER TABLE Table3 ADD COLUMN Lương tiền"
Bảng thả
Dòng mã VBA này sử dụng DoCmd.RunSQL để thay đổi bảng:
DoCmd.RunSQL ("DROP Table Table1")
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "DROP Table Table1"
SQL Delete
Mã này sử dụng DoCmd.RunSQL để xóa các bản ghi khỏi bảng:
DoCmd.RunSQL ("XÓA TỪ table1 trong đó num = 999")
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "XÓA TỪ table1 trong đó num = 999"
Chèn SQL vào
Phiên bản DoCmd.RunSQL này chèn các bản ghi vào một bảng:
DoCmd.RunSQL ("INSERT INTO Table1 (LastName, dob, num) VALUES ('L1', # 01/01/2001 #, 78)")
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "INSERT INTO Table1 (LastName, dob, num) VALUES ('L1', # 01/01/2001 #, 78)"
SQL Tạo bảng
Mã này sẽ tạo một Bảng bằng SQL:
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "CREATE TABLE Table1 (KeyID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT, Field2 TEXT)"
Tạo chỉ mục
Dòng mã VBA này sử dụng DoCmd.RunSQL để thay đổi bảng:
DoCmd.RunSQL ("CREATE INDEX" & IndexName & "ON" & TableName & "(" & ColumnName & ");")
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "CREATE INDEX" & IndexName & "ON" & TableName & "(" & ColumnName & ");"
Chỉ số thả
Dòng mã VBA này sử dụng DoCmd.RunSQL để thay đổi bảng:
DoCmd.RunSQL "DROP INDEX ID TRÊN Table1;"
Hoặc với phương thức .Execute của đối tượng cơ sở dữ liệu:
CurrentDb.Execute "DROP INDEX ID ON Table1;"
Tạo nên cơ sở dữ liệu
Mã này sẽ tạo một cơ sở dữ liệu (không có SQL):
Access.DBEngine.CreateDatabase "c: \ Temp \ testDB1.accdb", DB_LANG_GENERAL
Truy vấn SQL
Mở truy vấn
Bạn có thể sử dụng DoCmd.OpenQuery để mở một truy vấn đã lưu:
DoCmd.OpenQuery "qry_1", acViewNormal, acEdit
Thực hiện kiểm tra
CurrentDB.Execute sẽ thực hiện một truy vấn:
CurrentDb.Execute "qry_1", dbFailOnError
Xuất truy vấn sang Excel
DoCmd.OutputTo sẽ xuất một truy vấn sang Excel:
DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLS, "c: \ temp \ ExportedQuery.xls"