Andreas Unkelbach
Logo Andreas Unkelbach Blog

Andreas Unkelbach Blog

ISSN 2701-6242

Artikel über Controlling und Berichtswesen mit SAP, insbesondere im Bereich des Hochschulcontrolling, aber auch zu anderen oft it-nahen Themen.


Artikel zum Stichwort Access

Alle folgende Artikel sind unter den angegeben Stichwort (TAG) einsortiert. Sollte der gesuchte Artikel nicht dabei sein kann hier auch die Artikelsuche weiter helfen.

Oft sind aber auch die aktuellen Artikel in der jeweiligen Kategorie im Menü interessant.
SAP Fachliteratur ist unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.

Werbung
Aktuelles von Andreas Unkelbach

unkelbach.link/et.books/

unkelbach.link/et.migrationscockpit/



Dienstag, 1. Dezember 2020
22:45 Uhr

Zufallswerte in Excel Zellen per Zufallszahlszahl und Zufallsbereich aber auch in Access je Datenzeile einer Access Abfrage generieren

Ausgangslage:

Manchmal kann es, sei es für Beispiele hier im Blog oder für eine Anonymisierung einer Statistik, erforderlich sein Daten zu anonymisieren oder zumindest zu pseudonymisieren.

Hier gibt es unterschiedliche Formeln in Office je nachdem ob diese in Excel oder Access genutzt werden sollen.

Zufallszahlen in Excel

Für meine Beispielzahlen in Excel verwende ich meistens entweder die Formel ZUFALLSZAHL() oder ZUFALLSBEREICH(Untere_Zahl;Obere_Zahl) um hier entsprechende Zahlen automatisch errechnen zu lassen.

Dabei generiert Excel diese Zahlen basierend auf  den Mersenne Twister-Algorithmus (MT19937 siehe "Eintrag auf Wikipedia") wodurch Pseudozufallszahlen die als zufällig erscheinen generiert werden.

In einer Datentabelle mit zehn Einträgen (von ID 1 bis 10) und jeweils einen Wert von 100 werden dazu je folgende Zufallszahlen generiert.

Zufallszahl und Zufallsbereich in Excel

Spalte Zufallszahl

Durch die Formel =RUNDEN(ZUFALLSZAHL()*100;2) wird durch ZUFALLSZAHL() eine Zahl größer oder gleich 0 aber kleiner als 1 generiert und diese mit 100 multipliziert und auf 2 Nachkommastellen gerundet.

Spalte Zufallsbereich

Der Zufallsbereich wird durch die Formel =ZUFALLSBEREICH(1;100) definiert als ganzzahlige Zahl (ohne Nachkommastellen) zwischen 1 und 100.

So sind in Excel relativ schnell entsprechende "Zufallszahlen" können dann als Werte für Beispiele herangezogen werden.

Sinnvollerweise werden diese dann kopiert und als Inhalte Einfügen als Werte wieder eingefügt, andernfalls aktualisieren sich diese Zahlen jedes Mal aufs Neue sobald eine andere Berechnung im Tabellenblatt erfolgt.


Ein Grund warum Controller Excel mögen, dürfte wohl auch daran liegen, dass hier schnell gute Ergebnisse erreicht werden können.


 

Zufallszahlen in Access


Zur identischen Datenzeile ID 1 bis 10 und jeweils die Werte 100 je Datenzeile möchte ich nun aber ebenfalls Zufallszahlen erhalten.

Dazu gibt es in Access die an der Formel RND in VBA angelehnte Formel ZZG() die in Abfragen verwendet werden kann.

Wird diese Formel ohne Parameter (also nur als ZZG() ) verwendet, so wird als Basis zur Berechnung von Zufallswerten der Systemzeitgeber  als Startwert zur Berechnung eines Zufallswertes verwendet. Allerdings wird für jeden Zufallswert der gleiche Startwert verwendet, so dass in der Abfrage die Zufallswerte wie folgt in der Spalte ZZG ausgegeben werden:

Access ZZG

Hier sind also für jede Datenzeile der gleiche Zufallswert ausgegeben, was nun zwar eine Anonymisierung aber nicht das gewünschte Ergebnis von unterschiedlichen Zufallswerten je Datenzeilen verursacht. Die Zahlen ändern sich zwar bei jeder erneuten Abfrage, bleiben aber für jeden Eintrag identisch.

