Andreas Unkelbach
Werbung


Dienstag, 15. März 2016
17:59 Uhr

Aktualisierungsabfrage in Access mit WENN (sowohl A als auch B) DANN Funktion

Eigentlich versuche ich soweit es irgendwie geht Daten aus SAP so aufzubereiten, dass eine Nachbearbeitung in nachgelagerten Systemen (im Beispiel Tabellenkalkulation oder Datenbanken) nicht mehr erforderlich ist. Dennoch gibt es hin und wieder Fälle, wo eine entsprechende Bearbeitung zum Beispiel in Access notwendig ist, da noch nicht an alle Auswertungen gedacht wurde oder man eine weitere Information aus den vorhandenen Daten auslesen möchte...

Während ich in Excel keine Probleme habe Wenn-Dann Funktionen mit Verschachtelungen zu versehen fällt mir dieses in Access etwas schwerer, da der Syntax ein klein wenig abweicht und statt Zellbezüge hier Bezüge auf einzelne Tabellenfelder genommen werden muss und auch der Syntax von Formeln etwas von Excel abweicht, was im zweiten Lösungsweg zu sehen ist. Vermutlich ist meine Vorliebe für Excel einer der Gründe warum ich mich lieber mit Tools zur Erstellung einer MindMap (siehe "Mindmapping und Sketchnotes im Beruf nutzen für Brainstorming oder Mind Mapping mit XMIND") als intensiver mit Access beschäftige, auch wenn es hin und wieder durchaus praktisch ist.

Ausgangslage
Im Rahmen einer Aktualisierungsabfrage auf einzelne Tabellen soll das Feld "QoS" in der Tabelle "Ergebnistabelle" anhand folgender Fälle aktualisiert werden beziehungsweise einen Wert erhalten.
  • Sind die letzten 2 Ziffern des Innenauftrag kleiner oder gleich 49 dann soll als Wert "S" zurückgegeben werden.
  • Handelt es sich bei den letzten 2 Ziffern des Innenauftrag um größer oder gleich 50 dann soll als Wert "Q" zurückgegeben werden.
  • Sofern die dritte Stelle des Innenauftrag eine 4 enthält ist in jeden Fall als Wert "Q" auszugeben.
In der Tabelle "Ergebnistabelle" ist der Innenauftrag in unseren Beispiel im Feld "Projekt" abgespeichert.

Im Rahmen der Aktualisierungsabfrage wird nun also für das Feld "QoS"  der Tabelle "Ergebnistabelle" im Feld Aktualisieren folgende Formel eingegeben.

Am Einfachsten ist dieses, wenn über die rechte Maustaste die Option "Aufbauen" gewählt wird. Hierdurch erscheint der Ausdrucksgenerator und wir bekommen sämtliche Felder der Datenbank aber auch alle möglichen Ausdrücke zur Auswahl angezeigt. Für unseren Fall arbeiten wir aber mit den Ausdrücken WENN, LINKS und RECHTS. Wobei ich hier zwei Lösungsansätze habe.

Verschachtele WENN dann WENN Funktion

Nachdem wir den Ausdrucksgeneartor aufgerufen haben erhalten wir ein Fenster in dem die folgende Formel eingetragen werden kann:

Wenn
(
 Rechts(Links([Ergebnistabelle]![Projekt];3);1)*1=4;
 "Q";
 Wenn
   (
    Rechts([Ergebnistabelle]![Projekt];2)*1<50;"S";"Q"
   )
)

Zur Erklärung:
Im ersten Abschnitt wird überprüft, ob bei der Innenauftragsnummer an vierter Stelle eine 4 steht. In diesen Fall handelt es sich in jeden Fall um "Q", andernfalls (DANN) wird nun nicht ein Wert ausgegeben sondern eine weitere Wenn Dann Funktion geprüft. Wenn die letzten beiden Ziffern kleiner als 50 sind handelt es sich um "S" ansonsten trifft tatsächlcih "Q" zu.

Da die Funktionen LINKS und RECHTS eigentlich für Varianten eines Strings gedacht sind (Textbestandteile auslesen) habe ich mit * 1 in der Formel diese zur Sicherheit auch als Zahl behandelt. Da die Innenauftragsnummer aber auf jeden Fall eine Zahl sein sollte, kann dieser Part auch ausgelassen werden.

Im Ergebnis haben wir nun abhängig von der Innenauftragsnummer entweder S oder Q im Feld "QoS" stehen.

WENN ( SOWOHL ... ALS AUCH ... ) dann Funktion

Eine bessere Variante ist in folgender Abbildung dargestellt, an der auch der abweichende Syntax zu Excel ersichtlich ist.

Access Ausdrucks-Generatur mit Wenn Funktion

Während ich in Excel mit WENN(UND();"S";"Q") gearbeitet habe ist der Syntax bei Verschachtelungen mit WENN  und UND in Access etwas anders. Für unser Fallbeispiel würde die Aktualisierung wie folgt definiert werden:

Wenn
(
  Rechts([Ergebnistabelle]![Projekt];2)<=49
   UND
  Rechts(Links([Ergebnistabelle]![Projekt];3);1)<>4;
 "S";"Q"
)

Zur Erklärung:
Sofern die letzten beiden Ziffern des Innenauftrags < oder = 49 sind UND die dritte Stelle keine 4 ist, wird das Feld "QoS" mit den Wert "S" versehen, andernfalls mit "Q".

Diese Schreibweise ist natürlich wesentlich einfacher, allerdings muss man sich vom Syntax der Klammer bei UND () lösen, wie dieses in Excel erfolgen würde.

In beiden Varianten hat nun das Feld "QoS" abhängig von der Innenauftragsnummer im Feld Projekt eine entsprechende Werztuweisung und es können hier weitere Gruppierungen oder sonstige Auswertungen vorgenommen werden.

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Espresso Tutorial - die digitale SAP Bibliothek

Tags: Access

Keine Kommentare - - Office

Artikel datenschutzfreundlich teilen

🌎 Facebook 🌎 Twitter 🌎 Google
Diesen und weitere Texte von finden Sie auf http://www.andreas-unkelbach.de


Keine Kommentare

Kommentieren?


Beim Versenden eines Kommentars wird mir ihre IP mitgeteilt. Diese wird jedoch nicht dauerhaft gespeichert (siehe auch XII. Fremde Nutzung / Kommentarfunktion in der Datenschutzerklärung).

Eine Rückmeldung ist entweder per Schnellkommentar oder (weiter unten) als normalen Kommentar möglich. Eine persönliche Rückmeldung (gerne auch Fragen zum Thema) würde mich sehr freuen.

Schnellkommentar (Kurzes Feedback, ausführliche Kommentare bitte unten als normaler Kommentar)

Name (sofern kein Name angegeben wird erscheint Anonym):


Normaler Kommentar

Name:

E-Mail (wird nicht veröffentlicht):

Homepage:

Kommentar:


Hinauf




Werbung



Logo Andreas-Unkelbach.de
© 2004 - 2018 Andreas Unkelbach
Gießener Straße 75,35396 Gießen,Germany
andreas.unkelbach@posteo.de
Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter Google+

»Schnelleinstieg ins SAP Controlling (CO)« und »Berichtswesen im SAP ® ERP Controlling«
Privates

Kaffeekasse 📖 Wunschliste