nguyenhoangbanhan > 10-06-15, 02:36 AM
tranthanhan1962 > 10-06-15, 07:31 AM
Option Compare Database
Option Explicit
Private OKLuu As Boolean
Private Sub Luu_Click()
OKLuu = True
Call DoCmd.RunCommand(acCmdSaveRecord)
OKLuu = False
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim TraLoi As String
If Not OKLuu Then
Cancel = True
TraLoi = "Sudung nut Luu de cap nhat thay doi." & _
vbNewLine & "hoặc Esc de phuc hoi."
Call MsgBox(Prompt:=TraLoi, Title:="Chu y")
End If
End Sub
nguyenhoangbanhan > 10-06-15, 11:08 AM
(10-06-15, 07:31 AM)tranthanhan1962 Đã viết: Nếu muốn Access không tự động lưu record và bạn sử dụng nút Luu để lưu record bạn sử dụng code sau đây:- cám ơn tranthanhan1962 nha
Mã PHP:Option Compare Database
Option Explicit
Private OKLuu As Boolean
Private Sub Luu_Click()
OKLuu = True
Call DoCmd.RunCommand(acCmdSaveRecord)
OKLuu = False
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim TraLoi As String
If Not OKLuu Then
Cancel = True
TraLoi = "Sudung nut Luu de cap nhat thay doi." & _
vbNewLine & "hoặc Esc de phuc hoi."
Call MsgBox(Prompt:=TraLoi, Title:="Chu y")
End If
End Sub
Góp ý: Nếu bạn viết ứng dụng cho riêng mình sử dụng. Bạn có thể dùng if hoặc select case để xử lý thay đổi caption của nút lệnh trong event Onclick để thiết đặt điều kiện cho code. Nhưng nếu bạn viết ứng dụng cho nhiều người dùng thì mỗi command button chỉ nên chịu trách nhiệm 1 nhiệm vụ. Button nào không được sử dụng thì cho nó Enabled=False. Như vậy code của bạn sẽ rõ ràng hơn. Người viết dễ kiểm tra mà người sử dụng cũng dễ thao tác.
ledangvan > 10-06-15, 04:33 PM
(10-06-15, 11:08 AM)nguyenhoangbanhan Đã viết:(10-06-15, 07:31 AM)tranthanhan1962 Đã viết: Nếu muốn Access không tự động lưu record và bạn sử dụng nút Luu để lưu record bạn sử dụng code sau đây:- cám ơn tranthanhan1962 nha
Mã PHP:Option Compare Database
Option Explicit
Private OKLuu As Boolean
Private Sub Luu_Click()
OKLuu = True
Call DoCmd.RunCommand(acCmdSaveRecord)
OKLuu = False
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim TraLoi As String
If Not OKLuu Then
Cancel = True
TraLoi = "Sudung nut Luu de cap nhat thay doi." & _
vbNewLine & "hoặc Esc de phuc hoi."
Call MsgBox(Prompt:=TraLoi, Title:="Chu y")
End If
End Sub
Góp ý: Nếu bạn viết ứng dụng cho riêng mình sử dụng. Bạn có thể dùng if hoặc select case để xử lý thay đổi caption của nút lệnh trong event Onclick để thiết đặt điều kiện cho code. Nhưng nếu bạn viết ứng dụng cho nhiều người dùng thì mỗi command button chỉ nên chịu trách nhiệm 1 nhiệm vụ. Button nào không được sử dụng thì cho nó Enabled=False. Như vậy code của bạn sẽ rõ ràng hơn. Người viết dễ kiểm tra mà người sử dụng cũng dễ thao tác.
Em viết code để làm đề tài thực tập, nếu mỗi button chịu 1 trách nhiệm như thế thì số lượng nút trên bài sẽ rất nhiều, vậy có tốt không, co làm người sự dung thấy rối không anh
nguyenhoangbanhan > 10-06-15, 05:07 PM
(10-06-15, 04:33 PM)ledangvan Đã viết:- Hi mấy bác ơi em chưa hiểu(10-06-15, 11:08 AM)nguyenhoangbanhan Đã viết:(10-06-15, 07:31 AM)tranthanhan1962 Đã viết: Nếu muốn Access không tự động lưu record và bạn sử dụng nút Luu để lưu record bạn sử dụng code sau đây:- cám ơn tranthanhan1962 nha
Mã PHP:Option Compare Database
Option Explicit
Private OKLuu As Boolean
Private Sub Luu_Click()
OKLuu = True
Call DoCmd.RunCommand(acCmdSaveRecord)
OKLuu = False
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim TraLoi As String
If Not OKLuu Then
Cancel = True
TraLoi = "Sudung nut Luu de cap nhat thay doi." & _
vbNewLine & "hoặc Esc de phuc hoi."
Call MsgBox(Prompt:=TraLoi, Title:="Chu y")
End If
End Sub
Góp ý: Nếu bạn viết ứng dụng cho riêng mình sử dụng. Bạn có thể dùng if hoặc select case để xử lý thay đổi caption của nút lệnh trong event Onclick để thiết đặt điều kiện cho code. Nhưng nếu bạn viết ứng dụng cho nhiều người dùng thì mỗi command button chỉ nên chịu trách nhiệm 1 nhiệm vụ. Button nào không được sử dụng thì cho nó Enabled=False. Như vậy code của bạn sẽ rõ ràng hơn. Người viết dễ kiểm tra mà người sử dụng cũng dễ thao tác.
Em viết code để làm đề tài thực tập, nếu mỗi button chịu 1 trách nhiệm như thế thì số lượng nút trên bài sẽ rất nhiều, vậy có tốt không, co làm người sự dung thấy rối không anh
Hiểu ý của bạn rồi, vẫn là cách của bác tranthanhan1962 bạn làm thêm : Khi mở cái này thì ẩn cái kia ... Khi thoát form A,B,C thì cho hiện các nút. Các vị trí nút vẫn có thể đè lên nhau (nằm cùng một chỗ)
tranthanhan1962 > 10-06-15, 07:07 PM
(10-06-15, 02:36 AM)nguyenhoangbanhan Đã viết: - các bác ơi chỉ em với:
- ban đầu em có 4 nút là thêm, cập nhật, xóa và thoát
- em muốn làm một nút thêm, khi nhấn vào nút thêm các text box rỗng cho thêm vào đồng thời nút thêm thành nút lưu khi nhập ở text box xong nhấn nút lưu thì lưu lại và trở về trạng thái ban đầu, còn các nút còn lai là nút cập nhật sẽ trở thành nút quay về cho ta quay về nếu không thêm nửa nút xóa thành nút hủy, hủy các thao tác vừa nhập trờ lại trang thái ban đầu, thế này viết code như thế nào, mong các bác chỉ với!!!!!!!!!!!!!!!!!
Private Sub them_Click()
On Error GoTo Err_them_Click
Select Case them.Caption
Case Is = "L" & ChrW(432) & "u"
DoCmd.RunCommand acCmdSaveRecord
them.Caption = "Thêm"
Case Is = "Thêm"
DoCmd.GoToRecord , , acNewRec
them.Caption = "L" & ChrW(432) & "u"
End Select
Exit_them_Click:
Exit Sub
Err_them_Click:
MsgBox Err.Description
Resume Exit_them_Click
End Sub
Private Sub capnhat_Click()
On Error GoTo Err_capnhat_Click
Select Case Capnhat.Caption
Case Is = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
MsgBox "Cap Nhat Thanh Cong", vbOKOnly, "Thông Báo"
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Capnhat.Caption = "Quay v" & ChrW(7873)
Case Is = "Quay v" & ChrW(7873)
DoCmd.GoToRecord , , acFirst
Capnhat.Caption = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
End Select
Exit_capnhat_Click:
Exit Sub
Err_capnhat_Click:
MsgBox Err.Description
Resume Exit_capnhat_Click
End Sub
Private Sub xoa_Click()
On Error GoTo Err_xoa_Click
Select Case xoa.Caption
Case Is = "Xóa"
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
xoa.Caption = "H" & ChrW(7911) & "y"
Case Is = "H" & ChrW(7911) & "y"
If Me.Dirty Then
Beep
DoCmd.RunCommand acCmdUndo
Form_Current
Else
Beep
MsgBox "Khongthe huy duoc cac thay doi", vbInformation, "Chu y"
End If
xoa.Caption = "Xóa"
End Select
Exit_xoa_Click:
Exit Sub
Err_xoa_Click:
MsgBox Err.Description
Resume Exit_xoa_Click
End Sub
nguyenhoangbanhan > 10-06-15, 07:28 PM
(10-06-15, 07:07 PM)tranthanhan1962 Đã viết:(10-06-15, 02:36 AM)nguyenhoangbanhan Đã viết: - các bác ơi chỉ em với:
- ban đầu em có 4 nút là thêm, cập nhật, xóa và thoát
- em muốn làm một nút thêm, khi nhấn vào nút thêm các text box rỗng cho thêm vào đồng thời nút thêm thành nút lưu khi nhập ở text box xong nhấn nút lưu thì lưu lại và trở về trạng thái ban đầu, còn các nút còn lai là nút cập nhật sẽ trở thành nút quay về cho ta quay về nếu không thêm nửa nút xóa thành nút hủy, hủy các thao tác vừa nhập trờ lại trang thái ban đầu, thế này viết code như thế nào, mong các bác chỉ với!!!!!!!!!!!!!!!!!
Có thể dùng phương pháp tham chiếu điều kiện caption của nút lệnh để xử lý theo ý của bạn.
1/ Xử lý command button them
Mã PHP:Private Sub them_Click()
On Error GoTo Err_them_Click
Select Case them.Caption
Case Is = "L" & ChrW(432) & "u"
DoCmd.RunCommand acCmdSaveRecord
them.Caption = "Thêm"
Case Is = "Thêm"
DoCmd.GoToRecord , , acNewRec
them.Caption = "L" & ChrW(432) & "u"
End Select
Exit_them_Click:
Exit Sub
Err_them_Click:
MsgBox Err.Description
Resume Exit_them_Click
End Sub
2/ Xử lý command button capnhat
Mã PHP:Private Sub capnhat_Click()
On Error GoTo Err_capnhat_Click
Select Case Capnhat.Caption
Case Is = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
MsgBox "Cap Nhat Thanh Cong", vbOKOnly, "Thông Báo"
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Capnhat.Caption = "Quay v" & ChrW(7873)
Case Is = "Quay v" & ChrW(7873)
DoCmd.GoToRecord , , acFirst
Capnhat.Caption = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
End Select
Exit_capnhat_Click:
Exit Sub
Err_capnhat_Click:
MsgBox Err.Description
Resume Exit_capnhat_Click
End Sub
3/Xử lý command button xoa
Mã PHP:Private Sub xoa_Click()
On Error GoTo Err_xoa_Click
Select Case xoa.Caption
Case Is = "Xóa"
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
xoa.Caption = "H" & ChrW(7911) & "y"
Case Is = "H" & ChrW(7911) & "y"
If Me.Dirty Then
Beep
DoCmd.RunCommand acCmdUndo
Form_Current
Else
Beep
MsgBox "Khongthe huy duoc cac thay doi", vbInformation, "Chu y"
End If
xoa.Caption = "Xóa"
End Select
Exit_xoa_Click:
Exit Sub
Err_xoa_Click:
MsgBox Err.Description
Resume Exit_xoa_Click
End Sub
Dù sao mình cũng không ủng hộ cách làm này. Vì để người xử dụng dễ dàng thao tác các nút lệnh phải được hiển thị ở những vị trí cụ thể, quen thuộc. Trong trường hợp không cho phép sử dụng chỉ nên làm mờ (Enable=False). Hạn chế tối đa việc Visible=False của nút lệnh (trừ những trường hợp bất khả kháng như chuỗi lệnh xử lý của các nút lệnh buộc phải liên tục hoặc rẽ nhánh có msgbox thông báo cụ thể). Các trường hợp này rất khó xảy ra nếu phân tích xử lý kỹ theo từng trường hợp.
Vấn đề thiết kế nhiều command button làm sao cho không thấy rườm rà không phải là vấn đề khó. Nếu nghiên cứu kỹ và đặt ở những vị trí thích hợp đôi khi còn trở thành yếu tố làm đẹp cho form. Cũng có thể xử dụng icon để tạo thành những command đẹp rồi dùng ControlTip Text thay caption của nó
Chúc bạn thành công
nguyenhoangbanhan > 10-06-15, 11:51 PM
(10-06-15, 07:28 PM)nguyenhoangbanhan Đã viết:- anh tranthanhan1962 ơi tại em nói chưa rõ lắm nên xử lý code của a gởi cho em , a thấy nó rối vậy :(10-06-15, 07:07 PM)tranthanhan1962 Đã viết:(10-06-15, 02:36 AM)nguyenhoangbanhan Đã viết: - các bác ơi chỉ em với:
- ban đầu em có 4 nút là thêm, cập nhật, xóa và thoát
- em muốn làm một nút thêm, khi nhấn vào nút thêm các text box rỗng cho thêm vào đồng thời nút thêm thành nút lưu khi nhập ở text box xong nhấn nút lưu thì lưu lại và trở về trạng thái ban đầu, còn các nút còn lai là nút cập nhật sẽ trở thành nút quay về cho ta quay về nếu không thêm nửa nút xóa thành nút hủy, hủy các thao tác vừa nhập trờ lại trang thái ban đầu, thế này viết code như thế nào, mong các bác chỉ với!!!!!!!!!!!!!!!!!
Có thể dùng phương pháp tham chiếu điều kiện caption của nút lệnh để xử lý theo ý của bạn.
1/ Xử lý command button them
Mã PHP:Private Sub them_Click()
On Error GoTo Err_them_Click
Select Case them.Caption
Case Is = "L" & ChrW(432) & "u"
DoCmd.RunCommand acCmdSaveRecord
them.Caption = "Thêm"
Case Is = "Thêm"
DoCmd.GoToRecord , , acNewRec
them.Caption = "L" & ChrW(432) & "u"
End Select
Exit_them_Click:
Exit Sub
Err_them_Click:
MsgBox Err.Description
Resume Exit_them_Click
End Sub
2/ Xử lý command button capnhat
Mã PHP:Private Sub capnhat_Click()
On Error GoTo Err_capnhat_Click
Select Case Capnhat.Caption
Case Is = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
MsgBox "Cap Nhat Thanh Cong", vbOKOnly, "Thông Báo"
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Capnhat.Caption = "Quay v" & ChrW(7873)
Case Is = "Quay v" & ChrW(7873)
DoCmd.GoToRecord , , acFirst
Capnhat.Caption = "C" & ChrW(7853) & "p nh" & ChrW(7853) & "t"
End Select
Exit_capnhat_Click:
Exit Sub
Err_capnhat_Click:
MsgBox Err.Description
Resume Exit_capnhat_Click
End Sub
3/Xử lý command button xoa
Mã PHP:Private Sub xoa_Click()
On Error GoTo Err_xoa_Click
Select Case xoa.Caption
Case Is = "Xóa"
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
xoa.Caption = "H" & ChrW(7911) & "y"
Case Is = "H" & ChrW(7911) & "y"
If Me.Dirty Then
Beep
DoCmd.RunCommand acCmdUndo
Form_Current
Else
Beep
MsgBox "Khongthe huy duoc cac thay doi", vbInformation, "Chu y"
End If
xoa.Caption = "Xóa"
End Select
Exit_xoa_Click:
Exit Sub
Err_xoa_Click:
MsgBox Err.Description
Resume Exit_xoa_Click
End Sub
Dù sao mình cũng không ủng hộ cách làm này. Vì để người xử dụng dễ dàng thao tác các nút lệnh phải được hiển thị ở những vị trí cụ thể, quen thuộc. Trong trường hợp không cho phép sử dụng chỉ nên làm mờ (Enable=False). Hạn chế tối đa việc Visible=False của nút lệnh (trừ những trường hợp bất khả kháng như chuỗi lệnh xử lý của các nút lệnh buộc phải liên tục hoặc rẽ nhánh có msgbox thông báo cụ thể). Các trường hợp này rất khó xảy ra nếu phân tích xử lý kỹ theo từng trường hợp.
Vấn đề thiết kế nhiều command button làm sao cho không thấy rườm rà không phải là vấn đề khó. Nếu nghiên cứu kỹ và đặt ở những vị trí thích hợp đôi khi còn trở thành yếu tố làm đẹp cho form. Cũng có thể xử dụng icon để tạo thành những command đẹp rồi dùng ControlTip Text thay caption của nó
Chúc bạn thành công
Thank a nhieu nhen tai cô hướng dẫn thực tập yêu cầu...e noi là làm mỗi nút 1 chuc năng cho dễ sử dụng va de làm nua mak co hk chịu
tranthanhan1962 > 12-06-15, 11:58 PM
(10-06-15, 11:51 PM)nguyenhoangbanhan Đã viết: - anh tranthanhan1962 ơi tại em nói chưa rõ lắm nên xử lý code của a gởi cho em , a thấy nó rối vậy :
+ A có thể giúp em xử lý khi nhấp vô nút cập nhật no trờ thành nút lưu cập nhập cho ta cập nhật đồng thời các nút còn lại nút thêm thành nút hủy, xóa thành nút quay về chứ không phải là khi nhấp vào nút thêm thì nó mới thành nút hủy. Xử lý như vậy thì không cần làm mờ. mà em thấy củng dễ sừ dụng cho người dùng phải khong anh
Select Case Capnhat.Caption
Case Is = "Cập nhật"
MsgBox "Cap Nhat Thanh Cong", vbOKOnly, "Thông Báo"
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Capnhat.Caption = "Lưu cập nhật"
them.Caption="Hủy"
Xoa.Caption="Quay về"
Case ....
.....
End Select
cpucloi > 14-06-15, 09:21 PM