Daher habe ich nun versucht mit zwei Schritten die Abfrage etwas anzupassen um letzten Endes doch noch Zufallszahlen je Eintrag zu erhalten.

Access Abfragen

Insgesamt habe ich hier zwei weitere Felder eingefügt auf deren Ergebnis ich nun eingehen mag.

Spalte ZZG Festwert

ZZG Festwert: RUNDEN ( ZZG(1) * 100 );2 )

Hier gebe ich der Funktion ZZG den Startwert 1 und multipliziere dieses mit 100 um dann die Zufallszahl auf 2 Nachkommastellen zu runden.

Ausgeführt liefert die Abfrage folgende Ausgabe:

Access Abfrage ZZG mit festen Startwert

Im Ergebnis erhalte ich nun gut lesbare Zahlen pro Eintrag, aber da hier nun statt des Systemzeitgeber eine feste Zahl verwendet worden ist, ist das Ergebnis leider erentu identisch. Beim erneuten Ausführen der Abfrage erhalte ich wiederum neue Werte, die aber ebenfalls fix sind.

Spalte ZZG Bezug

ZZG Bezug: RUNDEN ( ZZG( [Zahl] ) * 100 );2 )

Hier lese ich nun den Wert in der Spalte Zahl aus um diese als Startwert zu nehmen. Auch wenn die Zahlen jeweils identisch sind, wird hier doch für jede Zeile eine neue Zufallszahl berechnet, so dass die Werte in der Spalte ZZG Bezug nun endgültig unterschiedlich sind.


Access mit Bezug

Verschachtele WENN Dann Funktion mit Zufallszahlen

Die erhaltenen Zufallszahlen können dann auch für weitere Berechnungen oder zufällige Wertausgaben genutzt werden. Dieses kann zum Beispiel für "Ja", "Nein" aber auch für komplexere Ausgaben wie die Auswahl aus drei Optionen "Tor A", "Tor B" oder "Tor C" genutzt werden.

Im Beispiel soll hier "Bestanden", "Nicht bestanden" oder "Neuer Versuch per Zufall auf die einzelnen Einträge verteilt werden.

Dazu habe ich folgende Spalten in die Abfrage eingefügt:
  • ZZG Bezug: Runden(ZZG([Zahl])*10;2)

    Damit wird für ZZG Bezug ein Wert zwischen 0 und 10 ausgegeben.
     
  • Ergebnis: Wenn([ZZG Bezug]<3;"Nichtbestanden";Wenn([ZZG Bezug]<7;"Neuer Versuch";"Bestanden"))

    Als Ergebnis wird hier bis 3 "Nichtbestanden", bis 7 "Neuer Versuch" und ansonsten "Bestanden" ausgegeben.
Das Ergebnis der Abfrage sieht dafür dann wie folgt aus.

ZZG Mit 3 Optionen

Natürlich können hier auch größere Bandbreiten durch Erhöhung der Abstände ZZG Bezug bis 100 oder auch andere Bestandteile für die Wenn Abfrage genommen werden.

Fazit

Auch wenn in Access die Berechnung des Zufalls etwas umständlicher ist, können so doch auch pseudozufällige Verteilungen der Ausprägung eines Merkmals generiert werden und damit etwaige Anonymisierungen von Statistiken erfolgen.

Immerhin sind solche Fragen, wie auch die Konverttierung einer "als Tabelle formatierten" Datengrundlage in einen Bereich wie im Artikel "Daten in Excel intelligenter formatieren 📊 als intelligente Tabellen bzw. als Tabelle formatieren" beschrieben immer mal wieder Grundlage für spannende Artikel.

 

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Werbung
Steuern, Selbstständigkeit und VGWORT als Blogger und Autor
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


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.
Werbung
Wissenschaft und VG Wort
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Freitag, 26. Februar 2016
18:22 Uhr

Video2brain - Onlineschulung per Videostreaming unter Android, Windows, iOS und Web

An vielen Hochschulbibliotheken wird ein Zugang für Video2brain für Hochschulangehörige angeboten, aber auch als Nichthochschulangehöriger kann diese Onlineplattform interessant sein. Das Unternehmen gehört zum Linkedin Austria Konzern und hat seinen Unternehmenssitz in Graz.

Kurzbeschreibung Angebot

