Office: Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!

Helfe beim Thema Dlookup-Funktionen ersetzen! Alles soll schneller werden!!! in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe in meinem Code einige Dlookup-Funktionen eingebaut. Die sind natürlich nicht die schnellsten bei umfangreichen Datenmengen, wie das bei... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von martiniz, 10. Februar 2004.

  1. 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 Dlookup-Funktionen auch noch auf einen Unionselect zu. Mein BE liegt auf dem Server. Ich habe mir noch als letzte offizielle Amtshandlung an der DB vorgenommen, diesen Umstand zu verbessern.

    Bisher sieht der Code so aus:
    Code:
    wie kann ich das ganze schneller und perfomanter machen?

    :)
     
    martiniz, 10. Februar 2004
    #1
  2. Na ja - das muss man vermutlich in einem größeren Zusammenhang betrachten - die isolierte Betrachtung dieser einen Funktion bringt da nicht sonderlich viel...

    Wie man so schön sagt: Der Fisch stinkt vom Kopf...

    Das geht schon mit deiner magischen UNION-Abfrage los - 95 % aller UNIONs haben meiner Erfahrung nach ihre Begründung in einer unzulänglichen Tabellenstruktur ("Aschenputtel-Design").

    Dann kann man natürlich einiges auf den Server (welchen Server überhaupt?) verlagern in Form von Views oder Stored Procedures.

    Und wenn es darum geht, Werte aus der einen Tabelle zu einer anderen zu gesellen, dann bieten sich JOINS anstelle von einzeln aufgerufenen DLookups an - es kommt also auch sehr darauf an, wie und wofür du jetzt deine Funktion verwendest.
     
    Reinhard Kraasch, 11. Februar 2004
    #2
  3. Reinhard sagt's schon... Sehr schwammige Beschreibung...

    Mein Ansatz wäre:
    Programmiert dir einen Ersatz für die DLookup-Funktion!
    Code:
     
    Kreezer, 11. Februar 2004
    #3
  4. Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!

    Hi martiniz,

    wäre jetzt mal schön zu wissen, ob Du Deine Artikelnummer in einem TextFeld frei eingibst oder in einer ComboBox auswählst.

    Wenn es sich nur um mit UNION zusammengefasste unterschiedliche Artikeltabellen handelt, könntest Du testen, jede dieser Tabellen einzeln mit Seek abzufragen.
     
    Johnny Loser, 11. Februar 2004
    #4
  5. Indessen finde ich die Frage nach einem Ersatz der D-Funktionen ganz und gar nicht abwegig. Die sind IMHO einfach schlecht von MS programmiert. (Es will mir nicht einleuchten, warum man für eine Filterfunktion die gesamte Tabelle als Snapshot laden muss.)

    In diesem Thread (relativ weit hinten) ist das Thema schon mal behandelt worden:

    http://www.ms-office-forum.net/forum...threadid=74162

    Ciao, Sascha
     
    Sascha Trowitzsch, 11. Februar 2004
    #5
  6. \@Sascha:

    Kleine Verständnisfrage zu Deinem tollen Beispiel im Link (habs mir geklaut *biggrin.gif* *biggrin.gif* :

    Code:
    Müsste die markierte Zeile nicht Code:
    lauten?
     
  7. Logo! Schön mitgedacht ! *wink.gif* *biggrin.gif*
     
    Sascha Trowitzsch, 11. Februar 2004
    #7
  8. Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!

    Hier ist ja ganz schön was los *biggrin.gif* Kaum schaut man mal 2 Std nicht rein! *biggrin.gif*

    @Reinhard:
    Bleibt mir leider nichts anderes übrig, weil ich an eine feste Datenstruktur gebunden bin. Daten werden per Job aus AS400 überspielt.

    @All:
    Sorry, für die dünne Beschreibung! ich verwende den UNION um Daten in ein Kombifeld zu bekommen. Den gleichen UNION verwende ich dann noch um den Preis dazu rauszusuchen! das formular ist aber an eine völlig andere Tabelle gebunden.
    Ich erfasse mit der DB Projekte. Die Artikelnummern, Preise und Bezeichnungen werden aus der AS400 überspielt. Die Projekte werden in anderen Tabellen gespeichert.
    Stammtabelle = Projektdaten (Projektname, Anfragedatum, ...)
    Detailtabelle = Projektdetails ( Artikelname, Nr, Menge, Preise, Deckungbeiträge, ...
    Verknüpft über 1:n

    mit der D-Funktion schlage ich in der Originalartikeltabelle die Preise nach. der UNION setzt sich aus Artikeltabelle und einer Tabelle zusammen, die die Artikel enthält, die noch nicht im AS400-System enthalten sind. Das deswegen, weil wir viel Kundenspezifische Anfragen haben.
     
    martiniz, 11. Februar 2004
    #8
  9. Man müsste sich die gesamte Ablaufstruktur mal ansehen...

    Wenn z.B. die DLookups in einer Schleife aufgerufen werden, ist es effizienter, einen Recordset nur einmal vor Beginn der Schleife zu öffnen und dann darin zu suchen.

    Auch dürfte es effizienter sein, anstelle in der UNION zu suchen, 2 Recordsets auf die Tabellen zu öffnen, und darin mit Seek zu suchen. (Und dann in der erfolgversprechenderen Tabelle zuerst und in der anderen nur dann, wenn man in der ersten nichts gefunden hat usw.)

    Es kann auch durchaus sein, dass man mit einer lokalen Kopie der AS400-Tabelle besser fährt - ich weiss ja nicht, wie aktuell die Daten sein müssen, wie das Volumen ist - und wieviel du an Geschwindigkeit herausholen willst bzw. musst...
     
    Reinhard Kraasch, 11. Februar 2004
    #9
  10. Hallo,
    ich sag mal das Datenvolumen bewegt sich so um die rund 10.000 Datensätze.
    Lokale kopie von AS400 mach ich im prinzip ja schon. ich kopiere mir die daten in eine accesstabelle. ich bin halt nur an die struktur dieser Tab gebunden. Allerdings finde ich die idee mit dem seek erst auf die eine dann auf die andere originaltab nicht schlecht.

    Hier nochmal der ganze code! Das eigentliche problem ist halt nur, dass ich halt 6 D-Funktionen hintereinander ausführe. Das kostet halt Performation:

    Code:
     
    martiniz, 12. Februar 2004
    #10
  11. Wenn du ohnehin die Daten in eine lokale Tabelle kopierst, verstehe ich den Ansatz mit der UNION nicht - warum kopierst du nicht beide Tabellen (AS/400 und Ergänzungstabelle) per Anfügeabfrage in eine Tabelle?

    Ansonsten ist das ganze ja schon von vornherein so angelegt, dass man eigentlich gar nicht mit DLookup arbeitet - du willst ja mehrere verschiedene Felder aus einer Tabelle/Abfrage holen - dafür geht man eigentlich immer den Weg über einen Recordset!

    Ach so - und dann noch:
     
    Reinhard Kraasch, 12. Februar 2004
    #11
  12. Hallo Reinhard,

    hab ich gar nicht gesehen. Danke. Weiß ich eigentlich. sowas nennt man wohl gedankenlosigkeit! *frown.gif*

    Das frage ich mich auch gerade *confused.gif*

    Ich habe gute ideen bekommen. will jetzt aber nicht die gesamte strukur umstellen. ich werde jetzt wohl mit den columns arbeiten! *tongue.gif*

    Werde mal alles testen und poste euch dann was daraus geworden ist.
     
    martiniz, 12. Februar 2004
    #12
Thema:

Dlookup-Funktionen ersetzen! Alles soll schneller werden!!!

Die Seite wird geladen...
  1. Dlookup-Funktionen ersetzen! Alles soll schneller werden!!! - Similar Threads - Dlookup Funktionen 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 ersetzen

    in Microsoft Access Hilfe
    DLookup ersetzen: Hallo, ich würde gerne folgende Funktion in mein Projekt integrieren: Code: Function DLookup(Expression As String, Domain As String, Optional Criteria) As Variant Dim strSQL As String '...
  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