Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Hilfe bei Abfrage

Begonnen von datekk, November 14, 2016, 09:55:26

⏪ vorheriges - nächstes ⏩

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

ebs17

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
Mit freundlichem Glück Auf!

Eberhard

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Beaker s.a.

Hallo crystal,
Sorry, aber deine Idee funzt nicht, auch die gejointe Abfrage ist nicht aktualisierbar; -
hab's ausprobiert.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

crystal

#8
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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...