Hàm IIf

Áp dụng cho
Access cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Trả về một trong hai phần, tùy thuộc vào kết quả đánh giá một biểu thức.

Bạn có thể sử dụng IIf bất cứ nơi nào mà bạn có thể sử dụng biểu thức. Dùng để IIf xác định xem một biểu thức khác đúng hay sai. Nếu biểu thức đúng, trả về IIf một giá trị. Nếu sai, trả về một IIf giá trị khác. Bạn chỉ định các giá trị trả IIf về.

Xem một số ví dụ

Cú pháp

IIf(expr, truepart, falsepart)

IIf pháp hàm có các đối số sau đây:

Đối số Mô tả
expr Bắt buộc. Biểu thức mà bạn muốn đánh giá.
truepart Bắt buộc. Giá trị hoặc biểu thức được trả về nếu exprTrue.
falsepart Bắt buộc. Giá trị hoặc biểu thức được trả về nếu exprFalse.

Chú thích

IIf luôn đánh giá cả hai và truepartfalsepart, mặc dù nó chỉ trả về một trong số chúng. Do hiện tượng này, hãy theo dõi tác dụng phụ không mong muốn. Ví dụ, nếu đánh giá falsepart kết quả trong lỗi chia theo số không, lỗi xảy ra ngay cả khi sai exprTruesố .

Ví dụ

Sử dụng IIf trên biểu mẫu hoặc báo cáo

Giả sử bạn có một bảng Customers có chứa một trường có tên CountryRegionlà . Trong biểu mẫu, bạn muốn hiển thị liệu tiếng Ý có phải là ngôn ngữ đầu tiên của liên hệ hay không. Bạn có thể thêm điều khiển và sử dụng trong IIf thuộc tính của điều Control Source khiển đó:

=IIf([CountryRegion]="Italy", "Italian", "Some other language")

Khi bạn mở biểu mẫu trong Dạng xem Biểu mẫu, điều khiển sẽ hiển thị Italian bất cứ khi nào giá trị CountryRegion cho là Italy. Nó hiển thị bất Some other language cứ khi CountryRegion nào có bất kỳ giá trị nào khác.

Sử dụng IIf trong các biểu thức phức tạp

Bạn có thể sử dụng bất kỳ biểu thức nào trong bất kỳ phần nào của câu IIf lệnh. Bạn cũng có thể lồng IIf biểu thức, cho phép bạn đánh giá một loạt các biểu thức phụ thuộc. Để tiếp tục với ví dụ trên, bạn có thể CountryRegion muốn kiểm tra một vài giá trị khác nhau, rồi hiển thị ngôn ngữ thích hợp dựa trên giá trị đó:

=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))

Văn bản Some other language là đối số falsepart của hàm trong cùng IIf . Vì mỗi hàm được lồng IIf vào là IIffalsepart đối số của hàm có chứa nó nên IIfSome other languageexpr văn bản chỉ được trả về nếu tất cả các đối số của các hàm định trị là .False

Ví dụ khác, giả sử bạn làm việc tại thư viện. Cơ sở dữ liệu thư viện có một bảng được Check Outs đặt tên chứa Due Datemột trường có tên , trong đó chứa ngày một cuốn sách cụ thể đến hạn trở lại. Bạn có thể tạo biểu mẫu IIf hiển thị trạng thái của mục đã kiểm xuất trong điều khiển bằng cách sử dụng hàm trong thuộc tính của điều Control Source khiển đó:

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))

Khi bạn mở biểu mẫu trong Dạng xem Biểu mẫu,OVERDUEDue Date điều khiển sẽ hiển thị nếu giá trị của nhỏ hơn ngày hiện tại, Due todayNot Yet Due nếu giá trị đó bằng ngày hiện tại và nếu khác.

Lưu ý

Để sử dụng các toán tử lô-gic AndIIfOrexpr như hoặc trong đối số của hàm, bạn phải đặt biểu thức lô-gic trong hàm Eval. Xem bảng ví dụ sau đây.

Sử dụng IIf trong truy vấn

Hàm này IIf thường được sử dụng để tạo các trường được tính toán trong truy vấn. Cú pháp cũng giống nhau, ngoại trừ việc trong truy vấn, bạn phải bắt đầu biểu thức bằng biệt danh trường và dấu hai chấm (:) thay vì dấu bằng (=). Để sử dụng ví dụ trước, hãy nhập nội dung sau vào hàng Trường của lưới thiết kế truy vấn:

Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")

Trong trường hợp này, Language: là biệt danh trường.

Để biết thêm thông tin về cách tạo truy vấn và trường được tính toán, hãy xem Tạo truy vấn chọn đơn giản.

Sử IIf dụng trong mã VBA

Lưu ý

Các ví dụ sau đây cho thấy cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA). Để biết thêm thông tin về cách làm việc với VBA, hãy chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống bên cạnh Tìm kiếm, rồi nhập một hoặc nhiều thuật ngữ vào hộp tìm kiếm.

Ví dụ này sử dụng IIf hàm để đánh TestMeCheckItLarge giá tham số của quy trình và trả về từ nếu số tiền lớn hơn 1000. Nếu không, nó sẽ trả về từ Small.

Function CheckIt(TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

Các ví dụ khác

  1. Expression:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    Kết quả: Nếu [AirportCode]"ORD", trả về "Chicago". Nếu không, nếu là [AirportCode]"ATL", trả về "Atlanta". Nếu không, nếu là [AirportCode]"SEA", trả về "Seattle". Nếu không, trả về "Other".

  2. Expression:

    =IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
    

    Kết quả: Nếu [ShipDate] sớm hơn ngày hôm nay, trả về "Shipped". Nếu không, nếu [ShipDate] bằng ngày hôm nay, trả về "Shipping today". Nếu không, trả về "Unshipped".

  3. Expression:

    =IIf([PurchaseDate]<#1/1/2008#,"Old","New")
    

    Kết quả: Nếu [PurchaseDate] sớm hơn 1/1/2008, trả về "Old". Nếu không, trả về "New".

  4. Expression:

    =IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")
    

    Kết quả: Nếu [Volts] từ 12 đến 15 [Amps] và nằm trong khoảng từ 0,25 đến 0,3, trả về "OK". Nếu không, trả về "Out of calibration".

  5. Expression:

    =IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")
    

    Kết quả: Nếu [CountryRegion]"Canada", "USA"hoặc "Mexico", trả về "North America". Nếu không, trả về "Other".

  6. Expression:

    =IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))
    

    Kết quả: Nếu [Average] là 90 hoặc lớn hơn, trả về "A". Nếu không, nếu [Average] từ 80 trở lên, trả về "B". Nếu không, nếu [Average] là 70 hoặc lớn hơn, trả về "C". Nếu không, nếu [Average] từ 60 trở lên, trả về "D". Nếu không, trả về "F".

Lưu ý

Nếu bạn đang sử dụng hàm IIf để tạo trường được tính toán trong truy vấn, hãy thay dấu bằng (=) bằng biệt danh trường và dấu hai chấm (:). Ví dụ: Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).