-
Tự động tạo CSDL Access bằng VBA
Noname > 23-08-10, 04:17 PM
Hôm trước tôi giới thiệu các bạn cách tạo 1 file MDB mớiđể xuất dữ liệu ra đó . Hôm nay xin giới thiệu các bạn cách tạo 1 file Access mới hoàn toàn, đồng thời thông qua VBA để tạo table cùng các field trực tiếp trên đó!
Ví dụ sau đây tạo một database có tên KeToan.MDB trong thư mục chứa database hiện hành, đồng thời tạo luôn một table có tên tbChungTu có cấu trúc:
Ngay_ChungTu (Date/Time), So_ChungTu (AutoNumber), Dien_Giai (Text, 30), Ho_Ten (Text, 25), So_Tien (Currency), Ghi_Chu (Memo)
Bạn hãy tạo một CSDL mới, thiết kế một form và vẽ nút lệnh có tên cmdCreateMDB, rồi gõ đoạn mã 1 vào thủ tục xử lý tình huống OnClick của nút lệnh đó. Xong, bạn mở form, thử bấm nút lệnh cmdCreateMDB để kiểm tra kết quả.
Mã:Private Sub cmdCreateMDB_Click()
Dim dbKeToan As Database' Khai báo đối tượng Database mới
Dim tdfChungTu As TableDef' Khai báo đối tượng Table mới
Dim sAppPath As String
sAppPath = Me.Application.CurrentProject.Path
Set wrkDefault = DBEngine.Workspaces(0)
If Not (Dir(sAppPath & "\KeToan.mdb") <>"") Then
Set dbKeToan = wrkDefault.CreateDatabase(sAppPath & "\KeToan.mdb", dbLangGeneral)
Else
Set dbKeToan = OpenDatabase(sAppPath & "\KeToan.mdb")
End If
' Tạo đối tượng TableDef mới
Set tdfChungTu = dbKeToan.CreateTableDef("tbChungTu")
' Thêm các field
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ngay_ChungTu", dbDate)
tdfChungTu.Fields.Append tdfChungTu.CreateField("So_ChungTu", dbLong)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Dien_Giai", dbText, 30)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ho_Ten", dbText, 25)
tdfChungTu.Fields.Append tdfChungTu.CreateField("So_Tien", dbCurrency)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ghi_Chu", dbMemo)
' Các thuộc tính bổ sung
tdfChungTu.Fields!So_ChungTu.Attributes = dbAutoIncrField
' Thêm table mới vào database
dbKeToan.TableDefs.Append tdfChungTu
' Đóng database
dbKeToan.Close
End Sub -
RE: Tự động tạo CSDL Access bằng VBA
connguoi123 > 20-05-14, 06:15 PM
(23-08-10, 04:17 PM)Noname Đã viết: Hôm trước tôi giới thiệu các bạn cách tạo 1 file MDB mớiđể xuất dữ liệu ra đó . Hôm nay xin giới thiệu các bạn cách tạo 1 file Access mới hoàn toàn, đồng thời thông qua VBA để tạo table cùng các field trực tiếp trên đó!
Ví dụ sau đây tạo một database có tên KeToan.MDB trong thư mục chứa database hiện hành, đồng thời tạo luôn một table có tên tbChungTu có cấu trúc:
Ngay_ChungTu (Date/Time), So_ChungTu (AutoNumber), Dien_Giai (Text, 30), Ho_Ten (Text, 25), So_Tien (Currency), Ghi_Chu (Memo)
Bạn hãy tạo một CSDL mới, thiết kế một form và vẽ nút lệnh có tên cmdCreateMDB, rồi gõ đoạn mã 1 vào thủ tục xử lý tình huống OnClick của nút lệnh đó. Xong, bạn mở form, thử bấm nút lệnh cmdCreateMDB để kiểm tra kết quả.
Mã:Private Sub cmdCreateMDB_Click()
Dim dbKeToan As Database' Khai báo đối tượng Database mới
Dim tdfChungTu As TableDef' Khai báo đối tượng Table mới
Dim sAppPath As String
sAppPath = Me.Application.CurrentProject.Path
Set wrkDefault = DBEngine.Workspaces(0)
If Not (Dir(sAppPath & "\KeToan.mdb") <>"") Then
Set dbKeToan = wrkDefault.CreateDatabase(sAppPath & "\KeToan.mdb", dbLangGeneral)
Else
Set dbKeToan = OpenDatabase(sAppPath & "\KeToan.mdb")
End If
' Tạo đối tượng TableDef mới
Set tdfChungTu = dbKeToan.CreateTableDef("tbChungTu")
' Thêm các field
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ngay_ChungTu", dbDate)
tdfChungTu.Fields.Append tdfChungTu.CreateField("So_ChungTu", dbLong)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Dien_Giai", dbText, 30)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ho_Ten", dbText, 25)
tdfChungTu.Fields.Append tdfChungTu.CreateField("So_Tien", dbCurrency)
tdfChungTu.Fields.Append tdfChungTu.CreateField("Ghi_Chu", dbMemo)
' Các thuộc tính bổ sung
tdfChungTu.Fields!So_ChungTu.Attributes = dbAutoIncrField
' Thêm table mới vào database
dbKeToan.TableDefs.Append tdfChungTu
' Đóng database
dbKeToan.Close
End Sub
Trong trường hợp file Database có đặt Password thì sao ? các bác giúp code cho em với.
Tks -
RE: Tự động tạo CSDL Access bằng VBA
Noname > 21-05-14, 10:46 AM
Bạn nghiên cứu thêm topic này để xử lý với file Access có đặt password:
http://thuthuataccess.com/forum/thread-199.html -
RE: Tự động tạo CSDL Access bằng VBA
hugox03 > 22-05-14, 12:26 AM
Noname cho mình hỏi chút ! mình muốn file mới tạo (tbChungTu) có tất cả dữ liệu theo ngày / tháng / năm thì phải làm sao ?
Cụ thể là :
File chính gồm có table tbChungTuGoc
Hành động :
tạo file mới có tên tùy ý ( dữ liệu từ tbChungTuGoc theo ngày tháng chỉ định )
bạn giúp mình phần này với !