Scriptsprache integrieren....



  • Hi,

    ich bin vermutlich mit meiner Frage im falschen Forum, aber ich wüßte jetzt nicht wo i das sonst hinschreiben sollte.
    Ich möchte in meinem Programm Belege ausdrucken, die jetzt je nach Kunde anders aussehen. Allerdings sind sie nicht so aufwendig, dass sich dafür ein Reportgenerator lohnt.
    Bisher habe ich es so gemacht, dass ich verschiedene Belegarten fest eingeabut habe, und der Benutzer kann dann auswählen.
    Am schönsten wäre das antürlich, wenn man so eine Art Beschreibung in einer Datei hinterlegen könnte. Ähnliches gilt für eine ftp-Übertragung, wo ich je nach Kunde unterschiedliche Kommandos absetzen muss.
    Sowas habe ich noch nie gemacht, hat jemand da eine Idee ?
    Ich fand jetzt über Google die Scriptsprache "Lua", aber ich bin mir noch nicht sicher ob mir fas wirklich weiterhilft, wohl eher nicht.

    Greets
    Karlheinz



  • Also eine Scriptsprache hilft dir hier meiner Meinung nicht weiter. Das ist einfach nur rumgefrickel. Was soll denn die Scriptsprache dir denn leisten können? Wenn ein Reportgenerator zu groß ist (finde ich ehrlich gesagt ne doofe Ausrede), wird dir eine Scriptsprache keinen Deut weiter helfen.



  • Deine Belege sollen also konfigurierbar sein. Jetzt bleibt nur die Frage, soll der Programmbenutzer diese selbst verändern können? Wenn ja kommst du um einen Formulargestalter nicht herum.

    Prinzipiell würde ich für jeden Beleg eine Vorlage z.B. als XML-Datei anlegen.
    Dort dann die Position und den Inhalt der Objekte abspeichern. Deine Software liesst diese XML ein und füllt die Objekte mit aktuellen Werten und druckt diese aus.

    <beleg name="Rechnung">
     <objekt posX=100 posY=20 inhalt="#adresse#"/>
     <objekt posX=100 posY=50 inhalt="Rechnung Nr. #ReNr# "/>
    </beleg>
    

    Beleg mit Name Rechnung (erscheint bei Auswahl).
    An Position 100,20 soll #adresse# erscheinen, deine Software ersetzt den Platzhalter #adresse# durch die wirkliche Anschrift.
    An Position 100,50 soll der Text "Rechnung Nr. xxx" stehen, #ReNr# erkennt deine Software als Platzhalter und setzt dorthin die Rechnungsnummer.
    Und so weiter....



  • Naja, bei dem Aufwand den man betreiben muß, kann man ja auch gleich einen Report-Generator benutzen...



  • ist keine Ausrede, Bulli. Du solltest vielleicht mit sowas etwas vorsichtiger sein.
    Ein Belegdrucker wird auch heutzutage eigentlich nicht von Windows unterstüzt. Die Dinger werden an die parallel Schnittstelle angeklemmt, und selbst von Herstellern wie Epson oder Star gibt es keine Druckertreiber.
    Man muss also über den HAL auf die Hardware der Schnittstelle zugreifen.
    Zeige mir mal einen Reportgenerator, der sowas kann........



  • Ist zwar für MFC, aber als Vorlage recht gut.
    http://www.codeproject.com/KB/printing/ReportGenerator.aspx

    Eventuell brauchst du erstmal keinen Editor sondern machst am besten eine XML-Datei oder zur Not eine Ini-Datei. Die kann man auch von Hand bearbeiten.
    Das Platzhalterersetzen geht einfach über die Replace-Funktion der Stringklasse
    mystring.Replace("#Datum#", GetDateAsString()), so in etwa...



  • Softwaremaker. Ich denke mit dem Ansatz kriege ich was gebacken.

    THX für die Idee

    Greets
    Karlheinz



  • Grieko schrieb:

    ist keine Ausrede, Bulli. Du solltest vielleicht mit sowas etwas vorsichtiger sein.
    Ein Belegdrucker wird auch heutzutage eigentlich nicht von Windows unterstüzt. Die Dinger werden an die parallel Schnittstelle angeklemmt, und selbst von Herstellern wie Epson oder Star gibt es keine Druckertreiber.
    Man muss also über den HAL auf die Hardware der Schnittstelle zugreifen.
    Zeige mir mal einen Reportgenerator, der sowas kann........

    Ein Reportgenerator erzeugt Reports, die du nachher auf beliebigen Wege ausdrucken kannst. Der Reportgenerator interessiert sich nicht dafür, wo und wie das Ganze nachher ausgedruckt wird. Es wäre eine Schande, wenn der Reportgenerator für den Ausdruck zuständig ist. Ein Reportgenerator ruft für Gewöhnlich den Windows-Druckdienst auf, so das der Anwender den Drucker auswählen kann. Ob das ein echter Drucker am Parallelport, COM, USB, Ethernet oder sonst was ist, interessiert den Reportgenerator nicht. Alternativ kann ein Reportgenerator auch einfach nur eine PDF-Datei, Bitmap-Datei o.ä. erzeugen, dann kann man den Report sogar garnicht ausdrucken, sondern digital archivieren. Oder halt mit einer ganz andere Software (die super spezielle Hardware anspricht) übergeben. Die kann dann meinetwegen die Datei auf nem C64-Userport an einen CBM-7-Nadeldrucker ausgeben.

    Warum jetzt eine Scriptsprache das ganze besser lösen soll... Fragen über Fragen.


Anmelden zum Antworten