Các bác giúp em cái code về option button

Liên hệ QC

QuytFootball

Thành viên mới
Tham gia
21/8/21
Bài viết
18
Được thích
7
Em có dùng 2 option button trong bảng nhập liêu. Code bắt buộc 1 trong 2 phải được tick mới cho nhập liệu. Em cảm ơn ah

1630414843145.png
 
Phòng vậy hơi xa quá. Theo kinh nghiệm thiết kế form của tôi thì combobox hơi mất thì giờ chọn. Gặp cái form dùng làm data entry thì người dùng gõ quen rồi sẽ nhớ hết các thứ tự từng control. Các controls đơn giản họ gõ lẹ lắm.
Khi tôi nhận bàn giao lúc mới nhận việc, tôi đã thấy 1 sự cẩu thả trong thiết kế dữ liệu: Cùng là thu chi mà tách ra 2 bảng Cash và bank cho 2 loại hình thanh toán tiền mặt và thanh toán bằng chuyển khoản qua ngân hàng. Việc đó chưa nghiêm trọng, vấn đề là tên fields 2 bảng khác nhau, đã vậy 1 bảng nó đặt 1 checkbox IsReceive và 1 bảng đặt 1 checkbox là IsPayment để phân biệt chứng từ thu/ chi. Người dùng cũng loạn mà người phải code để lập báo cáo dòng tiền (gộp 2 bảng lại) cũng bị loạn. Một số người đang viết code ầm ầm ở GPE đây không phân tích để thiết kế dữ liệu đến mức đó.
 
Upvote 0
Khi tôi nhận bàn giao lúc mới nhận việc, tôi đã thấy 1 sự cẩu thả trong thiết kế dữ liệu: Cùng là thu chi mà tách ra 2 bảng Cash và bank cho 2 loại hình thanh toán tiền mặt và thanh toán bằng chuyển khoản qua ngân hàng. Việc đó chưa nghiêm trọng, vấn đề là tên fields 2 bảng khác nhau, đã vậy 1 bảng nó đặt 1 checkbox IsReceive và 1 bảng đặt 1 checkbox là IsPayment để phân biệt chứng từ thu/ chi. Người dùng cũng loạn mà người phải code để lập báo cáo dòng tiền (gộp 2 bảng lại) cũng bị loạn. Một số người đang viết code ầm ầm ở GPE đây không phân tích để thiết kế dữ liệu đến mức đó.
Việc thiếu tính hệ thống và nhất quán khi thiết kế csdl hay lập trình là 1 tất yếu không loại trừ ai cả. Người ta chỉ nhận ra sai lầm khi đã quá muộn kể cả Microsoft. Thế mới có chuyện cứ mãi vá lỗi nhưng cứ sửa 1 lỗi thì lại ra 10 lỗi khác.

Tìm ra lỗi người khác thì rất dễ nhưng buộc mình không mắc lỗi như họ thì không dễ chút nào, nếu không muốn nói là không thể.
 
Upvote 0
Việc thiếu tính hệ thống và nhất quán khi thiết kế csdl hay lập trình là 1 tất yếu không loại trừ ai cả. Người ta chỉ nhận ra sai lầm khi đã quá muộn kể cả Microsoft. Thế mới có chuyện cứ mãi vá lỗi nhưng cứ sửa 1 lỗi thì lại ra 10 lỗi khác.

Tìm ra lỗi người khác thì rất dễ nhưng buộc mình không mắc lỗi như họ thì không dễ chút nào, nếu không muốn nói là không thể.
Biết nhiều 1 chút thì lỗi sẽ bớt đi 1 chút. Chỉ sợ không chịu học để biết thôi.
 
Upvote 0
2 trạng thái (flip-flop/bistate) không phải là Options. Và vì vậy cái CheckBox gần với chuyện này hơn.
Thì tôi viết rõ mà
Theo tôi nếu chỉ có 2 trạng thái bật/tắt thì dùng CheckBox là đúng rồi. Dùng OptionButton sẽ gặp rắc rối.

Rắc rối thôi chứ kiểu không có chó bắt mèo ăn cứt thì vẫn làm được:

