Office: (Office 2003) DomSumme und DomAnzahl bremsen aus

Helfe beim Thema DomSumme und DomAnzahl bremsen aus in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; DomSumme und DomAnzahl bremsen aus Ja, und das ist systembedingt. Erklärung: Eine Domänenaggregatfunktion holt genau einen Wert. Dabei ist sie eine... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von maine-coon, 9. August 2017.

  1. DomSumme und DomAnzahl bremsen aus


    Ja, und das ist systembedingt.

    Erklärung: Eine Domänenaggregatfunktion holt genau einen Wert. Dabei ist sie eine vollständige Abfrage, verpackt in eine Accessfunktion.
    Wenn man jetzt bspw. 14 Werte holt, entspricht das 14 einzelnen Abfragen. Das ist so, als wenn man 14 Flaschen Wasser benötigt und dazu für jede Flasche einzeln zum Getränkemarkt läuft. Solcher Aufwand addiert sich. Die oben vorgeschlagene Ersatzfunktion ändert daran nichts Wesentliches.

    Die Datenherkunft für die Domänenaggregatfunktion ist wie gezeigt selber eine Abfrage. Die muss dann auch jedesmal ausgeführt werden. Diese Abfrage enthält Schwächen: Die Sortierung ist für die Folgeabfrage unnütz, muss aber ausgeführt werden (Aufwand). Das formulierte Kriterium lässt keine Indexnutzung zu (verschenkte Performance). Um im verwendeten Bild fortzufahren: Der Getränkemarkt liegt nicht um die Ecke, sondern in einem anderen Stadtviertel.

    Wenn man nun 14-mal ins andere Stadtviertel läuft statt sich um die Ecke gleich einen ganzen Kasten Wasser zu schnappen, so braucht das eben Zeit, und es wäre verwunderlich, wenn man sich darüber wundert.
     
  2. Okay, hier nochmal in allen Einzelheiten mein Vorhaben.

    Meine Ausgangstabelle enthält derzeit ca. 31.000 Datensätze.
    Und ein Feld in dieser Tabelle heißt WERKZEUG.
    Ein weiteres Feld heißt MENGE und ein drittes Feld heißt UMSATZ.
    Hier mal ein Beispiel, was im Feld WERKZEUG drin steht.
    Fräser 76530 PKD Ø 14 x 2 xØ 16 x 92 Z= 2 TC SP

    Jetzt habe ich eine Abfrage genommen mit nur dieser einen Tabelle. Verknüpfungen brauche ich nicht.
    Als Filter nehme ich, wie schon zuvor beschrieben, diesen Super-Tipp hier und passe ihn für die anderen Bedingungen einfach an.
    Code:
    Zuerst habe ich die Ergebnisse der 14 Textfelder mit der Funktion DomSumme gehabt. Doch wie jetzt zuletzt von Eberhard beschrieben bremst das die DB total aus.
    Dann kam die Variante DomWert ins Spiel, die aber unwesentlich schneller ist.
    Also habe ich jetzt zuletzt 7 kleine Formulare, die nur die 2 Datenfelder aus der Abfrage haben nebeneinander in die Registerkarte gelegt.
    War ein bisschen Arbeit, aber jetzt klicke ich auf diese Registerkarte und die Werte sind sofort da.

    Vermutlich ist das auch noch nicht die Top-Lösung. Aber meine Access-Kenntnisse sind sehr bescheiden und von SQL verstehe ich fast gar nichts.
    Ich habe auch nicht vor mir jetzt die SQL Programmierung vorzunehmen. Dafür habe ich keine Zeit und ist diesen Aufwand für die kleine DB nicht wert.
    Daher bin ich froh darüber, wenn ich hier im Forum die eine, oder andere Lösung bekomme, auch wenn ich diese nicht so richtig verstehe.

    Gruß Achim
     
    maine-coon, 11. August 2017
    #17
  3. Ich hätte da nochmal eine wichtige Frage.
    Wird beim Weiterschalten zum nächsten DS immer die Berechnung aktiviert?

    Auch wenn es jetzt deutlich schneller läuft, bleibt ein kleiner " wie soll ich sagen, bremsender Beigeschmack" haften.
    Diese 7 Formulare in der einen Registerkarte rufe ich doch nicht ständig auf. Diese Werte ändern sich erst dann wieder, wenn ich Daten hinzufüge.

    Daher meine Frage. Kann man diese Berechnungen irgendwie vorübergehend deaktivieren?
    Oder vielleicht mit einem CommandButton die 7 Abfragen manuell aktualisieren?

    Gruß Achim
     
    maine-coon, 12. August 2017
    #18
  4. DomSumme und DomAnzahl bremsen aus

    Hier findest Du noch eine Ersatzlösung für Domänenaggregatfunktionen (IDBE Toolssammlung)
     
  5. Das kommt darauf an: Ist eine Berechnung im Steuerelementinhalt hinterlegt (ein DLookup wäre auch eine Berechnung), dann darfst Du damit rechnen. Ist das Formular an eine Abfrage gebunden, wird die Abfrage beim Laden des Formulars einmalig ausgeführt, die Textfelder zeigen dann nur Inhalte an.


    Siehe #16: Wenn man sich ein Paar gute Laufschuhe anzieht, kann man bei den 14 Läufen zum Getränkemarkt etwas besser laufen als in Straßenschuhen, ob das für eine wesentliche Verbesserung führt, mag jeder für sich beurteilen.

    Das einmalige Wasserholen (einzelne alles berechnende Abfrage) könnte etwa so aussehen:
    1) Anlegen einer Kriterientabelle
    Code:
    Mit dieser Tabelle kann man die verschiedenen Kriterien besser und vor allem auf einmal in die Abfrage einbringen. Außerdem lassen sich die Tabelleneinträge besser variieren und pflegen (über eine GUI auch durch Benutzer) als wenn sie hardcodiert in einer Anweisung stehen

    2) Einbindung der zusätzlichen Tabelle in eine Abfrage, die als Datenherkunft für ein einfaches gebundenes (Endlos)Formular dient:
    Code:
    Die Felder Werkzeug und Gruppe sollten indiziert sein (siehe Grundlagen - SQL ist leicht (8) - Index).

    Für eine richtige Lösung (noch performanter) würde man das Feld Werkzeug in atomare Informationen zerlegen. Dann könnte man auch da indiziert auf Gleichheit prüfen.
     
  6. Ich werde mal versuchen das alles zu verarbeiten.
    Vielleicht gelingt es mir ja.

    Vielen Dank auf jeden Fall..
    Gruß Achim
     
    maine-coon, 12. August 2017
    #21
  7. Code:
    ... muss natürlich heißen:
    Code:
    Der deklarierte Tabellenalias muss natürlich mit dem verwendeten übereinstimmen.
     
  8. DomSumme und DomAnzahl bremsen aus

    Warum Like und mit 2 Sternen ?
    PKD und CVD sind doch feststehende Bezeichnungen für eine Gruppe und nicht Wortteil eines Begriffs ??
    also:
    Code:
    oder heißt das etwa dass die komplette Werkzeugbeschreibung so in einem Feld steht ??? Hilfe!
     
    fredfred, 13. August 2017
    #23
  9. Hallo,
    ja, das heißt es. Siehe seine Erklärung in #17 und der Hinweis von Eberhard in #20, letzter Absatz.
     
    gpswanderer, 13. August 2017
    #24
  10. Hallo liebe Experten von Datenbanken.
    Ich habe eine Menge rumgetestet und probiert.
    Aber im Grunde genommen habe ich nichts hinbekommen.
    Ich habe meine 11 Abfragen, die alle nach oben beschriebenen Aufbau
    zwar immer noch beibehalten, aber nicht mehr im Gebrauch, weil die DB total ausgebremst wird.
    Ich habe die Abfrage als Datenherkunft für ein kleines Formular genommen.
    In einer Registerkarte habe ich dann diese 11 kleinen Formulare eingesetzt.
    Starte ich die DB braucht es fast 20 Sekunden, bis das Hauptformular da ist.
    Filtere ich etwas im Hauptformular, läuft sofort die Eieruhr...

    Als ich die 11 kleinen Formulare wieder löschte, startete die DB ins Hauptformular innerhalb 3 Sekunden.

    Auf einen Nenner gebracht: Das, was ich hier mit meinem Verständnis gebastelt habe, ist absoluter Mist.

    Jetzt kam mir eine neue Idee.
    Ich nehme ein Kombinationsfeld und lese hier diese 11 Abfragen ein.
    Und wenn ich von einer der 11 Abfragen mal die Zahlen wissen will, brauche ich die nur aufrufen und wieder schließen.

    Daher meine Frage:
    Wie lese ich die 11 Abfragen als Auswahl in dieses Kombinationsfeld ein?
     
    maine-coon, 13. September 2017
    #25
  11. D.h. Hinweise bzgl. Abfragetechnik sind umsonst ...?

    Ansonsten: Ob großes Formular, ob kleines Formular oder Kombinationsfeld - die Datenherkünfte werden beim Formularöffnen geladen. Wenn dann 11 sind und diese ungünstig gestaltet sind, dann summiert sich das in benötigte Zeit.
     
  12. Kann ich mich da mit einhängen.

    Ich hätte gern die Summe gebildet über

    Code:
    Nun muss ich die Summe über alle bilden. Wenn ich da 50 Einträge habe, sieht das nicht schön aus und ich glaube es geht bestimmt auch eleganter.

    Danke für eure Antworten

    Haxnwirt
     
  13. DomSumme und DomAnzahl bremsen aus

    Fünfzigmal DSum verwendet in einem Arbeitsgang?
    Es ist immer wieder schön, wenn Hinweise gelesen und verstanden werden: Hier im Thread
    So könnte eine (richtige) Abfrage aussehen:
    Code:
    Deren Ergebnis muss man dann nur passend visualisieren => Formular oder Listenfeld statt ...zig Einzelfelder.
    Das nachfolgende Summieren über alles bzw. das sofortige Summieren (Verzicht auf Gruppierung) sollte übersichtlich lösbar sein.

    Dem Rätsel, warum man zur Ermittlung von Anzahlen summiert, bin ich nicht extra nachgegangen.
     
  14. Alles bleibt anders.
    Ich habe jetzt eine Tabelle erstellt, in der alle meine Abfragen aufgelistet sind.
    Das Kombinationsfeld liest diese Werte ein.
    Nach Auswahl eines der Elemente öffnet sich das Formular und zeigt mir die Werte an, die aus der Abfrage kommen.
    Dadurch habe ich erreicht, dass meine DB nicht mehr ausgebremst wird, weil ja nur 1 Formular statt wie zuvor 11 mit Werten gefüllt wird.
    Das ist die Abfrage
    Code:
    Mit dem Ereignis öffnet sich das Formular:
    Code:
    Die Werte werden angezeigt.
    Ich habe in diesem Formular eine TextBox eingebaut, die den aktuellen Text des Kombinationsfeld bekommen soll. Das Feld heißt "Statistik_For".
    Aber ich erhalte immer nur Fehlermeldungen.

    Ich habe auch mal versucht die TextBox gegen ein Bezeichnerfeld zu tauschen und dann mit Me.Statistik_For.Caption = kfd_Statistik.column(1) den Text zu übertragen...
    Kurz gesagt...Fehler..Fehler...Fehler... Objekt nicht gefunden, oder Nicht Optional......

    Kann mir jemand sagen wie die VBA Zeile aussehen muss, damit entweder ein Bezeichnerfeld, oder eine TextBox den Text des gewählten Wert aus dem Kombinationsfeld zu übergeben?
    Danke
     
    maine-coon, 13. September 2017
    #29
  15. Solange Du diese für Dich behälst kannst Du nicht auf Hilfe hoffen.
     
