PDA

View Full Version : Hàm IIF(express1, true,fase)



gust2012
27-02-2011, 22:54
IIf(Len(txtFolCreate.Text.Trim())>0, MessageBox.Show("Mot", "Chu y"), MessageBox.Show("Hai", "Chu y"))

khi mình thực thi hàm trên nếu txtFolCreate (textBox) có nhập liệu thì đáng lẻ nó chỉ hiện thông báo "Mot" thì thôi nhưng không hiểu sao nó lại thông baó luôn là "Hai" bạn nào giải thích giúp được không.


Thanks nhiều !
Thân !

AnhTuanKB
27-02-2011, 23:15
Đây là 1 lỗi về hàm iff mà nhiều lập trình viên lâu năm cũng hay gặp, do đó nên hàm iff ít khi được sử dụng.
Nguyên tắc là trong hàm iff nó có 3 tham số, tham số đầu tiên là 1 logical expression, thứ 2 và thứ 3 là 1 expression trả về giá trị. Hai expression thứ 2 và 3 sẽ LUÔN được thực thi, nhưng tùy theo logical expression đúng hay sai mà hiển thị giá trị của tham số nào.
Khi dùng hàm iff người ta hay ỷ y là nó chỉ thực thi 1 trong 2 tham số, cái còn lại thường không quan tâm, do đó có thể tuyền vào hàm có tham số null, vd như:
iif (type='hop dong', ctype(luong,int), ctype(phucap,int) )
Trong trường hợp này nếu luong là null hoac phucap la null cung deu se gay ra loi. Do đó khi dùng hàm này bạn nên lưu ý điều này.

thanhdanhsoft
06-03-2011, 09:03
Giải thích rất chi tiết.Đây gọi lại thực tiển đó bạn, làm nhiều tự khắc sẽ có những kinh nghiệm đó àh