Access
 sql >> Baza danych >  >> RDS >> Access

Funkcja IIf() a instrukcja IIf()

IIf() funkcja i IIf() oświadczenie to zasadniczo różne zwierzęta.

Niestety są prawie niemożliwe do odróżnienia. A jednak ważne jest, aby móc to zrobić. Czemu?

Ponieważ ta IIf() funkcja to błąd wykonania, który czeka na wystąpienie:

IIf(Attempts = 0, 0, Successes / Attempts)

Podczas gdy to IIf() instrukcja bezpiecznie zwróci wartość, nawet jeśli Attempts = 0 :

IIf(Attempts = 0, 0, Successes / Attempts)

Czy potrafisz dostrzec różnicę między nimi?

Rozmawianie z nimi

Jeśli nie możesz dostrzec różnicy między dwiema powyższymi próbkami, to dlatego, że nie ma różnicy.

IIf() funkcja wygląda identycznie jak IIf() oświadczenie.

Różnica polega na tym, jak – a dokładniej gdzie– są oceniane.

  • Funkcja IIf jest członkiem standardowej biblioteki VBA.Interaction.
  • Oświadczenie IIf jest oceniany przez usługę Expression Service silnika bazy danych Jet/ACE (acees.dll).

O różnicach między kodem a wyrażeniami pisałem tutaj:

Wyrażenia a kodKiedy kod nie jest kodem? Kiedy jest to ekspresja. Jaka jest różnica i kogo to obchodzi? Odkryjmy. Nie można już ustawićMike Wolfe

Podstawowa różnica między funkcją IIf() a instrukcją IIf()

Trzy słowa:ocena zwarcia.

  • Oświadczenie IIf ma to.
  • Funkcja IIf nie.

Co to jest ocena zwarcia?

W ocenie zwarcia kod ocenia tylko te wyrażenia, które są niezbędne do określenia wyniku.

Instrukcja IIf i funkcja IIf przyjmują trzy argumenty:

  • wyrażenie: warunek logiczny
  • truepart: wynik do zwrócenia, jeśli expr to prawda
  • falsepart: wynik do zwrócenia, jeśli expr jest fałszywe

W przypadku wyrażenia IIf tylko dwa z tych argumentów są zawsze oceniane:wyraż i – w zależności od wyniku expr– albo truepart LUB falsepart .

W przypadku funkcji IIf wszystkie trzy argumenty MUSZĄ zostać ocenione, zanim zostaną przekazane do funkcji.

Dlaczego to ma znaczenie

Wróćmy do oryginalnego przykładowego kodu:

IIf(Attempts = 0, 0, Successes / Attempts)

Co się stanie, jeśli wartość Próby jest zero?

IIf oświadczenie

  • wyraż ocenia na Prawda.
  • Prawdziwa część ocenia do 0 .
  • Oświadczenie zwraca 0 .

IIf funkcja

  • wyraż ocenia na Prawda.
  • Prawdziwa część ocenia do 0 .
  • falsepart oblicza #ERROR#:dzielenie przez zero

funkcja wersja zwraca błąd, ponieważ została zmuszona do oceny obu truepart i falsepart wyrażenia.

Gdzie jest IIf Traktowany jako oświadczenie?

IIf jest oceniany jako oświadczenie w następujących miejscach:

  • Zapytania
  • Właściwości formularza/raportu/kontroli (np. TextBox ControlSource)
  • Funkcja Access Application.Eval()

Aby uzyskać więcej informacji, w tym jak ostatecznie sprawdzić, czy IIf jest traktowany jako instrukcja lub funkcja – przeczytaj mój artykuł o różnicach między wyrażeniami a kodem:Wyrażenia a kod .

Odniesienia zewnętrzne

Funkcja IIf (Visual Basic for Applications) Temat dotyczący pakietu Office VBAMicrosoft Docso365devx
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nasze nagrywanie sesji Microsoft Ignite jest już dostępne do obejrzenia!

  2. 6 powodów, dla których Microsoft Access może pomóc Twojej firmie

  3. Parametry ciągu połączenia dla źródeł danych Excel

  4. 5 powodów, dla których potrzebujesz dobrej bazy danych

  5. Jak przekonwertować zwykłe zapytanie na zapytanie krzyżowe w programie Access