MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Microsoft Access (https://www.ms-office-forum.net/forum/forumdisplay.php?f=60)
-   -   DomSumme und DomAnzahl bremsen aus (https://www.ms-office-forum.net/forum/showthread.php?t=345000)

maine-coon 11.08.2017 15:29

DomSumme und DomAnzahl bremsen aus
 
Diese Art der Berechnungen bremst die DB ganz schön aus.
Das hier ist die Abfrage
Code:

SELECT Werkzeug_Artikel.Artikel, Werkzeug_Artikel.Werkzeug, Werkzeug_Artikel.Menge, Werkzeug_Artikel.Umsatz, Werkzeug_Artikel.Jahr
FROM Werkzeug_Artikel
WHERE (((Werkzeug_Artikel.Werkzeug) Like "*PKD*" Or (Werkzeug_Artikel.Werkzeug) Like "*CVD*"
ORDER BY Werkzeug_Artikel.Werkzeug;

Und in einem Formular stehen Textfelder mit
Code:

=DomSumme("Menge";"Werkzeug PKD_CVD")
Code:

=DomSumme("Umsatz";"Werkzeug PKD_CVD")
Es gibt bestimmt eine schnellere Methode der Berechnung.
Ich vermute mal, dass diese DOMxxxx Funktion grundsätzlich keine gute Methode ist etwas zu summieren.
Würde mir jemand sagen was besser und schneller läuft?

Gruß Achim

TommyK 11.08.2017 15:55

Hallo Achim,

Zitat:

Es gibt bestimmt eine schnellere Methode der Berechnung.
Ich vermute mal, dass diese DOMxxxx Funktion grundsätzlich keine gute Methode ist etwas zu summieren.
Ja, das hast Du Recht.
Hier findest Du einen Ersatz:
Domänenfunktionen-Ersatz

gpswanderer 11.08.2017 16:00

Hallo,
wenn man in der vorhandenen Abfrage für Menge und Umsatz die Summierung in den Funktion einstellt, hat man doch alles was man braucht, völlig ohne DomSumme.

Einschränkung: Wenn ich mich nicht irre. :grins:

maine-coon 11.08.2017 16:16

Diese Ersatzmöglichkeiten sind bestimmt toll, aber da muss ich passen, weil ich davon keinen Plan habe.
Das geht weit über meine Kenntnisse hinaus.

Die Summenfunktion in der normalen Abfrage bringt keine Summe....

gpswanderer 11.08.2017 16:22

Hallo,
meiner Meinung sollte diese Abfrage direkt zu den beiden gesuchten Summen führen.
Code:

SELECT  Sum(Menge)  AS SummevonMenge,
        Sum(Umsatz) AS SummevonUmsatz
        FROM Werkzeug_Artikel
        WHERE Werkzeug
        LIKE "*PKD*"
        OR Werkzeug
        LIKE "*CVD*"

PS:
Die Notwendigkeit der Joker (*) in der Where Klausel deuten auf ein nicht normalisiertes Datenmodell hin. Bei korrektem Aufbau sollten nur die Schlüsselzahlen zu PKD und CVD in diesem Feld stehen.

fraeser 11.08.2017 16:25

Zitat:

Die Summenfunktion in der normalen Abfrage bringt keine Summe....
Wie sieht denn Deine Abfrage mit den Summen aus?
Gehe davon aus, die gezeigte Abfrage ist die Datenherkunft des Formulars!?

maine-coon 11.08.2017 16:31

Ja, stimmt.
Hatte wieder was falsch gemacht.....

Vielen Dank. Jetzt läuft das wesentlich schneller....
Schönes Weekend...

maine-coon 11.08.2017 16:52

Mal wieder zu früh geantwortet und als Erledigt deklariert.

Ich habe versucht mit Hilfe des Ausdrucksgenerators die richtige Formel da einzufügen.
Jedes Mal erhalte ich anstatt eines Werts #Name?

Wie muss denn die Formel im Textfeld für Steuerelementinhalt von der Syntax her aussehen, damit dort der Wert der Abfrage erscheint?

maikek 11.08.2017 17:12

Die Abfrage muss Datenherkunft des Formulars sein. Und das Formularfeld bekommt als Steuerelementinhalt einfach das entsprechende Feld der Abfrage. Formeln braucht es da keine.
maike

maine-coon 11.08.2017 17:49

Dann kann ich das wohl vergessen.
Ich habe 7 Abfragen erstellt. Alle nach dem Prinzip wie hier gezeigt.
Code:

SELECT  Sum(Menge)  AS SummevonMenge,
        Sum(Umsatz) AS SummevonUmsatz
        FROM Werkzeug_Artikel
        WHERE Werkzeug
        LIKE "*PKD*"
        OR Werkzeug
        LIKE "*CVD*"

Der Unterschied bei diesen Abfragen ist immer nur das Filterkriterium.

Wenn ich ein Formular erstellen will, das diese 7 Abfragen beinhaltet, bekomme ich die Meldung, dass der Assistent die Felder nicht verbinden kann...

Bleibt wohl nur noch die Möglichkeit, dass ich 7 einzelne Formulare erstelle und diese dann in die Registerkarte einbaue.

gpswanderer 11.08.2017 18:03

Hallo,
Du kannst die Werte mit DomWert aus den Abfragen holen.

Code:

=Domwert("SummevonMenge";"Abfrage1")
Und dann sinngemäß für die anderen Felder/Abfragen.


Womit wir dann wieder beim Datenmodell wären. Bei einem korrekten Datenmodell könnte man nach dem Feld "Werkzeug" gruppieren und hätte eine einzige Abfrage für ein Formular.

maine-coon 11.08.2017 18:24

DomWert ist auch nicht viel schneller.

Ich werde dann die 7 Abfragen für 7 kleine Formulare in die Registerkarte einbauen.... Bisschen Arbeit, aber dafür sind die Berechnungen deutlich schneller.

Ich danke allen Experten für die vielen Tipps und wünsche ein schönes Weekend....auch wenn es regnet...

gpswanderer 11.08.2017 18:30

Hallo,
Zitat:

DomWert ist auch nicht viel schneller.
kann ich gerade nicht glauben, denn Domwert holt einfach nur eine Wert aus einer einzeiligen Abfrage.

Zitat:

... Bisschen Arbeit, ...
vielicht wäre ja die Umstrukturierung die bessere Lösung.

maine-coon 11.08.2017 20:51

Vielleicht liegt es daran, dass 14 Felder mit einem Wert aus 7 Abfragen geholt werden muss.

Egal, ich habe jetzt 7 kleine Formulare eingebaut. Und da sind die Werte sofort drin.

Dennoch vielen Dank für die Unterstützung.

fraeser 11.08.2017 20:55

Die Lösung ist mit Sicherheit mangelhaft.

Zeige einfach mal Dein Vorhaben, Deine Abfragen für die Datensatzherkunft des Formulars etc...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.