Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] code thông báo khi không nhập dữ liệu vào textbox
#1
Mình mới tham gia diễn đàn cũng như mới nghiên cứu access nên có gì nhờ mấy bạn hỗ trợ tận tình và chi tiết nhé. Cảm ơn các bạn trước.
Câu hỏi của mình: trên form nếu không nhập dữ liệu cho textbox thì sẽ thông báo: "ban phai nhap du lieu vao" và con chuột nằm tại ngay textbox đó. nếu không nhập dữ liệu thì không cho qua. Trên diễn đàn có nhiều bạn trả lời ý tứ 1:
với code:
Private Sub txtDate_LostFocus()

If IsNull(txtDate) Then
MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"
txtDate.SetFocus
Cancel = True
End Sub
Nhưng sao khi làm y vậy nhưng con chuột lại nhảy xuống textbox kế tiếp.
Rất mong các bạn giúp mình!
Chữ ký của khanghychu khanghychu,gia nhập Thủ Thuật Access từ 21-01 -16.
Reply
Những người đã cảm ơn
#2
(26-01-16, 08:40 PM)khanghychu Đã viết: Mình mới tham gia diễn đàn cũng như mới nghiên cứu access nên có gì nhờ mấy bạn hỗ trợ tận tình và chi tiết nhé. Cảm ơn các bạn trước.
Câu hỏi của mình: trên form nếu không nhập dữ liệu cho textbox thì sẽ thông báo: "ban phai nhap du lieu vao" và con chuột nằm tại ngay textbox đó. nếu không nhập dữ liệu thì không cho qua. Trên diễn đàn có nhiều bạn trả lời ý tứ 1:
với code:
Private Sub txtDate_LostFocus()

If IsNull(txtDate) Then
MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"
txtDate.SetFocus
Cancel = True
End Sub
Nhưng sao khi làm y vậy nhưng con chuột lại nhảy xuống textbox kế tiếp.
Rất mong các bạn giúp mình!

Bạn nên chọn ở event On Exit:
Private Sub txtDate_Exit(Cancel As Integer)

[i]If IsNull(txtDate) Then
[/i]
MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"
[i]Cancel = True[/i]
[i]txtDate.SetFocus[/i]
[i]End [i]If[/i][/i]
End Sub
Như trên là được
Chữ ký của nguyenichtri Chia sẻ chân thành là cách thêm kiến thức cho mình và bạn bè.
014
Reply
Những người đã cảm ơn khanghychu , maidinhdan , Noname
#3
Mình cũng bị như vậy. Nhưng làm theo code của bạn vẫn ko được nó vẫn nhảy tiếp qua ô khác.
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
#4
Về thứ tự các sự kiện của một textbox thì nó theo lộ trình sau
Enter>GotFocus
Exit>LostFocus
Tình huống của bạn xảy ra thế này:
Khi bạn chuyển Focus, sự kiện Exit sẽ thực hiện (lúc này vẫn còn Focus). Sau đó LostFocus sẽ thực hiện và đối tượng sẽ mất Focus và kích hoạt Enter/GotFocus của điều khiển khác.
Và nếu bạn thực hiện việc SetFocus về nó thì lệnh đấy được thực hiện trước khi điều khiển sau nhận được Focus vì thế nó sẽ mất focus.
Do đó cách làm đơn giản thôi. Hãy sử dụng lệnh SetFocus vào đối tượng sau để 2 thủ tục đó kích hoạt và bật lại SetFocus vào Textbox bạn muốn đặt Focus.
Cái như sau thì đều được cả
Mã:
Private Sub txtDate_Exit(Cancel As Integer)
    If Not IsNull(txtDate) Then Exit Sub
    MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"
    'Chuyển Focus sang đối tượng sau
    Text2.SetFocus
    ' chuyển lại focus về đối tượng của bạn
    txtDate.SetFocus
    DoCmd.CancelEvent
End Sub
'Hoặc
Private Sub txtDate_LostFocus()
    If Not IsNull(txtDate) Then Exit Sub
    MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"
    Text2.SetFocus
    txtDate.SetFocus
    DoCmd.CancelEvent
End Sub
Trên thực tế với vấn đề này, cần phân tích lô gic một chút bạn sẽ tự giải thích được lý do
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn khanghychu , Noname , Che_Guevara , MatTroiNguQuen , maidinhdan
#5
Theo quy định thì phải đặt sự kiện GotFocus()  hoặc LostFocus hoặc Exit ...vào ô kế tiếp ở đây là tecxt thứ 2 sau khi Enter tức là theo sắp sếp trong phần Tab Order...của Form đó thì mới đúng !
 trong đó ( GotFocus()  là sự kiện trước khi ô kế tiếp nhận chuột )  và LostFocus()  là sự kiện sau khi ô kế tiếp nhận chuột  !
