Category: Formulardesign

Mehrstufige abhängige Auswahl

By , 5. November 2024

Vor einiger Zeit stand ich bei einem Programm für die Vereinsmeisterschaft unseres Schützenvereines vor der Aufgabe, die Ergebnisanzeige endlich korrekt zu realisieren. Man sollte folgendes auswählen können:

  1. die Disziplingruppe, also alle Disziplingruppen, Pistole, Gewehr, Flinte, Armbrust etc.
  2. von der Disziplingruppe abhängend die entsprechende Disziplin, also alle Disziplinen, oder einzelne Disziplinen.
  3. die Altersklasse, also alle Klassen, Schüler, Jugend, Junioren, Herren, Damen oder abhängig von der Disziplin Auflageschießen sollen dann Seniorenklassen angezeigt werden. Das ist eine spzielle Eigenart im Deutschen Schützenbund.

Irgendwie dachte ich da spontan an das Portal unseres Landesverbandes, der in der Ergebnisliste genau diese Auswahlmöglichkeit (neben der Vereins- und Schützenauswahl) abbildet. Von da aus war der Schritt, wie konkret die Ergebnisse dargestellt werden sollen, nicht weit, nämlich genau so wie im Webportal.

Also mittels dem Untersuchungs-Werkzeug des Firefox Webbrowsers die Struktur der Darstellung analysiert, teils kopiert teils ergänzt/abgewandelt. Als Ergebnis stand am Schluss eine Prozedur die per Buttonklick aufgerufen wird, welche im ersten Teil in Abhängigkeit der Auswahlen einen SQL-String aufbaut. Eine kleine Schwierigkeit dabei war es die Auswahlen für „Alle …“ zu realisieren.

Gelöst habe ich dies indem ich einen String (strCase) zusammengesetzt habe jeweils aus 1 oder 0 für jede Auswahlmöglichkeit. Also „111“ für den Fall dass alle 3 Auswahlen auf „Alle“ stehen bzw. „000“ falls keine oder eben die Zwischenschritte. Danach habe ich die möglichen Fälle bestimmt die jeweils eine andere Zusammensetzung des SQL-Strings bedingen würden und in einer Select Case Schleife abgearbeitet. Das Ergebnis ist relativ komplex, aber ich denke zumindest die Systematik dahinter kann man relativ einfach verstehen:
Read more »

In Bug-Falle getappt: Registersteuerelement verschieben mit Unterformular

By , 14. Januar 2020

Hallo,
z.Z. arbeite ich an einem Eigenprojekt – einer Belegungssteuerung für die Pension. Dabei bin ich auf ein Problem gestoßen das wohl ein Bug in Access ist, und zwar zumindest der Version 2010 bis zur aktuellen 2019er Version. Der Sachverhalt ist folgender:
Auf einer Seite eines Registersteuerelementes plazierte ich ein Unterformular-Steuerelement, mit Form als Sourceobject. Die Registersteuerelemente stellen in dem Formular eine Box dar, die zusammengeklappt und aufgeklappt werden kann – mit mehreren solcher „Boxen“ die sich dann entsprechend positionieren. Dazu wird die Move() Funktion verwendet.

Den Style-Fehler, den Access nun produziert, ist dieser:
Verschiebe ich ein RegisterControl dann verschiebt sich die Registerseite natürlich mit, und auch das Unterformular-Control. Soweit alles OK.
ABER das Formular innerhalb des Unterformular-Controls bleibt einfach stehen, fällt also sprichwörtlich aus dem Rahmen mit dem es sich mitbewegen sollte.
Kann man sehr leicht reproduzieren. Kollegen habe mir auch bestätigt dass dieses Verhalten in der neuesten Version 2019 ebenso vorhanden ist.

Nun, tun kann man daran nichts, aber es ist gut dass man das weiß. Ich habe es jetzt so gelöst dass ich hier jetzt kein Register einsetze sondern nur das Unterformular-Control und dieses dann hier verschiebe. Zum Testen hab ich euch ein kleines Beispiel gemacht mit mehreren Optionen:
Testdatenbank

Bis dahin
©2020 Andreas Vogt

Daten Auswerten mit Kreuztabelle & Co

By , 4. März 2014

Will man z.B. Umsätze verschiedener Standorte auswerten um die Standorte miteinander zu vergleichen, dann ist das Übliche Mittel eine Kreuztabellenabfrage zuerstellen.
Unter Access 2010 klickt man in der Registerkarte „erstellen“ auf „Abfrageassistent“ und wählt dann „Kreuztabellenabfragen-Assistent“ aus.

