• Tự động tạo CSDL Access bằng VBA
  • 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 !