Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Daten aus Bericht in Abfrage - mal was knackiges





Frage

Nochmals Hallo an die Access-Profis. Ich eröffne ungern 2 Beiträge in einem Hilfe-Forum, aber nun steh ich vor einem wirklich happigen Problem und da werden sicher auch die Profis mal nachdenken müssen (hoffe ich sonst blamier ich mich hier) ;-) Als Hauptaufgabe in meinem Ferialjob muss ich eine etwas größere Datenband erstellen die später der kompletten Produktion dienen wird. Soweit so gut, wenn nicht mein Chef dauernd seine Meinung ändern würde. Ich habe letzens einen Bericht erstellen müssen, der die drei Arbeitsschichten eines Tages verwaltet und auswertet. Also musste ich drei Datensätze unterbringen. War ja auch kein Problem. In einem Unterbericht musste ich dann die Störursachen anführen die an einem Tag so passieren und Sie mit einer Prozentzahl versehen (simple Prozentrechnung). Nun zum eigentlichen Problem: Mein Chef will plötzlich, dass im Bericht nur noch Störungsursachen stehen, deren Prozentanteil an Störungen höher als 0,5 ist (und diese Zahl muss auch noch variabel sein) und nach größe will er sie auch sortiert haben. Da ich das ja vorher nicht gewusst habe, habe ich alle Berechnung so aufgebaut, dass sie alle innerhalb des Berichtes mit ganz normalen Ausdrücken berechnet werden. Da ich nicht mehr lange zu arbeiten habe muss ich mich beeilen, da ich a noch weitere Dinge bei der Datenbank fertig stellen muss (ihr werdet in den nächsten Tagen sicher noch davon lesen hier ;-) ) Zur eigentlichen Frage: Gibt es nun irgendeine Möglichkeit im Bericht nur Datensätze anzeigen zu lassen, die größer sind als zb 0,5% (oder eben die Zahl die der Chef verwenden will), ohne dass ich länger als 2 Stunden darauf rumschrauben muss. (muss noch dazu sagen, dass mein Access-Können nicht auf Profiebene liegt) 2 Stunden für mich, sind für euch Profis vielleicht 30, 40 Minuten (schätzomativ) Würde mich sehr über eine Antwort freuen. Ich bin für jeden Vorschlag offen. mfg takeshi

Antwort 1 von Coolpix

hallo takeshi,

ich glaub' das im Bericht selbst zu wurschteln kannst du dir von der Backe wischen...
Ich würde 'ne Abfrage erstellen die:
a. aus der Datentabelle alle Felder zieht und
b. in Rechenfeldern alle erforderlichen Berechnungen durchführt.

die kannst du dann nach belieben filtern z.B. über ein Formular.
Wenn du dann in deinem Bericht die Datenquelle auf die Abrage abänderst mußt du nur noch deine Rechenfelder im Bericht auf die berechneten Felder der Abfrage "umhängen".

hört sich kompliziert an, ist aber nach meinen Erfahrungen die einzig wirklich praktikable Lösung für dein Problem.

wenn du nicht zurechtkommst schick mir die DB mal zu ... ich strick's dir dan um ...

Greetings ;-)

Antwort 2 von takeshi

Hi Coolpix!

Danke für den Rat, ich versteh auch was du meinst. Hab ja schon selbst darüber nachgedacht und auch probiert, aber es klappt nicht.

Denn eins musst du beachten. Die Daten die zur Berechnung dienen kommen aus zwei verschiedenen Tabellen mit unterschiedlich vielen Datensätzen. Ich erklär mal die Rechnung.

Aus der Tabelle1 der Grundwert. Und zwar setzt sich der aus der Summe der Bruttoproduktionszeiten zusammen. Jeden Tag kann dieser Wert verschieden sein. Die Summe besteht zumeist aus 7-9 einzelnen Datensätzen. Diese Summe bildet dann die 100 % für die Berechnung der Auslastung und der Störungen.