Der restliche Dialog sollte selbsterklärend sein. Man wählt die Tabelle oder Abfrage aus, welche die Grundlage für die Kreuztabellen-Abfrage ist, und klickt auf weiter. Danach wird nach den Zeilenüberschriften gefragt, wir wählen hier das Feld „Monat“ aus. Nach klick auf Weiter wählt man die Spaltenüberschrift, wir nehmen hier das Feld „Standort“. Zum Schluss wird nach den Kreuzungspunkten gefragt, also nach den darzustellenden Werten. Bei mir heißt das Feld treffend „Umsatz“. Also das Feld Umsatz auswählen und rechts daneben die Funktion „Summe“ anklicken, da wir ja die Summen pro Monat und Standort möchten. Bei Access 2010 ergibt sich jetzt folgendes Bild:

Bild leider verloren gegangen

Klick auf Weiter und Fertig stellen erstellt uns die gewünschte Kreuztabellenabfrage, und zeigt diese gleich an. Aber das ist ja hinlänglich bekannt.

Will man jetzt aber das ganze in einem Formular haben, gibt es 2 Formular-Assistenten für PivotChart und PivotTable. Beginnen wir mit letzterem. Markieren Sie die entsprechende Tabelle oder Abfrage und klicken Sie im Ribbon auf Erstellen / Weitere Formulare / PivotTable. Sollte die Feldliste ausgeblendet sein, klicken Sie im Ribbon auf Feldliste, ggf. 2x.
Sie sehen jetzt oben die Zeile „Spaltenfelder hierher ziehen“ und links die Spalte „Zeilenfelder hierher ziehen“, und in der Mitte eine große leere Fläche. Klicken Sie in der Feldliste auf Monat und ziehen Sie diesen nach links in die Spalte, lassen Sie die Maustaste los. Sie sehen, unsere Monate wurden erstellt. Danach klicken Sie in der Feldliste auf Standort, und ziehen Sie diesen in die Zeile mit der Bezeichnung „Spaltenfelder hierher ziehen“, Maustaste loslassen. Jetzt werden die Standorte angezeigt, fehlen nur noch die Umsätze. Klicken Sie erneut in der Feldliste diesmal auf Umsatz, und ziehen Sie diesen in das mittlere leere Feld. Taste loslassen, unsere Tabelle ist jetzt komplett. Die Reihenfolge wie Sie die Felder plazieren spielt keine Rolle.

Wollen Sie jetzt noch Spalten- und Zeilensummen darstellen, gehen Sie wie folgt vor:
Klicken Sie mit der Maus in die Zeile mit den Bezeichnungen „Umsatz“, die Felder werden automatisch markiert.
Klicken Sie im Ribbon auf „AutoBerechnen“, jetzt werden die Summen aber leider noch weitere Felder angezeigt, die wir in der Anzeige nicht wünschen.
Klicken Sie im Ribbon auf „Details ausblenden“, ggf. 2x, jetzt wird die Tabelle wie gewünscht dargestellt:

Bild leider verloren gegangen

Um ein PivotChat Formular zu erstellen gehen wir ähnlich vor. Markieren Sie die betreffende Tabelle oder Abfrage, klicken Sie im Ribbon Erstellen auf „Weitere Formulare“, dann auf „PivotChart“. Sie sehen ein leeres Diagramm mit der Zeile darüber „Datenfelder hierher ziehen“. In diese Zeile ziehen Sie wie oben das Feld „Umsatz“. Unter dem Diagramm ist die Zeile „Rubrikenfelder hierher ziehen“, in diese Feld Ziehen Sie das Feld Standort. Jetzt gibt es noch rechts das Feld „Reihenfelder hierher ziehen“, ziehen Sie hierhinein das Feld Monat.

Das Diagramm ist erstellt, jetz müssten nur noch die beiden Achsentitel entsprechend umbenannt werden. klicken Sie diese nacheinander an und im Ribbon auf Eigenschaften-Blatt. Unter Format können Sie den Namen ändern. Um eine Legende anzuzeigen klicken Sie im Ribbon auf „Legende“. Jetzt könnte es so wie folgt aussehen:

Bild leider verloren gegangen

So das war es wieder einmal für Heute, hoffe der Artikel hat euch gefallen.

Bis dahin
© 2014 Andreas Vogt

OfficeFolders theme by Themocracy