Godspear > 12-01-17, 08:53 AM
ongke0711 > 12-01-17, 10:40 AM
Godspear > 12-01-17, 12:01 PM
(12-01-17, 10:40 AM)ongke0711 Đã viết: Để viết code VBA bạn nên biết sử dụng một số công cụ trong màn hình code.
- Compile Database: Vào menu Debug - Compile Database. Công cụ này giúp bạn tìm lỗi trong code bạn viết. Nó sẽ highlight màu vàng nhưng đoạn code bị sai và hiện message thông báo lỗi đó.
- Dùng “Option Explicit” để bắt buộc khai báo tường minh các biến. Nó sẽ báo lỗi cho bạn biết nếu bạn dùng 1 biến nào đó mà chưa khai báo. Thêm dòng này dưới dòng “Option Compare Database” (nằm đầu dòng của màn hình code VBA).
Trong code của bạn khi Compile code nó sẽ báo "User-defined type not defined" ở Sub Security(...)
-------------------------------------
Sub Secutiry(UserLevel As Integer, DepartID As Interger) ==> Sai chính tả ==> máy không hiểu toàn bộ cái Sub procedure này
Select Case UserLevel
Case 1 'Admin had full control, no restriction
Case 2, 3 ' Dermatology, Gastroenterology - view and edit on their own study
Case 4 'Guest - View Only
'Me.AllowEdits = True
MsgBox " You Logged in as Security Level = User " & DepartmentID = " & DepartID" ==> thiếu dấu nháy kép
'MsgBox (DepartID)
Forms![Main Menu]!cmdUser.Enabled = False
End Select
End Sub
-------------------------------------
- Code của bạn dư 1 cái "End If".
ongke0711 > 12-01-17, 12:48 PM
Godspear > 13-01-17, 09:10 AM
(12-01-17, 12:48 PM)ongke0711 Đã viết: Về phân quyền nó cũng không phải đơn giản đâu.
Bạn xem link: http://thuthuataccess.com/forum/thread-8799.html
maidinhdan > 15-01-17, 01:00 AM
(13-01-17, 09:10 AM)Godspear Đã viết:(12-01-17, 12:48 PM)ongke0711 Đã viết: Về phân quyền nó cũng không phải đơn giản đâu.
Bạn xem link: http://thuthuataccess.com/forum/thread-8799.html
mình thử làm theo video trên youtube áp dung cho subform - tbl_subform
https://www.youtube.com/watch?v=xcAlJ9C8JIk
mã code
Dim User As String
Dim MyDept As Integer
Dim Task As String
User = Forms![Main Menu]!txtLogin.Value
MyDept = DLookup("Department", "tbl_user", "LoginID = '" & User & "'")
Task = "Select * from tbl_ListofClinicalTrials where ([Business_Unit] = " & MyDept & ")"
Me.RecordSource = Task
End Sub
mà khi xài thử nó báo lỗi là : compile error method or data member not found going inside,
và nó bôi vang ở dòng này Me.RecordSource = Task
thế này là bị sao hả bạn ơi
Godspear > 16-01-17, 06:39 AM
(15-01-17, 01:00 AM)maidinhdan Đã viết:(13-01-17, 09:10 AM)Godspear Đã viết:(12-01-17, 12:48 PM)ongke0711 Đã viết: Về phân quyền nó cũng không phải đơn giản đâu.
Bạn xem link: http://thuthuataccess.com/forum/thread-8799.html
mình thử làm theo video trên youtube áp dung cho subform - tbl_subform
https://www.youtube.com/watch?v=xcAlJ9C8JIk
mã code
Dim User As String
Dim MyDept As Integer
Dim Task As String
User = Forms![Main Menu]!txtLogin.Value
MyDept = DLookup("Department", "tbl_user", "LoginID = '" & User & "'")
Task = "Select * from tbl_ListofClinicalTrials where ([Business_Unit] = " & MyDept & ")"
Me.RecordSource = Task
End Sub
mà khi xài thử nó báo lỗi là : compile error method or data member not found going inside,
và nó bôi vang ở dòng này Me.RecordSource = Task
thế này là bị sao hả bạn ơi
Lỗi phương thức, vui lòng post file để biết chi tiết.
ongke0711 > 16-01-17, 10:09 AM
Godspear > 16-01-17, 10:46 AM
(16-01-17, 10:09 AM)ongke0711 Đã viết: Nhắc bạn lần nữa là phải nhất quán trong thiết kế các trường trong Table và trong code VBA.
Câu lệnh này của bạn sau khi Dlookup trả về: Tên Department
MyDept = DLookup("Department", "tbl_user", "LoginID = '" & User & "'") ==> "Demartology"
Trong khi đó câu lệnh kế tiếp, điều kiện WHERE thì tìm trường [Business_Unit] mà trường này có nội dung là các số thứ tự 1 ,2, ,3 chứ có phải là "Demartology", "Endocrinology" v.v.. đâu mà so sánh = cho được???
Task = "Select * from tbl_ListofClinicalTrials where ([Business_Unit] = " & MyDept & ")" <=> "1 = Demartology" ???
Đâu phải bạn đổi kiểu dữ liệu của trường [Business_Unit] từ dạng NUMBER sang dạng TEXT là nó tương đồng đâu mà phải do nội dung của nó nữa.
ongke0711 > 16-01-17, 11:10 AM