bởi vì bạn làm kg đúng nên mới có hiện tượng vậy thôi .Hãy tham khảo ví dụ đính kèm nhé 
[/url][url=http://www.mediafire.com/download/kma92egjjxc3ylm/THU_NGHIEM_LOST_FOCUS]File Đính Kèm
hoặc http://www.mediafire.com/download/kma92e...LOST_FOCUS
Chúc thành công !
Chữ ký của khải nguyên Khải Nguyên Xin Gửi lời chào tới Tất cả các bạn trên Diễn Đàn Thủ Thuật Access
Chúc cả nhà may mắn và  thành đạt ! Lightbulb
Reply
Những người đã cảm ơn khanghychu , maidinhdan
#6
(27-01-16, 10:48 PM)khải nguyên Đã viết: Theo quy định thì phải đặt sự kiện GotFocus()  hoặc LostFocus hoặc Exit ...vào ô kế tiếp ở đây là tecxt thứ 2 sau khi Enter tức là theo sắp sếp trong phần Tab Order...của Form đó thì mới đúng !
 trong đó ( GotFocus()  là sự kiện trước khi ô kế tiếp nhận chuột )  và LostFocus()  là sự kiện sau khi ô kế tiếp nhận chuột  !
bởi vì bạn làm kg đúng nên mới có hiện tượng vậy thôi .Hãy tham khảo ví dụ đính kèm nhé 
[/url][url=http://www.mediafire.com/download/kma92egjjxc3ylm/THU_NGHIEM_LOST_FOCUS]File Đính Kèm
hoặc http://www.mediafire.com/download/kma92e...LOST_FOCUS
Chúc thành công !
Chia sẻ với Khải Nguyên một chút...
Nếu form có 20 hoặc nhiều hơn textbox thì sao? và bạn đó bấm chuột vào một textbox ở trước đó thì sao?
Ngoài ra cũng không có quy định chuẩn mực về điều này mà đơn giản chỉ là nắm rõ thứ tự thực hiện các sự kiện để chọn cách giải quyết cho phù hợp.
Trong lập trình, để tiện việc kiểm soát, người ta hay dùng một thủ tục dùng chung để kiểm soát việc bỏ trống thông tin ở một đối tượng nào đó trừ khi bắt buộc phải kiểm soát đối tượng để lấy số liệu cho các tính toán tiếp theo.
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn khanghychu , Che_Guevara , maidinhdan
#7
cảm ơn các bạn thật nhiều! Mình sẽ làm theo có gì sẽ báo lại.
Chữ ký của khanghychu khanghychu,gia nhập Thủ Thuật Access từ 21-01 -16.
Reply
Những người đã cảm ơn
#8
Em cảm ơn bác paulsteigel  nhiều ,trên đây là e giái thĩch cho 2 bạn khanghychu và nguyenichtri 
chứ kg phải là nói do bác thù tục sai ....... với phạm vi trong bài viết này thôi .còn như bác nói nếu có nhiều ô trống thì lúc đó sẽ phải dùng cách khác chẳng hạn Gọi thủ tục trong Modul ,hoặc =Macro để  kiểm tra tất cả dữ liệu của các textbox theo đk đó 
cũng như bác nói nếu đặt con chuột ở text trước đó thì theo tôi thấy =exit rồi cũng tạo sựkiện cho chuột phải quay lại text rỗng đó .
Cảm ơn nhiều !
chúc cả nhà có  sáng tốt đẹp !
Chữ ký của khải nguyên Khải Nguyên Xin Gửi lời chào tới Tất cả các bạn trên Diễn Đàn Thủ Thuật Access
Chúc cả nhà may mắn và  thành đạt ! Lightbulb
Reply
Những người đã cảm ơn paulsteigel , Noname , maidinhdan
#9
(28-01-16, 07:45 AM)khải nguyên Đã viết: Em cảm ơn bác paulsteigel  nhiều ,trên đây là e giái thĩch cho 2 bạn khanghychu và nguyenichtri 
chứ kg phải là nói do bác thù tục sai ....... với phạm vi trong bài viết này thôi .còn như bác nói nếu có nhiều ô trống thì lúc đó sẽ phải dùng cách khác chẳng hạn Gọi thủ tục trong Modul ,hoặc =Macro để  kiểm tra tất cả dữ liệu của các textbox theo đk đó 
cũng như bác nói nếu đặt con chuột ở text trước đó thì theo tôi thấy =exit rồi cũng tạo sựkiện cho chuột phải quay lại text rỗng đó .
Cảm ơn nhiều !
chúc cả nhà có  sáng tốt đẹp !

Khải Nguyên lại suy nghĩ nhiều quá rồi.
Làm gì có chuyện đúng, sai - mình chỉ góp ý thôi. Khi thấy có việc gì đó chưa hợp lý thì mình nói và cũng có thể điều mình nói cũng chưa hợp lý. Sự đóng góp là cách để chúng ta giúp nhau phân tích mọi việc cho thấu đáo! Hôm trước mình định trả lời ngay bài này nhưng sau lại thôi để đợi xem có ai trả lời trước không vì đây là một nội dung các diễn đàn quốc tế cũng kêu ca nhiều./
Bản thân việc tiếp nhận Focus của Access cũng còn là một điều đáng bàn (đó có thể coi là một lỗi của ông này).
Chúc các bạn vui vẻ.
Không nên câu nệ nhé. Học thuật là biển và chả ai biết hết được mọi thứ. Đóng góp chỉ là để chia sẻ những góc cạnh mỗi người biết được cho người khác thôi.

Đặng Đình Ngọc
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname , Che_Guevara , jason , maidinhdan
#10
Diễn đàn này thật hấp dẫn thật lôi cuốn! Có tranh luận mới tìm ra được lỗ hỏng của MS Access. Chúc Mọi người cùng đoàn kết thảo luận. Cảm ơn các bạn!
Chữ ký của khanghychu khanghychu,gia nhập Thủ Thuật Access từ 21-01 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Tạo Menu dạng TreeView bằng Query (không dùng ActiveX) ongke0711 4 268 06-12-16, 09:16 PM
Bài mới nhất: toancvp
  [Hỏi] Cách thêm dữ liệu vào form Main_Sub NganNguyen 1 39 06-12-16, 02:23 AM
Bài mới nhất: maidinhdan
  [Help] Cập nhật combobox 2 từ combobox 1 (dữ liệu ở nhiều bảng) votinh.tq 6 209 22-11-16, 11:34 PM
Bài mới nhất: votinh.tq
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 130 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  [Hỏi] Tổng hợp dữ liệu theo thời gian hoanghai902 1 141 21-10-16, 09:55 PM
Bài mới nhất: maidinhdan

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ơ