Die Ausführung von jedem wird nahezu identisch sein, außer in außergewöhnlich großen Iterationen.
In Abfragen - es gibt ein paar Probleme, die ich denke, die auffallen. Für mich sind das der zurückgegebene Datentyp und der native Status der Funktion.
Sofortige Wenn der Datentyp beibehalten wird. Nicht nur das - Sie können es verwenden, um den Datentyp zu erzwingen. Wenn Sie eine Ganzzahl zurück oder ein Datum möchten, können Sie das als Ihren zurückgebenden Parameter übergeben. Nz gibt dir die Variante (Text/String), die es zurückgeben möchte.
Das andere Problem, das ich erwähnte, ist Verfügbarkeit. Das Immediate If wird von Jets Ausdrucksdienst implementiert. Die vollständige Access VBA-Bibliothek muss nicht geladen werden, um sie verfügbar zu machen.
Mit anderen Worten - wenn Sie eine Abfrage erstellen, wie
SELECT * FROM TableName WHERE IIF(FieldName Is Null, 0, FieldName) = 0
dann können Sie diese Abfrage ausführen von Code externen Bibliotheken für den Zugriff auf (keine Access-Verbindung erfordern).
Jet wird die Funktion auswerten. (Nicht, dass dies eine besonders gute Frage ist - es ist wirklich schrecklich mit beiden Funktionen).
Die äquivalente
SELECT * FROM TableName WHERE Nz(FieldName, 0) = 0
beruht auf der Tatsache, dass Nz Mitglied des Access Application Objektmodell ist. Es erfordert unbedingt, dass es Access ist, der die Abfrage ausführt. Nicht unbedingt ein gemeinsames Problem, sondern eine Überlegung.
Sie dienen verschiedenen Zwecken, also führen Sie Tests basierend auf Ihren tatsächlichen Daten aus. Außerdem ist Nz nur in Access VBA vorhanden. – Gustav