Das Angebot umfasst mehr als 1.600 deutschsprachige Lehr- und Trainingsvideos aus den Bereichen Informatik, Business, Lifestyle, Bildbearbeitung Fotografie und Webdesign.
Video-Streaming-Portal: mehr als 1.600 deutsche Lehr- und Trainingsvideos aus den Bereichen Informatik, Business, Lifestyle, Bildbearbeitung, Fotografie und Webdesign. Hierbei werden die Schulungen in verschiedene Kategorien zusammengefasst und können sowohl nach Software als auch Hersteller durchsucht werden.

Hinweis: Tag der offenen Türo bei video2brain - Probegucken

Zum Schnuppern dürfte der 29. Februar 2016 interessant sein, da hier ein Tag der offenen Tür mit freien Zugang zu allen Kursen angeboten wird. Auf sind nähere Informationen zu finden. Das Angebot kann von 28. Februar 2016 11:00 Uhr bis 01. März um 11:00 Uhr genutzt werden.

Nebenbei ist dieser Terminhinweis auch gleichzeitig ein Beispiel für Terminangaben wie im Artikel "Strukturierte Daten auf Website oder Semantisches Web (schema.org)" beschrieben.

Neben der reinen Weboberfläche von der die Videos abgerufen werden können, werden vom Anbieter aber auch Apps für Android, Apple iOS, Windows und Mac angeboten.

Für die Registrierung kann entweder eine E-Mailadresse verwendet werden (was besonders dann zu empfehlen ist, wenn die Hochschule oder die Firma ein Abo anbietet) oder aber per Linkedin, Facebook oder Google+ verwendet werden.

Sollte ihre Hochschule ebenfalls ein Abo von video2brain anbieten ist ein Besuch der Seite https://www.video2brain.com/de/education hier eine gute Anlaufstelle ansonsten kann sich unter https://www.video2brain.com/de/registrierung angemeldet werden.

Während der Rheinwerk Verlag und auch Espresso Tutorials eine eigene Onlineplattform nutzen bieten vor allem Addison-Wesley und Markt+Techni, die zur Mediengruppe Pearson gehören im Rahmen einer Kooperation Schulungsvideos an. Ebenfalls finden sich viele Kurse zu Adobe Produkten im Angebot.

Dozenten können sich bei video2brain bewerben und nach erfolgreicher Annahme wird in Graz das Video von video2brain gedreht. Einen spannenden Artikel zu den Hintergruünden als Dozent schildert hier Tim Schürmann im Artikel "Video2brain: Eine Alternative zu Udemy? Video-Trainings bei Video2brain veröffentlichen" auf trainerbibel.de.

Während ich die Website ein wenig unübersichtlich empfand bin ich gerade am Testen des Angebot per Android App und hier wesentlich zufriedener.

Video2brain

App Video2brain
Marketlink: Eine Onlineregistrierung ist aus den oben beschriebenen Gründen per Weboberfläche sinnvoll.

Anmeldung und Registrierung

Nachdem die App installiert ist kann sich hier mit den Zugangsdaten angemeldet werden.
Bei der Anmeldung kann sich entweder als Person oder im Rahmen eines Unternehmens (oder Hochschule) auch per Organisation angemeldet werden.

Anmeldung als Person


Anmeldung als Privatperson

Wie beschrieben können sich "Privatpersonen" entweder per Social Webdienst (also Linkedin, Facebook, Google+) oder aber mit ihren Benutzernamen und Passwort anmelden. Letzteres ist für Hochschulangehörige auch nach Registrierung außerhalb des Hochschulnetzes möglich, sofern die Hochschule eine entsprechende Zugangsberechtigung hat.

Anmeldung als Organisation

Anmeldung als Organisation bei Brain2Video

Für einen Organisationszugang kann man nun die entsprechende Organisation auswählen und sich über die IP-Standortlizenz anmelden. Hierdurch sind keine Benutzerdaten erhoben, jedoch ist eine Anmeldung nur innerhalb des Hochschulnetzes (ggf. VPN) möglich. Als Beispiel ist hier die Universitäts- und Stadtbibliothek Köln ausgewählt.

Bibliothek und Trainingsverlauf

Mit einen Benutzer besteht die Möglichkeit auf Videos Lesezeichen zu setzen oder auch über den Trainingsverlauf in ein gesehenes Video wieder einzusteigen.

Hierbei ist die Bibliothek in Oberkategorien eingeteilt, die auch wieder Unterkategorien hat.
Ein kurzer Überblick dürfte hier die Hauptkategorie bieten.

