Tính Toán Trong Form (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

Phạm Trường 80

Thành viên mới
Tham gia
22/2/25
Bài viết
31
Được thích
2
Các Bác Ơi! E Có file tính % Giảm giá mà loay hoay mãi chưa được.Bác Nào đi ngang qua giúp e với
 

File đính kèm

Chưa có sự kiện cho tb_PhanTram
 
Bạn không cho cách tính thì ai mà giúp được
Với bạn bỏ viết tắt đi, như mấy chữ a, e..., ở đây nhiều thành viên lớn tuổi và nhiều kinh nghiệm, bạn cứ viết tắt như thế là tự thu hẹp phạm vi được hỗ trợ lại đấy
 
Bạn không cho cách tính thì ai mà giúp được
Với bạn bỏ viết tắt đi, như mấy chữ a, e..., ở đây nhiều thành viên lớn tuổi và nhiều kinh nghiệm, bạn cứ viết tắt như thế là tự thu hẹp phạm vi được hỗ trợ lại đấy
tb_ThanhTien = tb_SoLuong * tb_DonGia - tb_SoLuong * tb_DonGia*tb_PhanTram .Đây Là Công thức,Các anh Chị xem giúp với! Nếu tb_PhanTram Không Nhập thì tb_ThanhTien = tb_SoLuong * tb_DonGia
 
tb_ThanhTien = tb_SoLuong * tb_DonGia * (1 - IIf(tb_PhanTram = "", 0, tb_PhanTram)

Đó là nếu phần trăm nhập số và có ký tự %, nếu không có ký tự % thì còn phải chia cho 100 rồi mới lấy 1 trừ nó.

Thông thường khi Label ghi "CK %" tức là phải nhập 1 số và không có ký tự %, và khỏi mất công nhập liệu thêm 1 ký tự.
 
tb_ThanhTien = tb_SoLuong * tb_DonGia * (1 - IIf(tb_PhanTram = "", 0, tb_PhanTram)

Đó là nếu phần trăm nhập số và có ký tự %, nếu không có ký tự % thì còn phải chia cho 100 rồi mới lấy 1 trừ nó.

Thông thường khi Label ghi "CK %" tức là phải nhập 1 số và không có ký tự %, và khỏi mất công nhập liệu thêm 1 ký tự.
Cảm ơn nhiều! tb_ThanhTien = tb_SoLuong * tb_DonGia - tb_SoLuong * tb_DonGia*tb_PhanTram đây là công thức đúng(đã tính trên sheet),cho vào báo lỗi.Các bác xem giúp lỗi gì
 
Cảm ơn nhiều! tb_ThanhTien = tb_SoLuong * tb_DonGia - tb_SoLuong * tb_DonGia*tb_PhanTram đây là công thức đúng(đã tính trên sheet),cho vào báo lỗi.Các bác xem giúp lỗi gì
Bài 2 tôi có nói file chưa có sự kiện cho tb_PhanTram. Bây giờ bạn nói lỗi thì lỗi ở đâu trong file bài 1?
 
Lỗi trong file,Anh Xem giúp với!
Đáng lẽ bỏ vào sự kiện change của tb_PhanTram
Mà đáng lẽ nên bỏ ký tự % vì nếu có ký tự %:
- sửa tỷ lệ phải nhớ bỏ % vào
- code cũng không hiểu text "5%" là 0.05
- Dùng hàm val thì code cũng tính ra là 5 (loại bỏ ký tự %)

Sửa như sau:

tb_ThanhTien = tb_SoLuong * tb_DonGia - tb_SoLuong * tb_DonGia * Val(tb_PhanTram) / 100

Hoặc gọn hơn

tb_ThanhTien = tb_SoLuong * tb_DonGia * (1 - Val(tb_PhanTram) / 100)

Câu lệnh này (1 trong 2) phải bỏ trong cả 3 sự kiện.

1745467351978.png
 
Đáng lẽ bỏ vào sự kiện change của tb_PhanTram
Mà đáng lẽ nên bỏ ký tự % vì nếu có ký tự %:
- sửa tỷ lệ phải nhớ bỏ % vào
- code cũng không hiểu text "5%" là 0.05
- Dùng hàm val thì code cũng tính ra là 5 (loại bỏ ký tự %)

Sửa như sau:

tb_ThanhTien = tb_SoLuong * tb_DonGia - tb_SoLuong * tb_DonGia * Val(tb_PhanTram) / 100

Hoặc gọn hơn

tb_ThanhTien = tb_SoLuong * tb_DonGia * (1 - Val(tb_PhanTram) / 100)

Câu lệnh này (1 trong 2) phải bỏ trong cả 3 sự kiện.

View attachment 307970
Vâng ! Cảm ơn nhiều đã giúp tôi.Code chạy vẫn sai nếu textbox % bị xoá trắng trước khi nhập liệu. Bác xem bỏ lỗi này giúp tôi với
 
Vâng ! Cảm ơn nhiều đã giúp tôi.Code chạy vẫn sai nếu textbox % bị xoá trắng trước khi nhập liệu. Bác xem bỏ lỗi này giúp tôi với
Đó là lỗi người dùng, vì tôi thấy mặc định mở form là 0%. người dùng cắc cớ xóa đi thì phải phạt người dùng.

Còn nếu như bạn muốn học hỏi thì trong ảnh trên, 2 code của đơn giá và thành tiền có 1 câu lệnh If để phòng ngừa, bạn tùy biến cho vào code của textbox phần trăm.
(Tùy biến nha, không phải copy 100%)
 
Vâng ! Cảm ơn nhiều đã giúp tôi.Code chạy vẫn sai nếu textbox % bị xoá trắng trước khi nhập liệu. Bác xem bỏ lỗi này giúp tôi với

Góp vui file này.
- Bẫy một số lỗi nhập liệu cơ bản.( nhập chữ, nhập số sau dấu %)
- Có thể nhập số thập phân.
 

File đính kèm

Góp vui file này.
- Bẫy một số lỗi nhập liệu cơ bản.( nhập chữ, nhập số sau dấu %)
- Có thể nhập số thập phân.
Tôi không ý kiến gì về code của bạn ngoại trừ việc code này giới thiệu 1 thủ thuật hay để kiểm soát dữ liệu nhập và hiển thị ký tự % trong chuỗi. Riêng tôi vẫn giữ ý kiến sau:
Khi nhập liệu thì đã diễn giải bằng label là "CK %" thì không cần ký tự % khi nhập liệu và kể cả AfterUpdate. Nếu có thì sẽ như sau:

1745765124908.png

Vì về logic thì CK% = 5 sẽ hiểu (1 số người nào đó) là 5%, còn CK% = 5% lại hiểu rằng 5% / 100 lần nữa thành 0.05 %. Thông thường bảng biểu cũng ghi tiêu đề như vậy: Có % trên tiêu đề thì bên dưới không cần nữa.

a.png

Thứ hai, Trên user form thì mọi giá trị đọc được trên các controls đều là text, muốn tính toán lại phải loại trừ ký tự đó ra. (Gắn vào làm chi rồi lại phải gỡ ra?)

Thứ ba: khi không có ký tự % thì chỉ cần Val là có thể tính toán dù là số nguyên hay thập phân, chứ không cần 1 công thức dài thế này:

CK = CDbl(Left(Me.tb_PhanTram.Value, InStr(Me.tb_PhanTram.Value, "%") - 1))
 
Khi nhập liệu thì đã diễn giải bằng label là "CK %" thì không cần ký tự % khi nhập liệu và kể cả AfterUpdate. Nếu có thì sẽ như sau:
Tôi cũng có cùng cách thiết kế như của bác, chỉ cần lable diễn giải là được rồi sau đó gõ số thôi chứ thêm % chi cho rườm rà, chỉ có bài này theo yêu cầu của chủ thớt thì chế cháo ra thêm chút thôi. Nếu nói về hiệu quả tính toán thì nó làm phức tạp thêm. :)
 
Web KT

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

Back
Top Bottom