Die Störungen befinden sich in einer anderen Tabelle (Tabelle2), die durch eine 1:n Beziehung (Tabelle1 - 1:n - Tabelle2). Hier werden die einzelnen Störzeiten genommen (10-30 Störungen pro Tag = 10 - 30 Datensätze, die unter den 7-9 oberen Datensätzen unregemäßig aufgeteilt sind) und werden durch den Grundwert dividiert und dann mit 100 mutlitpliziert. So erhalte den prozentuellen Anteil jeder Störung am gesamten. Wenn ich jetzt Daten aus beiden Tabellen in eine Abfrage stecke, werden natürlich mehr Daten angezeigt, als sie sollten. Und zwar die Bruttoproduktionszeiten. Da jetzt bei jeder Störung eine steht, ist die Summe ja um einiges höher als wenn nur die tatsächlichen Zeiten verwendet worden wären. Dadurch ergibt sich natürlich bei jeder Störung ein niedrigerer und falscher Prozentwert. Somit ist, diese Art der Abfrage ausgeschlossen.

Natürlich hast du Recht, über eine Abfrage würde es überhaupt keine Probleme geben. Aber hier gibt es welche, da nicht die gleiche Anzahl von Datensätzen verwendet werden.

Wenn du eine Idee hast, wie ich die Daten aus der 1. Tabelle einschränken könnte, sodass sich die Störungen an die Produktionszeiten anpassen, bitte raus damit.

Ich probier zumindest mal jeden Vorschlag aus.

Aja und dir die Datenbank zu schicken, ist zwar ein nettes Angebot, aber ich glaube bis sich da jemand auskennt was ich da zusammengezimmert habe, vergeht einiges an zeit.

Ich bin doch gewillt, das ganze selbst irgendwie zu packen (werd ja auch dafür bezahlt *g*). ich frag nur öfters mal in foren, wenn ich mich nicht auskenne, aber man lernt ja dazu ;-)

nochmals danke

mfg

takeshi


Antwort 3 von Coolpix

hallo nochmal,

war ja nur 'n Angebot...

wenn du, wie du sagst, eine 1:n Beziehung zwischen den beiden Tabellen hast, dann hast du doch in beiden Tabelle ein übereistimmendes Kriterium! Oder ?
Dann kannst du doch, wenn du beide Tabellen in 'ne Abfrage ziehst die Eigenschaft der Beziehung so editieren,
daß z.B. wenn in Tab2 die Störzeiten stehen alle Datensätze aus Tab2 und nur die Datensätze aus Tab1 bei denen die Inhalte der verknüpften Felder gleich sind.
also Option 3.
Dann bekommst du auch nur die Störungen angezeigt + die dementsprechenden Werte aus Tab1.

Dann kann's mit der Rechnerei losgehen...

...stehe gerne für weitere Tipps zur Verfügung

Greetings ;-)

Antwort 4 von Roadrunner90

Hallo Takeshi,

schnelle Lösung:

Die Zeile auf .visible False stellen wenn der Prozentwert < x,x ist. Den Prozentwert kannst du als Parameter mitgeben.

Sieht dann im Code so aus

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
If prozent <= parameter Then
Detailbereich.Visible = False
Else
Detailbereich.Visible = True
End If


Sortiert bekommst du die Werte damit natürlich nicht

Gruß Rudolf

Antwort 5 von takeshi

Hallo Leute,

danke für die Tipps, aber so einfach ist das nicht gewesen. Gestern hat mir jemand aus diesem Forum, per Mail eine Demo-Datenbank geschickt in der mein Problem dokumentiert wird. Die Berechnung wurde auf mehrere Abfragen verteilt. Und die Kriterien stammen alle aus globalen Variablen. Ich hatte einige Zeit gebraucht, bis den Aufbau verstanden habe, aber es hat dann auch in meiner DB funktioniert.

Ich möchte demjenigen nochmals für diese ritterliche Tag danken. er weiß schon wen ich meine.

mfg

takeshi

Antwort 6 von HomerJay

Habe das Ganze nur überflogen,
aber hat mal jemand an den Einsatz eines Filters im Bericht gedacht ?

Einen Dialog per InputBox vor Öffnen des Berichts,
in dem die %-Zahl der Störursachen abgefragt wird
und dann in der OpenReport-Methode
bei Parameter unter Filter einfach daraus ne WHERE-Klausel machen.

So arbeite ich in Kostenrechnungsberichten im Controlling bei ner Tochterfirma.