Video2brain Bibliothek Hauptübersicht

Unterhalb der Hauptkategorie sind dann noch weitere Unterkategorien und auch beliebte Softwareprodukte ausgewiesen. Ferner kann auch über das gesamte Angebot die Lupe zur Suche verwendet werden. Interessant ist auch die Schaltfläche Trainingsverlauf.

Video2brain Trainingsverlauf

Über den Trainingsverlauf kann jederzeit in ein schon begonnenes Training erneut eingestiegen werden.

Aufbau der Schulungsvideos

Die einzelnen Videotutorials oder Trainings sind in kleine Trainingseinheiten von einigen Minuten eingeteilt, so dass hier entweder ein spezielles Thema angesteuert werden kann oder auch das Training nach einer Einheit abgebrochen und erneut fortgesetzt werden.

Ein gutes Beispiel ist hier in meinen Augen der Verlauf bei der Schulung zum Thema Matrixformeln.

Video2brain Excelschulung zu Matrixformeln

Während im oberen Bereich das Video läuft kann weiter unten die einzelne Kapitel aufgerufen werden, die Kursbeschreibung oder Hintergrundinfos zum Autoren oder auch weitere vorgeschlagene Videos zum Thema angezeigt werden.

Preise, Abomodelle, Einzelabruf

Neben dem Abomodell, welches monatlich kündbar (für 19,99 Euro) oder zu unterschiedlichen Jahresgebühren verfügbar ist (siehe Abos im Vergleich) können einzelne Schulungen auch käuflich erworben werden und dann dauerhaft betrachtet werden.

Nach der Registrierung stehen aber auch teilweise Gratiskurse zur Verfügung und zu jedem Video kann die Einleitung und teilweise auch das ein oder andere Probekapitel betrachtet werden.

Empfehlenswerte Office-Schulungen

Der von mir angesprochene Excelkurs "Excel: Matrixformeln Formeln für Fortgeschrittene" kann zum Beispiel auch für 39,95 Euro erworben werden.

Wenn man ohnehin schon ein Abo abgeschlossen hat ist auch der Kurs "Excel 2010: Datenanalyse Listen, Tabellen und Datenbanken auswerten" (29,95 Euro) sehenswert.

Derzeit habe ich noch "Excel 2010: Diagramme - So präsentieren Sie Ihre Zahlen professionell und verständlich" (39,95 Euro) und "Excel 2010: Dynamische Diagramme - Intelligente Zahlenpräsentation für Fortgeschrittene" (29,95 Euro) auf meiner Liste und bin hier von einigen Anregungen sehr angetan.

Gerade wenn der Wechsel in Richtung einer neuen Office Version geht, kann ich aber auch den Kurs "Von Office 2010 auf Office 2016 umsteigen" (29,95 Euro)

Hier ist es einfach eine Rechenfrage, ob sich nur ein einzelner Kurs lohnt, oder ob man sich für einen Monat immer mal wieder ein Einzelabo oder direkt Jahresabo nutzt.

SAP Schulungen

Für SAP sind in der Hauptsache zu Business One und Netweaver Kurse zu finden. Für die Kernmodule und SAP ERP sind leider weniger Kurse vorhanden. Allerdings bietet der Anbieter auch eine Themenwunschliste und vielleicht erweitert sich hier ja noch das Angebot.

Alternativ kann ich für SAP natürlich auch das Flatrate-Angebot von Espresso Tutorials empfehlen, dass neben Bücher auch Videos im Angebot hat.
Espresso Tutorial - Die digitale SAP Bibliothek

Auf der Seite "Espresso Tutorials - die digitale Bibliothek" kann das Angebot von Espresso Tutorials betrachtet werden. Für einen Jahresbetrag erhält man Zugriff auf den Bestand an eBooks des Verlags zu unterschiedlichen SAP Themen. Auf dieser Seite kann sich auch ein Überblick über die vorhandenen Medien verschafft werden.

Fazit

Auch wenn ich persönlich in Bezug auf Videotutorials sehr skeptisch bin, muss ich zugeben, dass ich sehr froh bin, dass mich ein Kollege auf dieses Angebot hingewiesen hat und die Qualität der Videos ebenso wie der vermittelte Stoff überzeugen mich durchaus. Allerdings sollte man ernsthaft darüber nachdenken, welche Kurse für einen interessant sind und eventuell dann tatsächlich nur ein Monatsabo oder eben einen einzelnen Kurs kaufen.

