Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Lỗi] Lỗi code event!
#1
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 ạ.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#2
gửi bài của bạn lên đây xem nào.
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn toancvp
#3
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./.
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn toancvp
#4
(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 Thukhobằ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!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toancvp
#5
(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 ạ,
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#6
ặ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é.
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn toancvp
#7
(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:
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 Thukhobằ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!
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.
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ữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#8
(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.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#9
(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:
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 Thukhobằ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!
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.
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.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toancvp
#10
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
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn toancvp


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Lỗi khi chạy event hyuwoo 4 327 16-09-16, 10:39 AM
Bài mới nhất: hyuwoo
  [Hỏi] Gõ dấu tiếng Việt trong code cannguyen 2 134 25-05-16, 02:41 PM
Bài mới nhất: cpucloi
  GIẢI THÍCH CÁC LỆNH KHI VIẾT CODE huynhbahoc 3 2,941 26-03-16, 09:19 PM
Bài mới nhất: phuc_thanhtien
  [Hỏi] code thông báo khi không nhập dữ liệu vào textbox khanghychu 13 1,002 01-02-16, 05:31 PM
Bài mới nhất: paulsteigel
  [Hỏi] Viết code để xử lý query cannguyen 16 937 13-11-15, 10:03 AM
Bài mới nhất: cannguyen

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ơ