Viele erfolgreiche Zusatzprogramme beschäftigen sich mit der Konvertierung von i5-Daten in Excel oder Word. In diesem Artikel finden sie Beispiele zum Programmieren eigener Anwendungen. Sie sehen, wie i5-Daten in MS-Office ausgegeben oder von dort eingelesen werden. Natürlich können Sie die Office-Programme auch über i5-Daten steuern. Unser Werkzeug ist Microsoft DotNet, wir verwenden die Sprachen VisualBasic von Microsoft und VisualRPG von ASNA, auf die i5 greifen wir über ODBC oder DataGate von ASNA zu.
Echte Office-Integration birgt ein großes Rationalisierungspotenzial
Sehr oft geht Zeit damit verloren, auf der i5 vorhandene Daten unter Windows herzustellen oder zu verarbeiten. Ein Paradebeispiel dafür ist die Verarbeitung von i5-Daten über die MS-Office-Produkte.
Ein praktikabler Lösungsansatz ist der Einsatz von DotNet-Programmen, die Daten von der i5 holen und in die MS-Office-Programme einbinden und diese – wenn nötig – auch steuern.
Dieser Artikel zeigt einige Anwendungsbeispiele aus der Praxis. Der Lösungsansatz wird beschrieben, Sie finden hier auch Details der Umsetzung. Den Programmcode für die Beispiele können Sie über den Autor beziehen. Senden Sie eine e-Mail an: c.neissl@niceware.at.
ODBC, OLEDB und Co.
Als DotNet-Programmierer ist man mit dieser Technologie vertraut. Im Hinblick auf die i5 hilft einem das aber relativ wenig. Die Möglichkeit, die i5 über die Standard-Technologie einzubinden, besteht zwar, sie hat aber Ihre Tücken – z. B. in der Performance. Um gelegentlich Daten aus der i5 zu holen, reicht es allemal. Als Basis für eine professionelle Anwendung ist dieser Weg nicht zu empfehlen.
Das erste Beispiel zeigt eine Übernahme von Lagerständen in eine Excel-Tabelle, wobei für jede Artikelgruppe ein Worksheet erzeugt wird.
WORD ist ein williges Opfer
Im zweiten Anwendungsbeispiel sehen Sie, wie ein Word-Dokument durch ein VisualRPG-Programm mit Daten vorbereitet und dem Anwender zum Fertigstellen übergeben wird. In früheren Zeiten wurde diese Aufgabenstellung über das inzwischen dahingeschiedene AS/400-Office-Vision gelöst.
Hier finden Sie einen zeitgemäßen Lösungsansatz, den Sie auch gleich auf Ihre Bedürfnisse abstimmen können. Um zu zeigen, wie vielseitig VisualRPG ist, habe ich in diesem Projekt (quasi als Revanche für all die Beispiele, mit denen über ODBC usw. auf die i5 zugegriffen wird) die Datenbank „Access“ verwendet. Lassen Sie sich also von VisualRPG im Bezug auf Office-Automation überraschen.
Überall finden sich Miniatur-B2B-Lösungen,
die auf den Austausch von Excel-Daten beruhen. In unserem letzten Beispiel sehen Sie, wie eine TXT-Datei in Excel geladen wird, wie die darin enthaltenen Daten gegen die i5 geprüft werden und wie sie, wenn das „OK“ gegeben worden ist, übernommen werden. Wenn die Prüfung gegen die i5 nicht bestanden wurde oder sich Fehler in den Dateninhalten zeigten, wird eine entsprechende Meldung in Excel ausgegeben.
Die Sprache, in der diese Lösung erstellt wurde, ist VisualBasic. Der Zugriff auf die i5 erfolgt über DataGate von ASNA. Sehen Sie dazu Projekt 3.
Projekt 1 – Midrange-Lagerliste
Hier wird eine XLS-Datei mit Worksheets gefüllt, die die aktuellen Artikeldaten und Lagerstände enthält. Das Programm sucht zuerst die Artikelgruppen aus und erstellt für jede Artikelgruppe ein Worksheet innerhalb dieser Datei. In Abbildung 1 sehen Sie das Programm zur Laufzeit. In der Liste finden Sie die Artikelgruppen, die nacheinander abgearbeitet werden. Das Ergebnis sehen Sie in Abbildung 2.
Zum Zugriff wird eine ODBC-DataSource verlangt, die unter „Systemsteuerung _ Verwaltung _ Datenquellen“ angelegt werden muss. Danach kann über den Connection-String zugegriffen werden.
Das Programm ist parametergesteuert. In Abbildung 3 sehen Sie die Programm-Parameter. Die sind ausnahmsweise in einer INI-Datei abgelegt. Unter DotNet ist das ja out, man verwendet XML.
Abbildung 4 zeigt das Kernmodul, in dem das EXCEL-Objekt erstellt wird. Außerdem wird das Erstellen des Worksheets für jede gefundene Artikelgruppe aufgerufen.
Projekt 1 – Abbildung 1
Projekt 1 – Abbildung 2 – Fertige Excel-Ausgabedatei
Projekt 1 – Abbildung 3 – Parameterdatei
Projekt 1 – Abbildung 4 – Hauptschleife im Programm
Projekt 2 – Word-Automation
Dieses Modul stammt aus XMPL – meinem VisualRPG-OpenSource-Projekt. Im Word-Dokument sind Textmarken eingebaut, die die gleichen Namen wie die Datenfelder haben. Siehe Abbildung 1. In Abbildung 2 sehen Sie den Code, mit dem diese Textmarken angesprochen werden.
Woher weiß man nun, welche Funktion von den einigen tausend Funktionen, die Word anbietet, die richtige ist. Da hilft Word mit dem Makro-Editor weiter. Starten Sie den Editor und führen Sie die Schritte, die Sie von Word erwarten, manuell durch. Der Makro-Editor schreibt den Code, der dann nur noch in das Programm übernommen werden muss. Siehe Abbildung 4. Diese Erfolgsstrategie ist in allen Office-Produkten möglich.
Projekt 2 – Abbildung 1 – Textmarken im Formular
Projekt 2 – Abbildung 2 – Ausfüllen der Textmarken
Projekt 2 – Abbildung 3 – Start des Word-Makro-Editors
Projekt 2 – Abbildung 4 – Word-Makro-Editor
Projekt 3 – EXCEL-MiniB2B-Lösung
In diesem VisualBasic-Projekt wird demonstriert, wie über ASNA-DataGate i5-Tabellen angesprochen und aktualisiert werden können.
Unter VB stehen die selben Funktionen zur Verfügung wie in VisualRPG. Allerdings sind sie um einiges umständlicher zu programmieren, da nicht direkt auf Felder, sondern auf das DotNet-Standard-Datenobjekt (das DataSet) zugegriffen wird. Auch das hat seine Vorteile und kann unter Umständen durchaus sinnvoll sein.
In Abbildung 1 wird die Anwendung gezeigt, in der eine Excel-Tabelle bereits ausgewählt wurde. Mit der Checkbox „Excel bei der Arbeit zu sehen“ bekommt man während des Programmlaufs auch ein bisschen Unterhaltung geboten.
In Abbildung 2 sehen Sie die fertig bearbeitete Tabelle, in der die fehlerhaften Felder markiert wurden.
In Abbildung 3 und 4 wird der Direktzugriff auf i5-Tabellen über DataGate demonstriert.
Abbildung 3 zeigt einen Zugriff über Satzschlüssel unter VB. Mit der Methode ReadRandomKey des FileAdapters wird auf den Satz zugegriffen, ohne eine Sperre auszulösen. Unter VisualRPG würde eine Zeile mit CHAIN genügen.
Abbildung 4 zeigt einen Zugriff mit Sperre und ein Update. Beim Update wird der Datensatz zuerst mit PrepareRow instantiiert, dann durch die Funktion FillRecord mit Daten gefüllt und schließlich mit der Methode ChangeCurrent aktualisiert. Natürlich muss der Satz mit ReleaseCurrent wieder freigegeben werden. Für VisualRPG-Programmierer wäre das schlicht und ergreifend ein CHAIN mit folgendem UPDATE.
Projekt 3 – Abbildung 1 – Programmstart MiniB2B
Projekt 3 – Abbildung 2 – Bearbeitete XLS-Tabelle
Projekt 3 – Abbildung 3 – Datenprüfung mittels Direktzugriff über Schlüssel auf i5-Datei
Projekt 3 – Abbildung 4 – Update eines i5-Datensatzes unter VB
Fachautor: Christian Neißl