Als Alternative zum bewegten Bild sind für mich einfach auch heute noch Buchstaben sehr hilfreich, aber wie schon im Artikel "Onleihe - mein Weg zur digitalen Bibliothek" beschrieben kann ein neues Medium tatsächlich auch den Einstieg in ein bisher noch nciht erlerntes Thema sehr hilfreich sein. Dieses hatte ich ja auch erst beim Thema "Mindmapping und Sketchnotes im Beruf nutzen für Brainstorming oder Mind Mapping mit XMIND" bemerkt. In anderen Bereichen (Blogs, Zeitschriften etc.) ist mir ja ohnehin der Umgang mit "Infotainment oder Nachrichtenapps für Android" vertraut und ich möchte heutzutage nicht mehr darauf verzichten.

Videostreaming auf Monitor / Smart-TV

Ich nutze tatsächlich das Angebot am Tablet und bin davon sehr angetan. Für Personen die gerne am heimischen Smart-TV (bspw. per Amazon Fire TV oder Google Chromecast wobei hier durch Browser Plugin die Weboberfläche an das Smart-TV gesandt werden kann... ebenso gibt es die Möglichkeiten per Miracast das Tablet am Smart-TV zu streamen.... allerdings bin ich hier nicht so wirklich überzeugt und tatsächlich froh über ein Tablet.

Tatsächlich unterstützt Video2Brain auch direkt Chromecast, so dass die App im Hintergrund läuft und eine Schulung in der Statusleiste pausiert (bzw. gesteuert) werden kann und direkt an Google Chromecast gestreamt werden kann. Hierdurch ist die Überlegung naheliegend ein solches Angebot auch auf einen großen Monitor ablaufen zu lassen bspw. für eine Gruppenschulung.

Für mich ist dieses auch eine gute Option um nebenbei am Rechner einzelne Schritte nachvollziehen zu können.

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Werbung
Aktuelle Schulungstermine SAP S/4HANA Migrationscockpit und Migrationsobjektmodellierer

unkelbach.link/et.migrationscockpit/

Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Sonntag, 11. Mai 2014
16:58 Uhr

Dynamisches Importieren von Daten aus Excel nach Access unter Abfrage Speicherpfad per Makro und VBA

Ausgangslage
Innerhalb einer Access-Datenbank sollen verschiedene Berichte zusammengefasst und durch Abfragen miteinander verbunden werden. Hierzu ist es jedoch erforderlich, dass die zugrunde liegenden Tabellen aktualisiert werden und dafür in die Datenbank importiert werden können. Da es sich um eine Vielzahl von Tabellen handelt ist die Importfunktion in Access etwas umständlich. Vergleichbar zum Artikel "Excel Umgang mit Makros und Visual Basic for Applications (VBA)" bietet aber auch Access die Möglichkeit Makros zur Arbeitserleichterung zu verwenden an.
 

Makro unter Access zum Import erstellen

Zur Erstellung eines Makros kann im Ribbon Erstellen in der Befehlsgruppe Andere die Funktion Makro ausgewählt werden.

Hierbei unterscheiden sich die Oberflächen zwischen Access 2007 und Access 2010 erheblich. Daher wird im Folgenden sowohl auf Access 2007 als auch Access 2010 eingegangen.

Makro unter Access 2007 erstellen

Damit alle Funktionen zur Erstellung eines Makros aktiviert sind sollten sowohl die Schaltfläche "Alle Aktionen anzeigen", "Bedingungen" als auch "Argumente" in der Symbolleiste Entwurf aktiviert sein.
Ribbon Entwurf zur Makroerstellungen - Alle Aktionen anzeigen inklusive Bedingungen
Insbesondere die Möglichkeit Bedingungen vor der Ausführung von Aktionen zu hinterlegen ermöglicht es für jede Aktion vorher eine Rückfrage einzuholen.

1. Vorhandene Tabellen löschen
Als ersten Schritt sollen die bestehenden importierten Tabellen in der Datenbank gelöscht werden. Hierzu wird über die Aktion "Löschen Objekt" der Objekttyp Tabelle und über das Feld Objektklasse die eigentliche Tabelle gelöscht. Im Beispiel ist dieses die Tabelle "Grunddaten".
1. Schritt Tabelle löschen über LöschenObjekt
Durch die Bedigung Meldung("Tabelle löschen";1)=1 wird diese Aktion nur bei Bestätigung ausgeführt.

2. Neue/Aktualisierte Tabellen einfügen
Über die Funktion "TransferArbeitsblatt" kann sowohl der Import als auch Export von Tabellen erfolgen. Im Beispiel soll eine Exceltabelle (ExcelWorkbook) als Tabelle "Grundtabelle" importiert werden. Dieses funktioniert über den Transfertyp Importieren, Dateiformat Excel Workbook und Angabe des Tabellennamen "Grundtabelle"
Altion TransferArbeitsblatt unter Access 2007
Hierbei können sowohl der Dateiname hinterlegt werden (im Beispiel B:import.xls) als auch über das Feld Bereich das zu importierende Tabellenblatt (im Beispiel Grunddaten!A-Z) angegeben werden. Hier zeigt sich auch schon der Nachteil von Makros, da sowohl der Dateiname als auch der Speicherort fix angegeben werden müssen.Über die Option Besitzt Feldnamen wird die erste Zeile der Tabelle als Datensatzbeschreibung verwendet. Durch die Bedingung kann wiederum abgesichert werden, dass nicht aus Versehen unbeabsichtigt eine Tabelle importiert wird.

3. Abfrage per Makro starten
Wenn alle Tabellen importiert sind kann über die Aktion "ÖffnenAbfrage" eine entsprechende Abfrage gestartet werden.
Access 2007 Aktion ÖffnenAbfrage
Durch die Ansicht Datenblatt erscheint die Abfrage auch direkt als Auswertung und kann exportiert oder weiter bearbeitet werden.

Makro unter Access 2010 erstellen

Ab Access 2010 hat sich die Darstellung zur Erstellung von Makros von einer Tabellenform und darunter liegenden Attributen zu einer Baumstruktur verändert. Ferner wurde die Aktion TransferArbeitsblatt in die Aktion ImportierenExportierenTabellenblatt umbenannt. Bestehende Makros werden direkt umgewandelt.
Das eingangs beschriebene Makro würde unter Access 2010 wie folgt geschrieben werden:
Darstellung Makro ab Access 2010

Makro zu Visual Basic konvertieren

Sicherlich sind solche Makros eine Arbeitserleichterung beim Import und auch der Verarbeitung von außerhalb der eigentlichen Access Datenbank liegenden Tabellen und sonstigen Daten.

Allerdings sind prinzipbedingt die einzelnen Abfragen auch relativ eingeschränkt in ihrer Funktionsweise. So war es in Access 2007 nur möglich für jede einzelne Aktion eine entsprechende Bedingung zu definieren. Ab Access 2010 können innerhalb der Bedingung auch mehrere Aktionen eingefügt werden. Allerdings ist auch unter Access der Import von Tabellenblättern nur über die Angabe des genauen Dateinamens inklusive Speicherort möglich. Hier gibt es unter VBA aber darüber hinaus gehende Möglichkeiten.  Im ersten Schritt muss hierfür das angelegte Makro in eine VBA Funktion umgewandelt werden

Unter Access 2007 kann über die Datenbanktools die Funktion "Makros zu Visual Basic konvertieren" aufgerufen werden.
Access 2007 Makro zu VBA konvertieren
Ab Access 2010 befindet sich diese Funktion in der Entwurfsansicht des jeweiligen Makros.
Access 2010 Makro zu VBA konvertieren
Unter beiden Funktionen wird das vorher entworfene Makro dann als VBA Code dargestellt und kann als Modul im VBA Editor betrachtet und bearbeitet werden.

Der VBA Code für das oben beschriebene Makro würde dabei wie folgt umgewandelt werden.
Access VBA Code aus Makro
Das beschriebene Makro ist nun als Function angelegt und steht als VBA Modul in der Access Datenbank zur Verfügung.

Per Makro VBA Funktion ausführen

Diese Funktion kann dann als Code über ein neues Makro aufgerufen werden.
Unter Access 2007 ist dieses über die Aktion "AusführenCode" möglich.
Access 2007 AusführenCode
Hier wird direkt die nun vorhandene Funktion Import ohne weitere Argumente ausgeführt.
Ab Access 2010 hat sich hier eigentlich nur die Darstellung verändert, so dass auch hier der Code ausgeführt werden kann.
Access 2010 Funktion ausführen

Erweiterung Makro um VBA Code

Der Vorteil bei der Umwandlung zu VBA besteht darin, dass nun die aus der Makrofunktion bekannten Funktionen erheblich erweitert werden können.

Dynamischer Speicherort zum Import von Daten verwenden

Wie beim Makro TransferArbeitsblatt beziehungsweise ImportierenExportierenTabellenblatt beschrieben muss zum Import einer Tabelle nach Access sowohl der Dateiname der Exceltabelle als auch der Speicherort (im Beispiel war dieses b:import.xls) angegeben werden. Sofern die Datenbank aber flexibel genutzt werden soll, oder aber sich der Speicherort der zu importierenden Daten auch ändern kann, kann folgende Ergänzung des VBA Codes sinnvoll sein.

    Dim Pfad As String
    Pfad = Application.CurrentProject.Path
    
    If MsgBox("Import aus " & Pfad & " ?", vbYesNo) = vbYes Then
       Pfad = InputBox("Pfadnamen ohne abschliessenden ")
    End If
    
    MsgBox "Import aus " & Pfad & " !", vbInformation, "Importquelle"


Über die Anweisung DIM Pfad As String wird eine Variable von Typ String definiert. Diese Variable bekommt als Wert den aktuellen Projektpfad der Accessdatenbank zugewiesen, so dass die Datenbank im Idealfall zu den zu importierenden Dateien kopiert werden kann.
Sofern die Importdaten jedoch in einen anderen Pfad liegen kann über die InputBox ein anderer Pfad angegeben werden. In Form einer Infobox wird danach noch einmal der Importpfad angegeben.

Die Anweisung zum Import der Tabelle import.xls kann nun wie folgt angepasst werden:

If (MsgBox("Tabelle importieren", 1) = 1) Then
        DoCmd.TransferSpreadsheet acImport, 10, "Grundtabelle", Pfad & "import.xls", True, "Grunddaten!A:Z"
End If

Hier wird nun ebenfalls das Tabellenblatt Grunddaten aus der Tabelle import.xls importiert. Jedoch kann der Speicherort vorher nochmals geändert werden. Sofern dieser Pfad nicht geändert wurde, wird der Pfad der Access-Datenbank verwendet.

Verschachtelte Bedingungen

Ein weiterer Vorteil innerhalb VBA ist, dass hier auch mehrere Bedingungen miteinander verschachtelt werden können oder auch mehrere Aktionen nach einer Bedingung gestartet werden können.

Sollen nach erfolgreichen Import der Tabellen auch mehrere Abfragen gestartet werden kann dieses über folgende Anweisung erfolgen.


    MsgBox "Daten wurden importiert", vbOKOnly, "Keine Panik"
    If (MsgBox("Auswertungen starten", 1) = 1) Then
        DoCmd.OpenQuery "110 Auswertung 1", acViewNormal, acReadOnly
        DoCmd.OpenQuery "120 Auswertung 2", acViewNormal, acReadOnly
        DoCmd.OpenQuery "130 Auswertung 3", acViewNormal, acReadOnly
    MsgBox "Speichern Sie die einzelnen Abfragen und kopieren die Daten über Inhalte Einfügen->Transponieren in die Zieltabelle", vbInformation, "Daten ausgewertet"
    End If


Hierdurch werden nach erfolgreichen Importiert der Tabellen drei Auswertungen gestartet und eine Anweisung ausgegeben, wie mit diesen weiter verfahren werden soll. Dieses erfolgt über die Anweisung DoCmd.OpenQuery verbunden mit der Darstellung Normal und Schreibgeschützt. Danach wird über die Anweisung MsgBox eine Anweisung zur weiteren Verarbeitung der Daten ausgegeben.

Insgesamt würde die angepasste Anweisung wie folgt lauten:
Access Beispiel dynamischer VBA Code zum Importieren von Exceltabellen
Entsprechend könnten auch weitere Anweisung innerhalb des VBA Codes angepasst werden und hierdurch eine wesentlich flexiblere Importfunktion gestaltet werden. Darüber hinaus können auch weitere Informationen und Anweisungen zur Handhabung der Datenbank hinterlegt werden.

Als Gesamtcode würde dieses dann in Access 2010 wie folgt aussehen:

Function Import()
 Dim Pfad As String
    Pfad = Application.CurrentProject.Path
    
    If MsgBox("Import aus " & Pfad & " ?", vbYesNo) = vbYes Then
       Pfad = InputBox("Pfadnamen ohne abschliessenden ")
    End If
    
    MsgBox "Import aus " & Pfad & " !", vbInformation, "Importquelle"

    If (MsgBox("Tabelle löschen?", 1) = 1) Then
        DoCmd.DeleteObject acTable, "Grunddaten"
    End If

If (MsgBox("Tabelle importieren", 1) = 1) Then
  DoCmd.TransferSpreadsheet acImport, 10, "Grundtabelle", Pfad & "import.xls", True, "Grunddaten!A:Z"
End If
MsgBox "Daten wurden importiert", vbOKOnly, "Keine Panik"
        If (MsgBox("Auswertungen starten", 1) = 1) Then
            DoCmd.OpenQuery "110 Auswertung 1", acViewNormal, acReadOnly
            DoCmd.OpenQuery "120 Auswertung 2", acViewNormal, acReadOnly
            DoCmd.OpenQuery "130 Auswertung 3", acViewNormal, acReadOnly
MsgBox "Daten über Inhalte Einfügen->Transponieren in die Zieltabelle", vbInformation, "Daten ausgewertet"
End If

Import_Exit:
    Exit Function

Import_Err:
    MsgBox Error$
    Resume Import_Exit

End Function



Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Werbung
Steuern, Selbstständigkeit und VGWORT als Blogger und Autor
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Freitag, 28. September 2012
19:50 Uhr

Access (leere Datenfelder summieren)

Ausgangslage

In einer Abfrage sollen aus 3 Tabellen (Vorjahr, Laufendes Jahr und Folgejahr) für entsprechende Kostenträger Budgetwerte summiert werden.

Hierzu werden die Felder
Budget_VJ
Budget_LJ
Budget_FJ
aus den entsprechenden Tabellen ausgwertet und addiert.

Hier soll die Berechnung allerdings auch ausgeführt werden, wenn der Feldwert leer ist.

Beispiel:
Für Kostenträger 0815 gibt es nur einen Budget_VJ. In einer Abfrage sollen nun aber Budget_VJ + Budget_LJ + Budget_FJ ermittelt werden. Access rechnet allerdings nicht mit leeren Feldwerten, so dass hier trotz vorhanden Budget_VJ kein Wert ausgegeben wird.

Lösung:

Sollen Berechnungen auch ausgeführt werden, wenn der Feldwert leer ist, so ist bei den Feldwerten (im Beispiel Budget_VJ, Budget_LJ und Budget_FJ)
die Formel

Vorjahresbudget:
NZ([Vorjahrestabelle]![Budget_VJ];0)

zu nehmen.

Nun wird eine 0 ausgegeben sofern kein eigener Wert im Feld vorhanden war. Auf diese Weise kann nun innerhalb einer Formel auch bei teilweise nicht gefüllten Werte eine Summe gebildet werden.

Der Aufbau der Funktion ist NZ(Ausdruck;WertWennNull).

Alternativ könnte auch eine Aktualisierungsabfrage über die Tabelle mit Kriterium "IST NULL" ausgeführtwerden um die entsprechenden Felder mit "0" zu aktualisieren.

Hiernach ist auch das Rechnen mit diesen Spalten möglich.

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Werbung
Abschlussarbeiten im SAP S/4HANA Controlling (📖)

Für 29,95 € direkt bestellen

Oder bei Amazon ** Oder bei Autorenwelt

Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de





* Amazon Partnerlink/Affiliatelinks/Werbelinks
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Weitere Partnerschaften sind unter Onlineshop und unter Finanzierung und Transparenz aufgeführt. Hinauf






Logo Andreas-Unkelbach.de
Andreas Unkelbach Blog
ISSN 2701-6242

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

UStID-Nr: DE348450326 - Kleinunternehmer im Sinne von § 19 Abs. 1 UStG

Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter XING

Linkedin Mastodon Bluesky

Amazon Autorenwelt Librarything

Buchempfehlung
Schnelleinstieg ins SAP®-Controlling (CO) – 2., erweiterte Auflage

29,95 € Amazon* Autorenwelt

Espresso Tutorials

unkelbach.link/et.reportpainter/

unkelbach.link/et.migrationscockpit/

Privates

Kaffeekasse 📖 Wunschliste