1. Nếu chỉ 1 OptionButton thì tôi đã chỉ ra rắc rối rồi. Và rắc rối ở đây
- dùng OptionButton. Dĩ nhiên là nếu muốn chọn thì click, còn không muốn thì không click. Nhưng nếu click rồi sau đó muốn nghĩ lại hoặc sơ ý click thì sao? Không thể nào bỏ chọn được nữa. Với OptionButton thì nếu đã click thì muôn đời nó được chọn và không thể bỏ chọn như CheckBox được. Để khắc phục vấn đề này thì phải dùng 2 OptionButton

2. Dùng 2 OptionButton.
OptionButton1 -> Caption = Yes, "Chọn con chó"
OptionButton2 -> Caption = No, "Không chọn con chó"
Mặc định vd. OptionButton1.

Trong trường hợp này tôi cũng chỉ ra vấn đề ở đâu
Nhưng như thế thì hơi không tự nhiên.

Mỗi OptionButton cũng có 2 và chỉ 2 trạng thái thôi: True (đối tượng, sự việc,con người, con vật ĐƯỢC CHỌN) và False (đối tượng, sự việc,con người, con vật KHÔNG ĐƯỢC CHỌN). Cái khác chủ yếu giữa chúng là:

- việc lựa chọn hay không 1 CheckBox không ảnh hưởng tới việc lựa chọn hay không các CheckBox khác. Việc lựa chọn 1 OptionButton LUÔN LUÔN ảnh hưởng tới việc lựa chọn các OptionButton khác. Cụ thể là chọn OptionButton1 thì tất cả các OptionButton khác sẽ trở thành không được chọn.

- việc lựa chọn hay không một ChcekBox không phụ thuộc vào các CheckBox khác. Click CheckBox 1 lần thì nó được chọn, click lần 2 thì nó sẽ không được chọn. Với OptionButton luôn có thể click để chọn. Nhưng không thể click lần nữa hay nhiều lần nữa để bỏ chọn. Muốn bỏ chọn phải có ít nhất một OptionButton khác và chọn nó. Chính vì thế nếu ở trên dùng 1 OptionButton thì rắc rối. Còn nếu dùng 2 OptionButton thì không tự nhiên.

Thôi tôi nghỉ không tham gia chủ đề này nữa. Bởi có tham gia tiếp thì tôi cũng chỉ lặp lại những gì đã viết.
 
Lần chỉnh sửa cuối:
Upvote 0
Người ta chỉ nhận ra sai lầm khi đã quá muộn kể cả Microsoft. Thế mới có chuyện cứ mãi vá lỗi nhưng cứ sửa 1 lỗi thì lại ra 10 lỗi khác.
Cái này quá dễ hiểu. Vì Microsoft cũng chỉ là người chứ không là thánh. Con người có giỏi đến đâu thì cũng không biết mọi thứ trên đời được. Nếu Microsoft là THÁNH thì đã không phạm bất cứ lỗi nào, và làm gì có lỗi đầu tiên để mà Vá.
Không ai có thể lường hết mọi trường hợp sẽ có thể sảy ra, nhìn ra mọi chỗ yếu tiềm năng. Trừ phi là thánh.
 
Upvote 0
. . . . . . . .Không ai có thể lường hết mọi trường hợp sẽ có thể sảy ra, nhìn ra mọi chỗ yếu tiềm năng. Trừ phi là thánh.
Thêm nữa: Cái hay của con người là dễ nhìn thấy cái dỡ của người khác, nhóm khác hay hội khác; Nhưng không thể thấy nhiều cái dỡ của chính mình, của nhóm mình & nói rọng ra là của hội của mình.


Chúc mọi người chúng ta vui khỏe, vượt qua đợt dịch dã này!
 
Upvote 0
Thêm nữa: Cái hay của con người là dễ nhìn thấy cái dỡ của người khác, nhóm khác hay hội khác; Nhưng không thể thấy nhiều cái dỡ của chính mình, của nhóm mình & nói rọng ra là của hội của mình.
Nhìn thấy cọng cỏ trong mắt người khác nhưng không thấy được dầm trong mắt mình. :D
 
