Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: datekk am November 14, 2016, 09:55:26

Titel: Hilfe bei Abfrage
Beitrag von: datekk am November 14, 2016, 09:55:26
Jetzt arbeite ich schon so lange mit Access und hänge gerade an einem sicher einfachen Abfrageproblem. Folgende Aufgabenstellung:

Meine Mitarbeiter sollen Ihre Kundenliste durchgehen und bei bestimmten Datensätzen ein Häkchen setzen. Das ganze soll in einem Endlosformular funktionieren. Es gibt also eine Tabelle Kundenliste. Die Datensätze sollen nach Kundenumsatz sortiert sein. Also Kunden mit größtem Umsatz sollen oben in der Liste stehen.... Umsätze stehen in einer Tabelle Aufträge. Da ein Kunde aber mehrere Aufträge und Umsätze haben kann, muss ich irgendwo eine Gruppierung einbauen. Damit ist die Abfrage, welche dem Formular die Daten liefern soll aber nicht aktualisierbar. Wie ist es möglich die Häkchen zu setzten ohne im Formular die DSum Funktion nutzen zu müssen, da diese extremen Traffic verursachen würde... Ein Kunde soll, obwohl er mehrere Umsätze haben kann aber nur einmal in der geforderten Liste stehen.
Titel: Re: Hilfe bei Abfrage
Beitrag von: crystal am November 14, 2016, 12:56:59
Hallo datekk,

erste grobe Idee:
1. baue eine Abfrage, die die Kundennr und die Umsatz-Summe per dsum holt.
2. baue eine zweite Abfrage, die Daten aus der Kundentabelle und per Join (Kundennr) die Summe aus der ersten Abfrage holt. Diese Abfrage hat dann keine Aggregetfunktion und sollte somit änderbar sein.

Könnte vielleicht klappen.

lg
crystal
Titel: Re: Hilfe bei Abfrage
Beitrag von: datekk am November 14, 2016, 13:27:24
wenn ich mit dsum arbeite, kann ich mir doch die erste abfrage sparen...? oder? dsum ist halt nur in so einem fall extrem langsam.... ich habe über 10000 kundendatensätze... dsum ist ok wenn ich mal einen wert brauche, aber nicht für eine riesen liste an werten.
Titel: Re: Hilfe bei Abfrage
Beitrag von: crystal am November 14, 2016, 14:46:37
Hallo datekk,

meine Idee bezog sich darauf, das DS einer Abfrage mit Aggregetfunktionen nicht änderbar sind.
Ich glaube nicht, dass du um dsum herumkommst - wie willst du Werte sonst summieren.
Ok - deine Tabellen mögen recht groß sein, aber mit geeigneten Kriterien und passenden Indizes könnten sie doch relativ schnell abgesucht werden.

Meine erste Abfrage ist (wegen des von dir angesprochenen Traffics) sehr klein und wird wohl eher server-seitig (backend) ausgeführt. Zum Client (frontend) werden dann nur die Ergebnisse geliefert. Aber vielleicht liege ich hier falsch. Müsste man mal probieren.

Ansonsten bliebe vielleicht noch die Möglichkeit, Umsätze bei Auftrags-Abschluss in der Kundentabelle zu kumulieren, evtl. in einer Kunden-Jahres-Umsatz-Tabelle: wenn ein Auftrag abgeschlossen ist, wird der Umsatz dem bisherigen Umsatz des Kunden zugeschlagen. Könnte man natürlich auch zu anderen Zeitpunkten des Auftrags-Verlaufs machen. Dann hättest du die Umsätze "sofort" verfügbar, ohne sie erst aus den Aufträgen summieren zu müssen.

Auch bestehende Auftragsdaten könnten in einer solchen neuen Kunden-Jahres-Umsatz-Tabelle einmalig summiert werden, bevor dann eine solche Funktion beim Auftrags-Abschluß automatisch ausgeführt wird.

Natürlich gäbe es ein paar Fallstricke - Auftrags-Stornierung, nachträglich verhandelter Rabatt etc. Aber das ließe sich in entsprechenden Formularen lösen.

Ich fürchte also, dass du die Funktionalität, Umsatz-Summen zu bilden, in die ja nur ad-hoc vorkommende Funktion "Auftrag abschließen" o.ä. und eine neue Tabelle auslagern musst, um dann für deine Auswertung auf Dsum verzichten zu können.

lg
crystal
Titel: Re: Hilfe bei Abfrage
Beitrag von: ebs17 am November 14, 2016, 14:56:05
ZitatWie ist es möglich die Häkchen zu setzten ohne im Formular die DSum Funktion nutzen zu müssen

Siehe Mehrfachauswahl in einem Endlosformular  (http://access.joposol.com/beispiele/formulare/mehrfachauswahl-in-endlosformular)
Titel: Re: Hilfe bei Abfrage
Beitrag von: datekk am November 14, 2016, 15:03:18
Ich werde wohl das Ergebnis der gruppierten Abfrage in eine Tabelle zwischenspeichern und diese Hilfstabelle mit meiner Kundentabelle koppeln.... wird das einfachste und schnellste sein. Es geht nur um eine einmalige Aktion. Die Funktionalität muss nicht permanent vorhanden sein. Trotzdem Danke für Eure Vorschläge.
Titel: Re: Hilfe bei Abfrage
Beitrag von: crystal am November 14, 2016, 15:15:44
Hallo datekk,

ZitatIch werde wohl das Ergebnis der gruppierten Abfrage in eine Tabelle zwischenspeichern und diese Hilfstabelle mit meiner Kundentabelle koppeln.... wird das einfachste und schnellste sein.

Aber genau das macht ja meine erste Abfrage, allerdings ohne das Ergebnis abzuspeichern. Die Ergebnis-Tabelle dieser 1. Abfrage existiert nur virtuell (es sei denn, man führt sie manuell aus), aber die 2. Abfrage kann darauf zugreifen und auch eine Kopplung mit der Kundentabelle machen. (Im Abfrage-Entwurf kannst du nicht nur Tabellen, sondern auch Abfragen hinzufügen.)

lg
crystal
Titel: Re: Hilfe bei Abfrage
Beitrag von: Beaker s.a. am November 14, 2016, 15:42:02
Hallo crystal,
Sorry, aber deine Idee funzt nicht, auch die gejointe Abfrage ist nicht aktualisierbar; -
hab's ausprobiert.
gruss ekkehard
Titel: Re: Hilfe bei Abfrage
Beitrag von: crystal am November 14, 2016, 16:20:05
Ja Beaker,
du hast leider Recht. Ich hab's jetzt auch probiert.
Wäre schön gewesen...
Ich hatte gehofft (und nicht probiert), dass Access mit der 2. Abfrage "vergessen" oder ignorieren würde, dass in der ersten eine Aggregat-Funktion benutzt wurde.

Also wird datekks Idee weiterhelfen, die gruppierten Ergebnisse in eine Tabelle zwischenzuspeichern...

lg
crystal