ongke0711 > 27-08-18, 09:09 PM
mrsiro > 28-08-18, 11:34 AM
ongke0711 > 28-08-18, 11:49 AM
mrsiro > 28-08-18, 06:14 PM
ongke0711 > 28-08-18, 09:02 PM
tieu_ngao > 08-09-18, 08:14 AM
(26-08-18, 12:23 PM)ongke0711 Đã viết: Một góp ý khác về logic xử lý của bạn. Tôi thì hay dùng cách này:
Khi mở form Login sẽ kiểm tra bản quyền, nếu hợp lệ thì tiếp tục Load form Login, nếu không thì đóng nó lại mở Form "Đăng ký bản quyền". Đơn giản vậy thôi
Private Sub Form_Open(Cancel As Integer)
If CoBanQuyen = False Then
DoCmd.OpenForm "Form2", , , , , acDialog
DoCmd.Close acForm, Me.Name
Else
'Tiep tục load form
End If
End Sub
(26-08-18, 01:31 PM)ongke0711 Đã viết:(26-08-18, 12:53 PM)mrsiro Đã viết: ...
vì 1 số lí do dài dòng nên mình chỉ có thể dùng visible chứ ko dùng close được đó bạn.
Nếu Access không hỗ trợ vụ ẩn modal form đang load thì bạn nghĩ giải pháp khác.
Không có giải pháp nào ngoài việc phải Invisible sao?
- Bạn có thể truyền các tham số trong form Login vô biến toàn cục.
- Bạn có thể truyền tham số qua OpenArgs
Như vậy thì khi Form đóng rồi bạn vẫn có thể tham chiếu đến các thông tin cần thiết.
Bạn chia sẽ giải thuật gì của bạn mà buộc phải Invisible cái form Login? Mọi người sẽ góp ý logic xử lý khác hợp lý hơn nếu có.
(26-08-18, 03:37 PM)ongke0711 Đã viết: Hehe..thì ra cái vấn đề nằm ở cái nút Close. Đóng Form là thoát ứng dụng. Có nhiều cách để xử lý v/đ này của bạn. Tôi đưa ra 3 cách:
* C1:
Bạn đổi kiểu thiết kế khác đi. Không dùng nút Close của form mà tự thiết kế gần giống vậy, vẫn đảm bảo đẹp mà. Khi thiết kế Form - Border Style: None.
* C2: Nút Close có thể Quit hay Close tuỳ trường hợp
- Dùng thiết kế hiện tại của bạn.
- Sửa code của nút Close trên form. Tạo thêm 1 biến tính hiệu (Flag) để khi sự kiện Form_Close (hoặc Unload) kích hoạt sẽ kiểm tra biến tín hiệu này -> sau đó thực hiện Quit hay Close tuỳ theo nó.
- Khai báo trên Form 1 (frmLogin)
Mã PHP:Option Compare Database
Option Explicit
Dim blnQuit As Boolean
Mã PHP:Private Sub Form_Close()
If blnQuit = True Then
DoCmd.Quit
End If
End Sub
Mã PHP:Private Sub Form_Open(Cancel As Integer)
Dim CoBanQuyen As Boolean
CoBanQuyen = False 'Thay đổi tham số test này tuỳ theo code check bản quyền'
If CoBanQuyen = False Then
DoCmd.OpenForm "Form2", , , , , acDialog
blnQuit = False
DoCmd.Close acForm, "Form1"
Else
blnQuit = True
End If
* C3:
Một giải pháp khác là vẫn giữ thiết kế như bạn đang làm thêm cái nút lệnh (cmdHidden) khi bấm là ẩn Form 1 và hiện Form 2 như bạn đã test thành công, cho nút đó ẩn đi.
Khi form Login mở, khi không có bản quyền thì sẽ gọi cái nút lệnh đó (nó gần giống như Sendkey vậy)
Private Sub Form_Open(Cancel As Integer)
If CoBanQuyen = False Then
Call cmdHidden_Click
Else
'Tiep tục load form
End If
End Sub
- Chú ý code của nút ẩn form phải là Public Sub
Public Sub cmdHidden_Click()
DoCmd.OpenForm "Form2", , , , , acDialog
Me.Visible = False
End Sub
(27-08-18, 06:10 PM)mrsiro Đã viết: bạn hiểu sai ý mình rồi
Mã:đây là sự kiện onlick của nút đăng nhập
If nz(me.txtpass,0) = 0 then
msgbox "nhập pass"
me.txtpass.setforcus
end if
Mã:đây là tại sự kiện keydown của txtpass
if keycode = 13 then
dangnhap_click
end if