Neuigkeiten:

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

Mobiles Hauptmenü

Aus einem Formular heraus die dem Formular zugeordnete Abfrage ändern.

Begonnen von amautes, November 17, 2011, 16:53:18

⏪ vorheriges - nächstes ⏩

amautes

Ich habe in einer Tabelle "Planung" unterschiedliche Monatsfelder: Plan_Januar - Ist_Januar, Plan_Febr - Ist_Febr
Meine Idee war, ich erstelle mir je 1 Abfrage für die Werttypen Plan und Ist.
In diesen Abfragen habe ich per Alias die Perioden gleich benannt (Jan:Ist_Januar bzw. Jan:Plan_Januar). Die Periodennamen sind also in beiden Abfragen gleich. Im Formular Planung sollen nun per Klick auf einen Butto entweder die Ist- oder die Planwerte angezeigt werden. Im Makro habe ich das so nicht hinbekommen. Kann mir da jemand einen Tipp geben?

Vielen Dank schon mal.

Alfred Mautes

MzKlMu

Hallo,
ZitatKann mir da jemand einen Tipp geben?
Ja, das ist ein falscher, unnormalisierter Tabellenaufbau. Es ist eine weitere Tabelle zur Erfassung der Planungswerte zu erstellen. Diese Tabelle ist so aufzubauen:

PlanungID_F         Monat        Plan   Ist
  1               1/2011        12     10
  1               2/2011        10      8
usw.


Das Feld PlanungID_F ist das Fremdschlüssel zur jetztigen Tabelle "Planung".
Die Darstellung erfolgt mit einen Hauptformular (Planungsdaten) und einem Unterformular für die Planungswerte (neue Tabelle). Du hast dann alles auf einen Blick, das Umschalten ist gar nicht mehr notwendig.

Auf diese Art und Weise kannst Du beliebig viele Monate erfassen ohne das Formaular ändern zu müssen.
Auch eine Kostenkontrolle ist auf diese Art ganz leicht zu realisieren.
Gruß Klaus

Alfred Mautes

Erst mal vielen Dank für den Tipp. Der von Dir geschilderten Aufbau macht sicherlich Sinn. Ein Tabellenaufbau mit Periodenspalten für unterschiedliche Werteklasssen (Ist/Plan) ist sicherlich nicht typisch für eine Datenbank. Es geht mir hierbei aber mehr darum, dass ich in einem Endlosformular bzw. der Datenblattansicht bspw. eine Dienstart filtern kann und dann Werte in den Hochrechnungszeitraum kopieren kann.
Ich könnte aber auch folgendes machen. Ich baue die Tabelle so auf, das ich ein Feld Werteklasse anlege (Ist/Plan). Dann könnte ich aus dem Formular heraus die Werteklasssen und den Planungsbereich (Kosten/Kennzahl) filtern. Das wäre für den Anwender eine sehr übersichtliche Geschichte. Er könnte beispielsweise auf einen Blick die Ist und Planwerte einer Dienstart/Kst. ersehen.
Trotzdem würde mich mal interessieren, ob es die Möglichkeit gibt, aus einem Formular heraus die dem Frm zugeordnete Abfrage zu ändern.

MzKlMu

Hallo,
baue die Tabelle auf wie vorgeschlagen, alles andere ist nicht Datenbankkonform.
Mit dem anderen Aufbau hast Du ebenfalls alle Möglichkeiten.
Du hast in einem Formular alles auf einen Blick, Ist, Soll, Gesamt, einfach alles.
Du brauchst dann auch nicht kopieren, das Enlosformular (im Hauptformular) wird einfach auf den gewünschten Hochrechnungszeitraum gefiltert. Im Formularfuß kannst Du Dir einfach dann die Summen des zeitraums anzeigen lassen.
Das lässt sich alles mit den Grundfunktionalitäten von Access erreichen, ohen irgend etwas programmieren zu müssen.

Du wirst mit dem gegenwärtigen Aufbau nicht glücklich werden, viel zu umständlich und unflexibel.
Gruß Klaus

Beaker s.a.

Hallo Alfred,
ZitatTrotzdem würde mich mal interessieren, ob es die Möglichkeit gibt, aus einem Formular heraus die dem Frm zugeordnete Abfrage zu ändern.
Natürlich
Me.RecordSource = "DeineAbfrage", oder
Forms!DeinForm.RecordSource = "DeineAbfrage"
Das soll jetzt aber keine Aufforderung sein, die Hinweise von MzKlMu zur Normalität nicht zu beachten, - er weiss wovon er spricht.
hth
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)

database

Hallo,

Zitat... aus einem Formular heraus die dem Frm zugeordnete Abfrage zu ändern...

Dim SQL as String
SQL = "SELECT * FROM Tabelle WHERE Einschränkung"

Me.Recordsource = SQL

Wobei die Abfrage dynamisch gestaltet werden kann / soll / muss um die Datenherkunft unter bestimmten Voraussetzungen zu ÄNDERN