Upvote 0
Nhiều khi mình làm Form dùng Checkbox thay cho Label luôn, thấy cũng tiện (vd: nhập số hóa đơn, nếu có nhập thì đánh dấu vào Checkbox, không muốn nhập thì bỏ đánh dấu). Cứ mặc định tự hiểu là có đánh dấu là chọn, không đánh dấu là không chọn, không biết làm vậy người dùng khác có rối không nhưng thấy gọn cho form.
 

File đính kèm

  • Checkbox.JPG
    Checkbox.JPG
    31.9 KB · Đọc: 18
Upvote 0
Cái này quá dễ hiểu. Vì Microsoft cũng chỉ là người chứ không là thánh. Con người có giỏi đến đâu thì cũng không biết mọi thứ trên đời được. Nếu Microsoft là THÁNH thì đã không phạm bất cứ lỗi nào, và làm gì có lỗi đầu tiên để mà Vá.
Không ai có thể lường hết mọi trường hợp sẽ có thể sảy ra, nhìn ra mọi chỗ yếu tiềm năng. Trừ phi là thánh.
Cái bài #542 màb bác quote nó không nói rõ là lỗi ở controls hay lỗi của csdl.

Controls thì chưa hẳn đã là lỗi của Microsoft. Có thể họ phải theo tiêu chuẩn chung. Cũng có thể do phải hổ trợ các phiên bản cũ. Trường hợp phiên bản thì bên người viết code phải chịu khó tìm hiểu những phiên bản mới có thể có những cách thức khắc phục.

CSDL liên hệ thì đã có luật chuẩn (normalise) để giúp chúng làm việc. Theo lý thuyết CSDL LH thì nên chuẩn tối thiểu đến bậc 3. Trên thực tế, để tránh ảnh hưởng đến tốc độ, có nhiều CXSDL chỉ chuẩn đến bậc 2. Cũng như khi học thì lý thuyết nói về khoá ràng buộc bảng này bảng nọ. Trên thực tế, các CSDL lớn người ta thường 'hiểu ngầm' ràng buộc chứ không phải lúc nào cũng xác định trong metadata.

Phần mềm luôn phải trải qua tiến trình tiến hoá (evolution). Có nhiều điểm ta thấy không đúng nhưng thực ra ngày xưa nó là 'tối ưu'. Winform Controls của Microsoft ngày xưa bị bắt buộc phải tiến hoá theo chiều sì tin hiện đại là Webfrom (*1). Có nhiều điểm ta hỏi "tại sao Microsoft 'ngu' thế?", nhưng thực ra có thể do họ bị bó tay. Hàm Datedif trong Excel là một ví dụ điển hình. Khi mua lại bản quyền của Lotus 123 họ có thể bị ràng buộc bản quyền.

Cũng có những trường hợp do cần '"tối ưu" mặt này mà phải hy sinh mặt khác. Điển hình, để có được tỷ lệ não và chất xám trên trọng lượng cơ thể, con người phải chấp nhận cái sọ tròn to. Cộng với tật đứng trên hai chân khiến trọng lượng cả khối ốc nâng tuốt lên trên cao. Chạy thì không nhanh bằng loại 4 chân và khi ngã thì dễ vỡ sọ.
Nhưng bảo đổi lấy cái sọ nhỏ hơn cho dễ bảo quản thì bác có chịu không?

(*1) thì đúng như bác nói, không ai có thể luôn đoán đúng tương lai. Người giỏi chỉ có thể đoán đại khái thôi, chứ chi tiết thì phải chấp nhận khả năng đoán sai. Ngày xưa, chính
 
Upvote 0
Giải pháp ListBox thay cho CheckBox hoặc OptionButton:

1630738576163.png
 
Upvote 0
Cái bài #542 màb bác quote nó không nói rõ là lỗi ở controls hay lỗi của csdl.
À, tôi nói về lỗi chung chung thôi. Lỗi của phần mềm, lỗi của hệ điều hành, lỗi trong lập trình, lỗi trong công việc hàng ngày. Bất kể là lỗi gì, con người chứ không phải là thánh. :D
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom