-
Lỗi code event!
toancvp > 05-07-16, 02:37 PM
https://drive.google.com/open?id=0B5rfqy...lBNS2NiUnM
Các bác ơi, em đang làm đến cái form "Frm_PHIEU" này thì bị vướng ở chỗ này. Em để event before update để check 3 textbox "txtNVKDNguoiGiao" "txtThuKho" và "txtKeToanTruong" với mục đích kiểm tra xem mã nhân viên điền trong các textbox này có nằm trong các mã nhân viên đã được đăng ký trong "Tbl_0_NhanVien" hay không.
Nếu không nằm trong danh sách thì báo lỗi và set focus trở lại, xóa trắng text box đó thành Null.
Cụ thể là thế này ạ.
Private Sub txtThuKho_BeforeUpdate(Cancel As Integer)
If DCount("[MaNV]", "Tbl_0_NhanVien", "[MaNV]=txtThuKho") = 0 Then
a = MsgBox("Ma nhan vien nay chua duoc dang ky!", vbOKOnly, "THONG BAO")
If a = 1 Then
Me.txtThuKho = Null
Me.txtThuKho.SetFocus
End If
End If
End Sub
Nhưng khi em chạy thử, cố tình đánh sai mã nhân viên thì nó báo lỗi code ở đoạn
Me.txtThuKho = Null
Me.txtThuKho.SetFocus
Em không biết mình sai ở đâu, các bác xem giúp em với ạ. -
RE: Lỗi code event!
zinzin8x > 05-07-16, 04:48 PM
gửi bài của bạn lên đây xem nào. -
RE: Lỗi code event!
zinzin8x > 05-07-16, 05:09 PM
Theo như mình thử thì bạn làm 1 button kiểm tra và cho code click của button đó thì hoàn toàn dùng code của bạn được.
Còn nếu bạn không muốn dùng button để kiểm tra thì bạn hãy cho sang sự kiện apter update là ok bạn nhé.
Thân./. -
RE: Lỗi code event!
maidinhdan > 05-07-16, 06:09 PM
(05-07-16, 02:37 PM)toancvp Đã viết: Private Sub txtThuKho_BeforeUpdate(Cancel As Integer)
If DCount("[MaNV]", "Tbl_0_NhanVien", "[MaNV]=txtThuKho") = 0 Then
a = MsgBox("Ma nhan vien nay chua duoc dang ky!", vbOKOnly, "THONG BAO")
If a = 1 Then
Me.txtThuKho = Null
Me.txtThuKho.SetFocus
End If
End If
End Sub
Hàm này rất dể gặp lỗi, ở một số chỗ như sau:
1. "[MaNV]=txtThuKho"
2. Biến a
Còn cách sửa thì không biết bạn muốn dùng để làm gì? nên mình muốn bạn phát biểu bằng lời đoạn code trên, để có thể điều chỉnh như ý bạn.
Tôi xin dịch sơ sơ đoạn code trên của bạn nè: Không biết bạn copy hay tự viết thế này
Mã PHP:Nếu, Đếm MaNV trong tblNV {có điều kiện MaNV bằng textbox Thukho} bằng 0 thì
=> gán biến a bằng bảng thông báo X
_____Nếu biến a=1 thì
________txtThukho= Null
________đi tới txtThukho
_____Kết thúc
Kết thúc.
Thân ái! -
RE: Lỗi code event!
toancvp > 05-07-16, 06:24 PM
(05-07-16, 05:09 PM)zinzin8x Đã viết: Theo như mình thử thì bạn làm 1 button kiểm tra và cho code click của button đó thì hoàn toàn dùng code của bạn được.
Còn nếu bạn không muốn dùng button để kiểm tra thì bạn hãy cho sang sự kiện apter update là ok bạn nhé.
Thân./.
Em cũng thử cho vào after update rồi mà không được bác ạ, -
RE: Lỗi code event!
zinzin8x > 05-07-16, 07:05 PM
ặc. Mang file bạn lên đây. Mình vừa thử vẫn được mà. biến cố này theo lý luận là :
nếu tôi nhập xong txt MaNV thì kiểm tra cho tôi có thông tin MaNV trong bảng NV hay không? nếu không thì xóa thông tin sai đó và đưa trỏ chuột yêu cầu nhập lại.
Vậy có nghĩa là bạn phải kiểm tra theo sự kiện sau khi nhập chứ không phải trước khi nhập nhé. -
RE: Lỗi code event!
toancvp > 05-07-16, 07:38 PM
(05-07-16, 06:09 PM)maidinhdan Đã viết: Hàm này rất dể gặp lỗi, ở một số chỗ như sau:
Cái này thì tự em viết bác ạ, nội dung của đoạn code thì cũng như bác diễn dịch, là nếu mà txtThuKho đã nhập không nằm trong danh sách nhân viên thì sẽ nhảy về txtThuKho và xóa trắng.
1. "[MaNV]=txtThuKho"
2. Biến a
Còn cách sửa thì không biết bạn muốn dùng để làm gì? nên mình muốn bạn phát biểu bằng lời đoạn code trên, để có thể điều chỉnh như ý bạn.
Tôi xin dịch sơ sơ đoạn code trên của bạn nè: Không biết bạn copy hay tự viết thế này
Mã PHP:Nếu, Đếm MaNV trong tblNV {có điều kiện MaNV bằng textbox Thukho} bằng 0 thì
=> gán biến a bằng bảng thông báo X
_____Nếu biến a=1 thì
________txtThukho= Null
________đi tới txtThukho
_____Kết thúc
Kết thúc.
Thân ái!
Em chạy thử thì nó vẫn báo lỗi được thì theo em nghĩ là nó chạy thành công đoạn if 1 rồi, chỉ có đoạn if 2 sau khi click ok là gặp vấn đề bác ạ. -
RE: Lỗi code event!
toancvp > 05-07-16, 08:42 PM
(05-07-16, 07:05 PM)zinzin8x Đã viết: ặc. Mang file bạn lên đây. Mình vừa thử vẫn được mà. biến cố này theo lý luận là :
nếu tôi nhập xong txt MaNV thì kiểm tra cho tôi có thông tin MaNV trong bảng NV hay không? nếu không thì xóa thông tin sai đó và đưa trỏ chuột yêu cầu nhập lại.
Vậy có nghĩa là bạn phải kiểm tra theo sự kiện sau khi nhập chứ không phải trước khi nhập nhé.
bác, file của em ở ngay đầu thread ấy ạ, google driver.
Bác cho vào after update của form hay của text box ạ, em cho vào cả 2 đều ko đc luôn. -
RE: Lỗi code event!
maidinhdan > 05-07-16, 10:27 PM
(05-07-16, 07:38 PM)toancvp Đã viết:
(05-07-16, 06:09 PM)maidinhdan Đã viết: Hàm này rất dể gặp lỗi, ở một số chỗ như sau:
Cái này thì tự em viết bác ạ, nội dung của đoạn code thì cũng như bác diễn dịch, là nếu mà txtThuKho đã nhập không nằm trong danh sách nhân viên thì sẽ nhảy về txtThuKho và xóa trắng.
1. "[MaNV]=txtThuKho"
2. Biến a
Còn cách sửa thì không biết bạn muốn dùng để làm gì? nên mình muốn bạn phát biểu bằng lời đoạn code trên, để có thể điều chỉnh như ý bạn.
Tôi xin dịch sơ sơ đoạn code trên của bạn nè: Không biết bạn copy hay tự viết thế này
Mã PHP:Nếu, Đếm MaNV trong tblNV {có điều kiện MaNV bằng textbox Thukho} bằng 0 thì
=> gán biến a bằng bảng thông báo X
_____Nếu biến a=1 thì
________txtThukho= Null
________đi tới txtThukho
_____Kết thúc
Kết thúc.
Thân ái!
Em chạy thử thì nó vẫn báo lỗi được thì theo em nghĩ là nó chạy thành công đoạn if 1 rồi, chỉ có đoạn if 2 sau khi click ok là gặp vấn đề bác ạ.
* Chưa chắc code báo lỗi ngay đoạn màu vàng là do đoạn đó đâu nhé bạn .
Để ý phần in tôi In đậm và gạch dưới.
=> Vậy tại sao bạn lại dùm hàm Dcount mà không phải là làm Dlookup.
Như mình đã nói phía trên: sẽ mắc 2 lỗi phía trên.
Làm gì có chuyện gán biến a= msgbox, rồi nếu biến a=1: là thế nào? Giải thích dùm đi.
Rồi mình viết code chuẩn cho, vì thế mình mới yêu cầu bạn phát biểu bằng lời để mình viết cho. Phát biểu lại xem. ( đừng nhìn vào code phát biểu của mình phía trên vì mình chỉ dịch ra từ code của bạn, mà code đó không xài được đâu)
Tại sao tôi phải hỏi đi hỏi lại, dài dòng lê thê với bạn như vậy. Vì nó sẽ giúp bạn nhớ code này mãi mãi. -
RE: Lỗi code event!
zinzin8x > 06-07-16, 08:52 AM
http://www.mediafire.com/download/9qpiil...%29.mdbđây mình trả hang cho cậu.
cậu sai ở chỗ này: Nếu lấy 3 ô textbox mà làm điều kiện check, trong đó textbox có dùng control souce là 1 trường thì không dùng Dcount mà dùng Dlookup như bạn Hân nói.
Còn nếu ko dùng control souce thì bạn cho vào apter update với nội dung như này là OK nhé:
If DCount("[MaNV]", "Tbl_0_NhanVien", "[MaNV]=txtThuKho") = 0 Then
a = MsgBox("Ma nhan vien nay chua duoc dang ky!", vbOKOnly, "THONG BAO")
If a = 1 Then
Me.txtThuKho = Null
End If
End If
Me.Refresh ' dể xóa cái label hiện tên nhân viên nếu mã NV sai
txtKeToanTruong.SetFocus ' ép nó nhảy đến vị trí khác
Me.txtThuKho.SetFocus ' kéo nó về với textbox mình cần.
Mình đã xem file của bạn lỗi do cả mấy textbox kiểm tra đều dùng có control souce là 1 trường trong table. hãy xóa hết nó đi và làm code như trên là OK nhé.
Đấy là mình ép cho bài đúng theo code của bạn thôi. chứ xài hàm dlookup là chuẩn đẹp trai hơn cả về ý nghĩa cũng như logic hơn bạn nhé.
http://www.mediafire.com/download/9qpiil...NEW%29.mdb