Thema:

DomSumme und DomAnzahl bremsen aus

Die Seite wird geladen...
  1. DomSumme und DomAnzahl bremsen aus - Similar Threads - DomSumme DomAnzahl bremsen

  2. DOMAnzahl in einem Bericht

    in Microsoft Access Hilfe
    DOMAnzahl in einem Bericht: Hey Ihr Lieben, kurze Frage zu dem Ausdruck "DOMAnzahl". Ich habe eine Abfrage erstellt. Spalte 1: Autos Spalte 2: Farbe (Rot, grün, gelb) Spalte 3: Dokumentationsdatum Auf dieser Basis...
  3. Zwischensummen

    in Microsoft Access Hilfe
    Zwischensummen: Hallo zusammen, ich möchte aus dieser Tabelle ermitteln, wie lange welche Person in welchem Land war. Dabei müssen eventuell mehrere Aufenthalte im gleichen Land zusammengefasst werden. Und es...
  4. DomAnzahl zwei Kriterien -Zeichensetzung - brauche kurz Hilfe

    in Microsoft Access Hilfe
    DomAnzahl zwei Kriterien -Zeichensetzung - brauche kurz Hilfe: Hallo zusammen, ich weiß es gibt diverse Einträge zur DomAnzahl mit zwei Kriterien, aber ich krieg das mit der Zeichensetzung nicht hin und in einer Accessabfrage kommt ja nur der sehr hilfreiche...
  5. DomAnzahl mit zwei Kriterien

    in Microsoft Access Hilfe
    DomAnzahl mit zwei Kriterien: Hallo Ihr lieben Experten, ich weiß, dass dieses Thema schonmal besprochen wurde. Nachdem ich nun aber zig Varianten ausprobiert habe und nichts davon funktioniert, bitte ich hier nochmals um...
  6. DomSumme() in Abfrage

    in Microsoft Access Hilfe
    DomSumme() in Abfrage: Guten Morgen zusammen, ich habe folgende Funktion in die Abfrage "qry_Krankheitszeiten" eingebaut: Summierung: DomSumme("Tage_AUAttest";"qry_Krankheitszeiten";"[ID]=" & [ID] & " AND...
  7. Problem mit DomSumme und doCmd.TransferDatabase

    in Microsoft Access Hilfe
    Problem mit DomSumme und doCmd.TransferDatabase: Hallo alle zusammen, ich habe jetzt WIN 7 und Access 2007 installiert. Die Datenbank, die auf Access 2003 und Win XP schon jahrelang läuft, macht in Access 2007 mit Win 7 mindestens 2 Probleme....
  8. DSum-Funktion (DomSumme)

    in Microsoft Access Tutorials
    DSum-Funktion (DomSumme): DSum-Funktion (DomSumme) 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