• Xóa Đối tượng Access từ 1 File Access Khác
  • Xóa Đối tượng Access từ 1 File Access Khác

    Noname > 26-08-10, 11:14 AM

    Hỏi: Làm thế nào để xóa các Object (table, query, form, report) của DBLUU từ một nút lệnh trên form của DBSYS.


    Đáp:

    Hôm trước tôi có giớ thiệu các bạn thủ thuật tạo 1 File Access rồi xuất dữ liệu ra đó hoặc tạo mới dữ liệu trong đó.
    Đôi khi, việc tạo mới hay export chỉ nhầm làm 1 temp để xử lý, vì vậy ta cần xóa đi cho bớt rác. Mình xin giới thiệu code xóa Table :

    Mã:
    Private Sub DelTableFrom(DataPath As String, tblName As String)
    Dim db As Database
    Set db = OpenDatabase(DataPath)
    db.TableDefs.Delete  tblName
    ' Ðóng database
    db.Close
    Set db = Nothing
    End Sub
    Tương Tự cho QueryDefs, Forms, Reports
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    yamakashi2003 > 12-02-20, 02:10 PM

    (26-08-10, 11:14 AM)Noname Đã viết: Hỏi: Làm thế nào để xóa các Object (table, query, form, report) của DBLUU từ một nút lệnh trên form của DBSYS.


    Đáp:

    Hôm trước tôi có giớ thiệu các bạn thủ thuật tạo 1 File Access rồi xuất dữ liệu ra đó hoặc tạo mới dữ liệu trong đó.
    Đôi khi, việc tạo mới hay export chỉ nhầm làm 1 temp để xử lý, vì vậy ta cần xóa đi cho bớt rác. Mình xin giới thiệu code xóa Table :

    Mã:
    Private Sub DelTableFrom(DataPath As String, tblName As String)
    Dim db As Database
    Set db = OpenDatabase(DataPath)
    db.TableDefs.Delete  tblName
    ' Ðóng database
    db.Close
    Set db = Nothing
    End Sub
    Tương Tự cho QueryDefs, Forms, Reports
    bác ơi cho em hỏi là code xóa form và report thì viết như thế nào ạ, em dùng office 2016
    em viết ntn k biết sai ở đâu, nó báo lỗi dòng forms và report, em có tìm trong các thuộc tính sổ ra sau khi db. nhưng không thấy cái nào có liên quan ạ, nhờ bác chỉ giúp:
    Private Sub Command230_Click()
    Dim db As Database
    Set db = OpenDatabase("C:\Users\marketing.HANOI\Desktop\TOOL\100.accdb")
    db.Forms.Delete ("f_DANGNHAP")
    db.Reports.Delete ("R_BCTH")
    db.Close
    Set db = Nothing
    End Sub
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    Xuân Thanh > 12-02-20, 03:15 PM

    Bạn đã khai báo đúng đối tượng của hàm chưa?
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    ongke0711 > 12-02-20, 09:57 PM

    (12-02-20, 02:10 PM)yamakashi2003 Đã viết: bác ơi cho em hỏi là code xóa form và report thì viết như thế nào ạ, em dùng office 2016
    em viết ntn k biết sai ở đâu, nó báo lỗi dòng forms và report, em có tìm trong các thuộc tính sổ ra sau khi db. nhưng không thấy cái nào có liên quan ạ, nhờ bác chỉ giúp:
    Private Sub Command230_Click()
    Dim db As Database
    Set db = OpenDatabase("C:\Users\marketing.HANOI\Desktop\TOOL\100.accdb")
    db.Forms.Delete ("f_DANGNHAP")
    db.Reports.Delete ("R_BCTH")
    ...


    End Sub

    Code trên chỉ để xoá Table và Query thôi nhé bạn.
    Muốn xoá các đối tượng khác thì dùng "DeleteObject".
    Ví dụ:

    Mã PHP:
    Private Sub XoaDoiTuong_Click()

        Dim strDBFullPath As String
        Dim strFormName 
    As String
        strDBFullPath 
    "C:\Temp\test.mdb"
        strFormName "Form1"

        Dim objAcc As Access.Application
        Set objAcc 
    CreateObject("Access.Application")
        objAcc.OpenCurrentDatabase strDBFullPath, , ""
        objAcc.DoCmd.DeleteObject acFormstrFormName
        
        objAcc
    .Application.Quit
        Set objAcc 
    Nothing

    End Sub 
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    yamakashi2003 > 13-02-20, 12:51 AM

    (12-02-20, 09:57 PM)ongke0711 Đã viết:
    (12-02-20, 02:10 PM)yamakashi2003 Đã viết: bác ơi cho em hỏi là code xóa form và report thì viết như thế nào ạ, em dùng office 2016
    em viết ntn k biết sai ở đâu, nó báo lỗi dòng forms và report, em có tìm trong các thuộc tính sổ ra sau khi db. nhưng không thấy cái nào có liên quan ạ, nhờ bác chỉ giúp:
    Private Sub Command230_Click()
    Dim db As Database
    Set db = OpenDatabase("C:\Users\marketing.HANOI\Desktop\TOOL\100.accdb")
    db.Forms.Delete ("f_DANGNHAP")
    db.Reports.Delete ("R_BCTH")
    ...


    End Sub

    Code trên chỉ để xoá Table và Query thôi nhé bạn.
    Muốn xoá các đối tượng khác thì dùng "DeleteObject".
    Ví dụ:

    Mã PHP:
    Private Sub XoaDoiTuong_Click()

        Dim strDBFullPath As String
        Dim strFormName 
    As String
        strDBFullPath 
    "C:\Temp\test.mdb"
        strFormName "Form1"

        Dim objAcc As Access.Application
        Set objAcc 
    CreateObject("Access.Application")
        objAcc.OpenCurrentDatabase strDBFullPath, , ""
        objAcc.DoCmd.DeleteObject acFormstrFormName
        
        objAcc
    .Application.Quit
        Set objAcc 
    Nothing

    End Sub 
    Bác ơi đây là mình xóa form ờ file khác, vậy giả sử e muốn xóa 1 form khác ở file access mình đang mở thì sửa code như thế nào ạ
    em xin cảm ơn
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    ongke0711 > 13-02-20, 01:03 AM

    (13-02-20, 12:51 AM)yamakashi2003 Đã viết: Bác ơi đây là mình xóa form ờ file khác, vậy giả sử e muốn xóa 1 form khác ở file access mình đang mở thì sửa code như thế nào ạ

    Muốn xoá Form ở ngay trên Database đang thao tác thì dùng mỗi câu lệnh Docmd.DeleteObject là được rồi.

    Docmd.DeleteObject acForm, "Form1"
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    yamakashi2003 > 16-02-20, 01:05 AM

    (13-02-20, 12:51 AM)yamakashi2003 Đã viết:
    (12-02-20, 09:57 PM)ongke0711 Đã viết:
    (12-02-20, 02:10 PM)yamakashi2003 Đã viết: bác ơi cho em hỏi là code xóa form và report thì viết như thế nào ạ, em dùng office 2016
    em viết ntn k biết sai ở đâu, nó báo lỗi dòng forms và report, em có tìm trong các thuộc tính sổ ra sau khi db. nhưng không thấy cái nào có liên quan ạ, nhờ bác chỉ giúp:
    Private Sub Command230_Click()
    Dim db As Database
    Set db = OpenDatabase("C:\Users\marketing.HANOI\Desktop\TOOL\100.accdb")
    db.Forms.Delete ("f_DANGNHAP")
    db.Reports.Delete ("R_BCTH")
    ...


    End Sub

    Code trên chỉ để xoá Table và Query thôi nhé bạn.
    Muốn xoá các đối tượng khác thì dùng "DeleteObject".
    Ví dụ:

    Mã PHP:
    Private Sub XoaDoiTuong_Click()

        Dim strDBFullPath As String
        Dim strFormName 
    As String
        strDBFullPath 
    "C:\Temp\test.mdb"
        strFormName "Form1"

        Dim objAcc As Access.Application
        Set objAcc 
    CreateObject("Access.Application")
        objAcc.OpenCurrentDatabase strDBFullPath, , ""
        objAcc.DoCmd.DeleteObject acFormstrFormName
        
        objAcc
    .Application.Quit
        Set objAcc 
    Nothing

    End Sub 
    Bác ơi đây là mình xóa form ờ file khác, vậy giả sử e muốn xóa 1 form khác ở file access mình đang mở thì sửa code như thế nào ạ
    em xin cảm ơn
    Bác cho em hỏi nếu file "test" có  khóa code vba thì thêm dòng pass vba ở đâu ạ
    Và câu lệnh:
    Docmd.DeleteObject acForm, "Form1"
    thì thêm dòng pass vba ở đâu ạ
    e xin cảm ơn bác
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    ongke0711 > 16-02-20, 12:00 PM

    (16-02-20, 01:05 AM)yamakashi2003 Đã viết:
    Mã PHP:
    Private Sub XoaDoiTuong_Click()

        Dim strDBFullPath As String
        Dim strFormName 
    As String
        strDBFullPath 
    "C:\Temp\test.mdb"
        strFormName "Form1"

        Dim objAcc As Access.Application
        Set objAcc 
    CreateObject("Access.Application")
        objAcc.OpenCurrentDatabase strDBFullPath, , ""
        objAcc.DoCmd.DeleteObject acFormstrFormName
        
        objAcc
    .Application.Quit
        Set objAcc 
    Nothing

    End Sub 
    Bác ơi đây là mình xóa form ờ file khác, vậy giả sử e muốn xóa 1 form khác ở file access mình đang mở thì sửa code như thế nào ạ
    em xin cảm ơn
    [/quote]
    Bác cho em hỏi nếu file "test" có  khóa code vba thì thêm dòng pass vba ở đâu ạ
    Và câu lệnh:
    Docmd.DeleteObject acForm, "Form1"
    thì thêm dòng pass vba ở đâu ạ
    e xin cảm ơn bác
    [/quote]


    Ở đoạn code của tôi ở trên có đoạn:
        objAcc.OpenCurrentDatabase strDBFullPath, , "123456"
    - Cái dấu nháy kép ở cuối chính là cho tham số Password. Tôi để trống "" tức là không có Pass. Nếu có pass thì gõ pass vào giữa 2 dấu nháy kép đó.
    - Nếu bạn đã dùng tới code VBA thì bạn phải chú ý đọc các gợi ý của cửa sổ code VBA (Intellisense) khi bạn đưa dấu nháy con chuột lên dòng code, nó sẽ hiện gợi ý sau từng dấu phẩy trong dòng code là những tham số gì.
    - Riêng dòng lệnh: Docmd.DeleteObject acForm, "Form1"  --> code đó là chạy ngay trong database hiện hành, rồi thì cần gì pass để mở database?? Bạn phải mở, đăng nhập được vào database rồi mới viết dòng code đó vô chứ.
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    yamakashi2003 > 16-02-20, 01:41 PM

    (16-02-20, 12:00 PM)ongke0711 Đã viết:
    (16-02-20, 01:05 AM)yamakashi2003 Đã viết:
    Mã PHP:
    Private Sub XoaDoiTuong_Click()

        Dim strDBFullPath As String
        Dim strFormName 
    As String
        strDBFullPath 
    "C:\Temp\test.mdb"
        strFormName "Form1"

        Dim objAcc As Access.Application
        Set objAcc 
    CreateObject("Access.Application")
        objAcc.OpenCurrentDatabase strDBFullPath, , ""
        objAcc.DoCmd.DeleteObject acFormstrFormName
        
        objAcc
    .Application.Quit
        Set objAcc 
    Nothing

    End Sub 
    Bác ơi đây là mình xóa form ờ file khác, vậy giả sử e muốn xóa 1 form khác ở file access mình đang mở thì sửa code như thế nào ạ
    em xin cảm ơn
    Bác cho em hỏi nếu file "test" có  khóa code vba thì thêm dòng pass vba ở đâu ạ
    Và câu lệnh:
    Docmd.DeleteObject acForm, "Form1"
    thì thêm dòng pass vba ở đâu ạ
    e xin cảm ơn bác
    [/quote]


    Ở đoạn code của tôi ở trên có đoạn:
        objAcc.OpenCurrentDatabase strDBFullPath, , "123456"
    - Cái dấu nháy kép ở cuối chính là cho tham số Password. Tôi để trống "" tức là không có Pass. Nếu có pass thì gõ pass vào giữa 2 dấu nháy kép đó.
    - Nếu bạn đã dùng tới code VBA thì bạn phải chú ý đọc các gợi ý của cửa sổ code VBA (Intellisense) khi bạn đưa dấu nháy con chuột lên dòng code, nó sẽ hiện gợi ý sau từng dấu phẩy trong dòng code là những tham số gì.
    - Riêng dòng lệnh: Docmd.DeleteObject acForm, "Form1"  --> code đó là chạy ngay trong database hiện hành, rồi thì cần gì pass để mở database?? Bạn phải mở, đăng nhập được vào database rồi mới viết dòng code đó vô chứ.
    [/quote]
    Bác ơi thì lúc em viêt code xong rồi tắt file đi mở lại thì lệnh  Docmd.DeleteObject acForm, "Form1"
    nó thông báo lỗi do vba bị khóa nên k thực thi lệnh mà bác
  • RE: Xóa Đối tượng Access từ 1 File Access Khác

    ongke0711 > 16-02-20, 01:58 PM

    (16-02-20, 01:41 PM)yamakashi2003 Đã viết: Bác ơi thì lúc em viêt code xong rồi tắt file đi mở lại thì lệnh  Docmd.DeleteObject acForm, "Form1"
    nó thông báo lỗi do vba bị khóa nên k thực thi lệnh mà bác

    VBA bị khoá lại là lỗi khác nữa.
    - Bạn phải chup hình báo lỗi lên và chỗ dòng nào bị lỗi thì may ra mới biết bệnh nó chứ.
    - Việc đóng file rồi mở lại không liên quan gì đến code. Chẳng lẻ ứng dụng đóng đi mở lại là bị lỗi, khi đó phải xem code sai như thế nào rồi đó.
    - Bạn dùng code này ở điều kiện nào? xoá đối tượng ở database khác hay thực hiện ngay trên database hiện tại, toàn bộ code nó ra sao
    -...