Xoá các table theo điều kiện trong Access

đăng 20:08, 6 thg 6, 2012 bởi Hai Yen   [ đã cập nhật 07:27, 16 thg 9, 2014 ]


Hỏi: Tromg file MDB của em có nhiều table để lưu dữ liệu của các năm khác nhau. EM chỉ muốn lưu 3 năm gần nhất thôi. Ví dụ: năm nay là 2009, em chỉ cần lưu dữ liệu của 2007, 2008, 2009; năm tới 2010: chỉ lưu 2008, 2009, 2010.
Em muốn tự khi lưu dữ liệu ngày đầu tiên của năm mới, thì table từ 3 năm về trước sẽ tự động bị xoá đi. Cụ thể: ngày 01/01/2010, em lưu dữ liệu thì table lưu dữ liệu của 2007 bị xoá đi.
Đồng thời, em muốn xoá table với điều kiện nó tồn tại: Cụ thể: câu lệnh để thực hiện:
Nếu tableA có trong MDB thì xoá tableA
Các bác cho em xin đoạn code nhé

Đáp:  
Mình gửi bạn 1 đoạn code xóa table:

Code:
Sub DelTable(T As String)
DoCmd.DeleteObject acTable, T

End Sub
Bây giờ bạn có thể tạo 1 table với thông tin: tblTableInfo(tableName,TableDate)
Ở đây bạn khai báo table nào thuộc năm nào. 
sau đó có thể gọi 1 sub xóa table cũ hơn 3 năm:

Code:
sub DelTable3yearOld()
Dim Db As Database, Rs As Recordset, sql1 as string
SQL1="select TableName from tblTableInfo where (year(date())-year(TableDate))>=3
Set Db = CurrentDb()
Set Rs = Db.OpenRecordset(SQL)
Do Until rs.EOF
  Deltable rs(0)
  rs.MoveNext
Loop

Rs.Close
set DB = Nothing
End Sub

Nhớ lưu trước khi thử nghiệm nhé
Comments