Đánh giá chủ đề:
  • 5 Votes - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Ẩn/ Hiện các đối tượng trong Access
#1
Show / Hide Object ( tables, querys, forms, reports )
Question : Làm thế nào để có thể ẩn nhiều bảng cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report



Bạn làm copy thủ tục sau:

Mã:
Sub hideTable(H As Boolean)
On Error Resume Next
Dim DB As Database
Dim N As Byte
Dim i As Byte
Set DB = DBEngine.Workspaces(0).Databases(0)
N = DB.TableDefs.Count
For i = 1 To N - 1
Application.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H
Next

End Sub
Tương tự với query, form, report, bạn thay các dòng :
Mã:
N = DB.TableDefs.Count
bằng:
Mã:
N = DB.QueryDefs.Count
N= Forms.Count
N = Reports.Count

Và thay dòng
Mã:
Application.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H

bằng
Mã:
Application.SetHiddenAttribute acQuery, DB.QueryDefs(i).Name, H
Application.SetHiddenAttribute acForm, Forms(i).Name, H
Application.SetHiddenAttribute acReport, Reports(i).Name, H
trong thủ tục


Giờ bạn muốn có thể tạo 2 nút nhấn và gọi:
Mã:
Hidetable True
Để ẩn

Mã:
HideTable false
để hiện trở lại
DemoDowload
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#2
Tôi áp dụng phương pháp này để Set Hide Table ở một DB khác không được. Noname chỉ giúp với.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Có có báo lỗi hay gì không bạn?
Có phải những table đó là link table?
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Mã:
Sub hideTable(H As Boolean)
On Error Resume Next
Dim DB As Database
Dim N As Byte
Dim i As Byte
Set DB = opendatabase(application.currentProject.Path & "\data.mdb")
N = DB.TableDefs.Count
For i = 1 To N - 1
[color=#FF0000]DB.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H[/color]
Next

End Sub
Báo lỗi tại phần đỏ.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#5
(31-08-10, 11:09 PM)haquocquan Đã viết:
Mã:
Sub hideTable(H As Boolean)
On Error Resume Next
Dim DB As Database
Dim N As Byte
Dim i As Byte
Set DB = opendatabase(application.currentProject.Path & "\data.mdb")
N = DB.TableDefs.Count
For i = 1 To N - 1
[color=#FF0000]DB.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H[/color]
Next

End Sub
Báo lỗi tại phần đỏ.
kỳ vậy! Vì mình đã có câu lệnh On Error Resume Next, nếu gặp lỗi nó bỏ qua hết mới phải,
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
Không rõ lắm. Khi thay đổi thành:
Mã:
Sub hideTable(H As Boolean)
On Error Resume Next
Dim DB As Database
Dim N As Byte
Dim i As Byte
Set DB = opendatabase(application.currentProject.Path & "\data.mdb")
N = DB.TableDefs.Count
For i = 1 To N - 1
Application.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H
Next

End Sub
Thì các bảng trong currentdb hide hết (link table cũng hide)
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
(26-08-10, 11:03 AM)Noname Đã viết: Show / Hide Object ( tables, querys, forms, reports )
Question : Làm thế nào để có thể ẩn nhiều bảng cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report

Bạn làm copy thủ tục sau:

Mã:
Sub hideTable(H As Boolean)
On Error Resume Next
Dim DB As Database
Dim N As Byte
Dim i As Byte
Set DB = DBEngine.Workspaces(0).Databases(0)
N = DB.TableDefs.Count
For i = 1 To N - 1
Application.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H
Next

End Sub
Tương tự với query, form, report, bạn thay các dòng :
Mã:
N = DB.TableDefs.Count
bằng:
Mã:
N = DB.QueryDefs.Count
N= Forms.Count
N = Reports.Count

Và thay dòng
Mã:
Application.SetHiddenAttribute acTable, DB.TableDefs(i).Name, H

bằng
Mã:
Application.SetHiddenAttribute acQuery, DB.QueryDefs(i).Name, H
Application.SetHiddenAttribute acForm, Forms(i).Name, H
Application.SetHiddenAttribute acReport, Reports(i).Name, H
trong thủ tục


Giờ bạn muốn có thể tạo 2 nút nhấn và gọi:
Mã:
Hidetable True
Để ẩn

Mã:
HideTable false
để hiện trở lại

Chạy thử nhiều lần hàm trên của Noname, thấy rằng: chỉ ẩn được các đối tượng trong currentdb.
Muốn ẩn các đối tượng trong một file MDB khác. Chúng ta sử dụng:

Mã:
Public Sub HideTable()
Dim dbdata As Database
Dim i As Byte
Set dbdata = OpenDatabase(Getthumuc() & "\datasys\data.mdb")
For i = 0 To dbdata.TableDefs.Count - 1
  dbdata.TableDefs(i).Properties("Attributes").Value = dbHiddenObject
Next
End Sub

Để hiện trở lại:thay dòng trên bằng
Mã:
dbdata.TableDefs(i).Properties("Attributes").Value = 0

Đối với query: thay vào cho phù hợp

N= Forms.Count
N = Reports.Count

Lưu ý: các forms, reports chỉ mở thì mới count được.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#8
Trong trường hợp muốn ẩn tất cả các forms, reports cả mở và không mở (vì forms.count, reports.count chỉ đếm được các forms, reports đang mở) thì dùng lệnh sau (chỉ áp dụng cho file MDB hiện tại, MDB khác chưa tìm ra cách):

Mã:
Sub HideForms()
On Error Resume Next
Dim i As Long
For i = 0 To CurrentProject.AllForms.Count - 1
    Application.SetHiddenAttribute acForm, CurrentProject.AllForms.Item(i).Name, True
Next
End Sub
Còn Reports, áp dụng tương tự.
Có ai có đoạn code ẩn, hiện các forms và reports trong file MDB khác, post cho mọi người cùng tham khảo nhé
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , vietcnttit


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
Question [Help] Link tất các table trong một file.mdb bằng VBA MinhnHang 9 224 9 Giờ trước
Bài mới nhất: maidinhdan
  [Thủ Thuật] Tìm số thứ tự bị thiếu trong dãy toanle 8 204 07-12-16, 02:25 PM
Bài mới nhất: toanle
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,694 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  [Hỏi] Kết nối nhiều lần hay kết nối 1 lần trong ADO ưu điểm hơn Minh Tiên 1 124 10-11-16, 10:41 AM
Bài mới nhất: maidinhdan
  Summary bằng VBA trong MS Access. MinhnHang 6 320 08-11-16, 08:36 AM
Bài mới nhất: MinhnHang

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