Office: (Office 2010) DLookup ersetzen

Helfe beim Thema DLookup ersetzen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich würde gerne folgende Funktion in mein Projekt integrieren: Code: Function DLookup(Expression As String, Domain As String, Optional... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von u.gross, 4. September 2017.

  1. DLookup ersetzen


    Hallo,

    ich würde gerne folgende Funktion in mein Projekt integrieren:

    Code:
    Funktioniert auf den ersten Blick auch gut , ist aber nicht ganz identisch mit der Rückgabe, wenn die entsprechenden Abfragen Null ("") sind. Meine Abfragen lauten stellenweise:
    Code:
    Der Rückgabewert bei der oben gezeigten Funktion gibt hier kein Null mehr zurück. Wie könnte ich das anpassen?

    :)
     
  2. Dann lass' Dir im Direktbereich den Variablentyp so eines Ergebnisses einmal ausgeben. Code:
     
  3. In Deiner Funktion fehlt auf jeden Fall ein Test auf ein leeres Recordset, was ja durch eine Filterung immer entstehen könnte. Ohne einen vorhandenen Datensatz kann man auch keinen Feldwert zurückgeben, und theoretisch müsste da sogar ein Laufzeitfehler entstehen.

    Eine passende Ersatzfunktion wäre z.B.
    Code:
    Hier übergibt man statt Feld + Domäne + Kriterium gleich eine SQL-Anweisung und erspart sich intern die Zusammensetzerei, das zusätzliche Schreiben von SELECT, FROM und WHERE ist nun kein Zusatzaufwand, der Rest ist ja identisch. Zudem sollte das Schreiben einer SQL-Anweisung beherrschtes Handswerkszeug sein.
    Mit der passenden SQL-Anweisung hat man zudem gleich den Ersatz von DCount, DSum, DMax & Co.
     
  4. DLookup ersetzen

    Der ist natürlich vom Typ String
    Auch beim debuggen wird mir der String als "leer" angezeigt. und dennoch erfüllt er fälschlicherweise die Abfrage : If not isnull(DLookup...)
     
  5. Eberhard hat Recht. Nur einen Fehler würde ich für so eine Funktion nicht erzeugen, sondern eher Null ausgeben.
    Code:
    PS: ob die Ersatzfunktion heutzutage noch Vorteile gegenüber einem normalen DLookup bringt ist unklar - ich nutze eigentlich beides nicht.
     
  6. Man könnte auch zu dem Schluss kommen, dass man einen Denkfehler hat.

    Null ""

    Ein Variant mit einem LeerString unterscheidet sich von Null.
    Du müsstest also die Prüfung ändern.

    Da du ja nicht seit gestern erst mit der IT zu tun hast, lass ich dich mal selber etwas denken.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 6. September 2017
    #6
  7. Hallo u.gross
    evtl. auch was für Dich
    in meiner Doc s. Fusszeile unten Rechts
    ab Seite 234 bis 246
    9 Umgang mit NULL
     
    Lanz Rudolf, 6. September 2017
    #7
  8. DLookup ersetzen

    @Nouba
    Meinst Du das angesichts des Hardware-Fortschritts?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  9. Ob man die Ermittlung eines Einzelwertes aus einer Tabelle/Abfrage benötigt, muss man an seiner Aufgabenstellung festmachen.

    Vorteile der Ersatzfunktion gegenüber der Domänenaggregatfunktion:
    Ein (eigentlich vielbeschriebener) Perfomanceunterschied wird nicht messbar sein bei einer Einzelanwendung, und ein Dauerfeuer an Einzelabfragen wird man ja wohl nicht ohne Not anstellen.
    Ein Vorteil der von mir zitierten Funktion ist die Variabilität und Universalität: Man benötigt keine gespeicherte Abfrage als Domäne, sondern man kann innerhalb der anzugebenden SQL-Anweisung frei gestalten (JOIN's, Unterabfragen, Min/Max/Count, komplexere Kriterienkonstrukte). Mit der Hinzunahme einer DB-Referenz in den Argumenten kann man dann auch gleich mal in einer unverknüpften Texttabelle (CSV) oder Exceltabelle oder natürlich externen Datenbank(tabelle) nachschlagen.

    Das Schreiben einer SQL-Anweisung sollte zudem für einen DB-Entwickler keine besondere Herausforderung sein, in der einfachsten Verwendung vergleichbar zur Domänenaggregatfunktion schon gleich gar nicht:
    Code:
    Die Ähnlichkeit dürfte auffallen.
     
  10. Noch ein kleiner Vorteil einer solchen Funktion wie Eberhard sie aufzeigt:
    Ich arbeite oft ohne Verknüpfungen mit DAO oder ADO.
    In diesen Fällen hat man nur eine geringfügige Anpassung innerhalb einer einzigen Funktion. Abgesehen davon arbeite ich auch lieber mit einer richtigen SQL Anweisung, da tue ich mir leichter wie mit den DomänenFunktionen.
     
Thema:

DLookup ersetzen

Die Seite wird geladen...
  1. DLookup ersetzen - Similar Threads - DLookup ersetzen

  2. DLookup (Datum) bei Datum-Zeit

    in Microsoft Access Hilfe
    DLookup (Datum) bei Datum-Zeit: Moin, wenn ich Datensätze mit Datum im Datumsformat per DLookup auslese, funktioniert alles. Wenn die Datensätze auch noch eine Uhrzeit beinhalten, werden sie ignoriert. Muss man in die Kriterien...
  3. Mit DLookUp einen Wert aus einer Abfrage auslesen

    in Microsoft Access Hilfe
    Mit DLookUp einen Wert aus einer Abfrage auslesen: Hallo Forum, ich möchte mit Hilfe der DLookUp-Funktion einen Wert aus einer Abfrage in meinem Formular in einem Textfeld angezeigt bekommen. Die Kriterien sollen sich hierbei dynamisch an der...
  4. Dlookup- Probleme

    in Microsoft Access Hilfe
    Dlookup- Probleme: Hallo zusammen, ich habe Probleme mit der Dlookup-Methode. Beim Start der DB wird die Personalnummer ausgelesen und im Startformular in das Feld [Benutzer] eingetragen. Nun möchte ich das div....
  5. Problem bei der DLookup Funktion

    in Microsoft Access Hilfe
    Problem bei der DLookup Funktion: Hallo, ich habe ein Problem mit der DLooup Funktion und ich komme einfach nicht auf die Lösung. Ich habe eine Form mit einem Edit-Feld und einem Button. Nun soll ich beim Klicken den Inhalt in...
  6. Syntax DLookUp / DomWert mit Kriterium

    in Microsoft Access Hilfe
    Syntax DLookUp / DomWert mit Kriterium: Hallo Forum, ich scheitere gerade kläglich an einer DomWert-Abfrage, bei der sich das Kriterium auf ein berechnetes Textfeld im Formular bezieht:...
  7. Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!

    in Microsoft Access Hilfe
    Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!: Hallo, ich habe in meinem Code einige Dlookup-Funktionen eingebaut. Die sind natürlich nicht die schnellsten bei umfangreichen Datenmengen, wie das bei jetzt ist. Dann greifen die...
  8. DLookup-Funktion

    in Microsoft Access Tutorials
    DLookup-Funktion: DLookup-Funktion Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden