-
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 :
Tương Tự cho QueryDefs, Forms, ReportsMã: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 -
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.
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
Đá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 :
Tương Tự cho QueryDefs, Forms, ReportsMã: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
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 acForm, strFormName
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:
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 ạ(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 acForm, strFormName
objAcc.Application.Quit
Set objAcc = Nothing
End Sub
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:
Bác cho em hỏi nếu file "test" có khóa code vba thì thêm dòng pass vba ở đâu ạ(12-02-20, 09:57 PM)ongke0711 Đã 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 ạ(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 acForm, strFormName
objAcc.Application.Quit
Set objAcc = Nothing
End Sub
em xin cảm ơn
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:
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 ạ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 acForm, strFormName
objAcc.Application.Quit
Set objAcc = Nothing
End Sub
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:
Bác cho em hỏi nếu file "test" có khóa code vba thì thêm dòng pass vba ở đâu ạ(16-02-20, 01:05 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 ạ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 acForm, strFormName
objAcc.Application.Quit
Set objAcc = Nothing
End Sub
em xin cảm ơn
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
-...