Hallo Liste, hat hier jemand Erfahrung mit der Serienbrieferstellung aus C++ ? Ich habe kleine Erfolge mit einfachen Reporten. (wxReportWriter, wxWidgets basiert) Suche aber mehr folgendes: Kundenanschreiben (Template) mit Rechnungen/Bestätigungen/... (Incl. Listen, z.B. Artikel/Menge ...) Danke, Lothar -- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
* lothar.behrens@lollisoft.de [24.08.2005 23:02]:
Hallo Liste,
hat hier jemand Erfahrung mit der Serienbrieferstellung aus C++ ?
Was mir spontan einfällt: * LaTeX generieren und latex drüberlaufen lassen * das gleiche mit HTML und htmldoc * oder eine PDF-Library verwenden, z. B. http://www.pdflib.com/ Gruß, Bernhard
Hallo, Am Wed, 24 Aug 2005, Bernhard Walle schrieb:
* lothar.behrens@lollisoft.de [24.08.2005 23:02]:
hat hier jemand Erfahrung mit der Serienbrieferstellung aus C++ ?
Was mir spontan einfällt:
* LaTeX generieren und latex drüberlaufen lassen
ACK. BTDT. V.a. zum Ausdrucken ist das das Mittel der Wahl. Die Frage ist nur, wo die Daten herkommen. Wenn z.B. aus mysql oder eine anderen DB reicht z.B. ein shell-script/SQL-Abfrage (statt C++), die einem ein bisserl LaTeX um die Daten rumstrickt zusammen mit einer LaTeX-"Vorlage"... D.h. natuerlich nicht, dass man den LaTeX-Code nicht auch per C++ erstellen kann ;) Duerfte sogar bei grossen Datensaetzen performanter sein... Beim Erstellen einer solchen Vorlage fuer LaTeX bin ich (ggfs. gegen Entgelt, kommt auf das Problem und dessen Einsatzzweck an) gerne behilflich.
* das gleiche mit HTML und htmldoc
Taugt eher nicht zum Ausdrucken.
* oder eine PDF-Library verwenden, z. B. http://www.pdflib.com/
Wie schwer ist's damit ein "gescheites" Layout hinzubekommen? Mit PDFLaTeX hat man das Problem eben nur einmal -- beim Erstellen der Vorlage... -dnh -- "I stopped at Land's End, because to go any further would have been Scilly." -- Robert Billing
On Thu, 2005-08-25 at 08:19 +0200, David Haller wrote:
Hallo,
Am Wed, 24 Aug 2005, Bernhard Walle schrieb:
* oder eine PDF-Library verwenden, z. B. http://www.pdflib.com/
Wie schwer ist's damit ein "gescheites" Layout hinzubekommen? Man beachte die Lizenz - Damit disqualifiziert sich PDFlib für viele Anwendungen von selbst.
Ralf
* Ralf Corsepius [25.08.2005 08:30]:
On Thu, 2005-08-25 at 08:19 +0200, David Haller wrote:
Am Wed, 24 Aug 2005, Bernhard Walle schrieb:
* oder eine PDF-Library verwenden, z. B. http://www.pdflib.com/ Wie schwer ist's damit ein "gescheites" Layout hinzubekommen? Man beachte die Lizenz - Damit disqualifiziert sich PDFlib für viele Anwendungen von selbst.
Das war nur ein Beispiel, es gibt auch andere Librarys. Z. B. iText (Java, aber mit gcj kompilierbar und aus C++ verwendbar, wie z.B. in pdftk geschehen). Ich würde aber wohl LaTeX wählen, weil man da schneller ein hochwertiges Ergebnis erhält. Gruß, Bernhard
hallo Könnte mir bitte jemand sagen warum das nicht funktioniert: QSqlCursor cursor("tabelle"); cursor.select("MR='"+s+"'"); QSqlRecord *record = cursor.primeUpdate(); QMessageBox::information( this, "Achtung","vorher: " + record->value("Bemerkung").toString()); record->setValue("Bemerkung",b); cursor.update(); QMessageBox::information( this, "Achtung","nachher: " + record->value("Bemerkung").toString()); Das Teil soll eine neue Bemerkung in die Tabelle schreiben. Der Code wird nur angesprungen wenn der Datensatz existiert. Die Feldnamen sind richtig geschrieben. Die Message Box gibt die Werte so aus wie man es erwartet. (Vorher den alten Wert, nachher den neuen) Nach diesen Code wird nicht mehr auf die Tabelle zugegriffen. Der Code steht am Ende einer Funktion, also cursor und record werden gelöscht. Wenn ich die Änderung mit einer normalen Abfrage (UPDATE ....) schreibe funktioniert es. Nur mit QSqlCursor nicht. ich sitze nun schon den ganzen tag an diesen zeilen. Vielen dank im voraus mfg
Am 24 Sep 2005 um 18:26 hat Norbert Pilsl geschrieben: Hi, ist's das ?: If the cursor does not have a unique primary index, update and deletes cannot be performed. Lothar
hallo
Könnte mir bitte jemand sagen warum das nicht funktioniert:
QSqlCursor cursor("tabelle"); cursor.select("MR='"+s+"'"); QSqlRecord *record = cursor.primeUpdate(); QMessageBox::information( this, "Achtung","vorher: " + record->value("Bemerkung").toString()); record->setValue("Bemerkung",b); cursor.update(); QMessageBox::information( this, "Achtung","nachher: " + record->value("Bemerkung").toString());
Das Teil soll eine neue Bemerkung in die Tabelle schreiben. Der Code wird nur angesprungen wenn der Datensatz existiert. Die Feldnamen sind richtig geschrieben. Die Message Box gibt die Werte so aus wie man es erwartet. (Vorher den alten Wert, nachher den neuen) Nach diesen Code wird nicht mehr auf die Tabelle zugegriffen. Der Code steht am Ende einer Funktion, also cursor und record werden gelöscht. Wenn ich die Ãnderung mit einer normalen Abfrage (UPDATE ....) schreibe funktioniert es. Nur mit QSqlCursor nicht.
ich sitze nun schon den ganzen tag an diesen zeilen. Vielen dank im voraus mfg
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
-- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
hallo danke für die Antwort. Die Tabelle hat einen eindeutigen ersten Index.(Name="ID") Muß auch der cursor.select() auf "ID" eingestellt werden?
ist's das ?: If the cursor does not have a unique primary index, update and deletes cannot be performed.
Lothar
hallo
Könnte mir bitte jemand sagen warum das nicht funktioniert:
QSqlCursor cursor("tabelle"); cursor.select("MR='"+s+"'"); QSqlRecord *record = cursor.primeUpdate(); QMessageBox::information( this, "Achtung","vorher: " + record->value("Bemerkung").toString()); record->setValue("Bemerkung",b); cursor.update(); QMessageBox::information( this, "Achtung","nachher: " + record->value("Bemerkung").toString());
Das Teil soll eine neue Bemerkung in die Tabelle schreiben. Der Code wird nur angesprungen wenn der Datensatz existiert. Die Feldnamen sind richtig geschrieben. Die Message Box gibt die Werte so aus wie man es erwartet. (Vorher den alten Wert, nachher den neuen) Nach diesen Code wird nicht mehr auf die Tabelle zugegriffen. Der Code steht am Ende einer Funktion, also cursor und record werden gelöscht. Wenn ich die Ãnderung mit einer normalen Abfrage (UPDATE ....) schreibe funktioniert es. Nur mit QSqlCursor nicht.
ich sitze nun schon den ganzen tag an diesen zeilen. Vielen dank im voraus mfg
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
-- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
-- Mit freundlichen Grüßen Norbert Pilsl München
Am 25 Sep 2005 um 11:43 hat Norbert Pilsl geschrieben:
hallo
danke für die Antwort. Die Tabelle hat einen eindeutigen ersten Index.(Name="ID") Muß auch der cursor.select() auf "ID" eingestellt werden?
Kann ich Dir nicht sagen. Ich habe nur in der offiziellen QT Dokumentation nachgesehen :-) http://doc.trolltech.com/3.2/qsqlcursor.html Verwendest Du ODBC ? Ich selbst verwende meine eigenen ODBC Wrapper. Ich muss jedenfalls nicht irgend einen Filter setzen (ID=xxx). Vielleicht ist die ODBC Konfiguration nicht auf 'Updateable Cursor' eingestellt ? (War bei mir anfangs ein Problem: PostgreSQL ODBC Config) Wenn das so ist, gehen Cursor nur Readonly, aber direkte SQL update Statements klappen (kein Cursor). Hast Du ein anderes Programm, das mit Cursorn auf Deiner Datenbank arbeitet ? (Vergleich) Lothar -- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
Am 25 Sep 2005 um 22:17 hat Norbert Pilsl geschrieben:
Hallo
Verwendest Du ODBC ?
Nein. Normale MySQL-Datenbank
Naja. Dann habe ich keine Ideen mehr :-(
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
-- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
Am 25.08.2005 um 08:19 schrieb David Haller:
Hallo,
Am Wed, 24 Aug 2005, Bernhard Walle schrieb:
* lothar.behrens@lollisoft.de [24.08.2005 23:02]:
hat hier jemand Erfahrung mit der Serienbrieferstellung aus C++ ?
Was mir spontan einfällt:
* LaTeX generieren und latex drüberlaufen lassen
ACK. BTDT. V.a. zum Ausdrucken ist das das Mittel der Wahl. Die Frage ist nur, wo die Daten herkommen. Wenn z.B. aus mysql oder eine anderen DB reicht z.B. ein shell-script/SQL-Abfrage (statt C++), die einem ein bisserl LaTeX um die Daten rumstrickt zusammen mit einer LaTeX-"Vorlage"... D.h. natuerlich nicht, dass man den LaTeX-Code nicht auch per C++ erstellen kann ;) Duerfte sogar bei grossen Datensaetzen performanter sein...
Ist eben aus C++. Um etwas genauer zu werden, aus einer GUI Anwendung, die mit Hilfe der wxWidgets Library und meiner eigenen erstellt wird. Die Idee mit Latex hatte ich nicht direkt, aber mit einem Rtf Text Control konnte ich unter Windows schon einfache Vorlagen erstellen und für den Ausdruck verwenden. Es ist nicht so schwer, einen Rtf basierten Vorlageneditor auch unter Anwendung der wxWidgets Library zu erstellen (Rtf Text in einer Datenbank gespeichert). Es ist die Kombination aus Vorlage für einen Brief und einem Report, die als Anschreiben für einen Kunden dienen soll. Was dem wxReportWriter noch fehlt, wäre eine Rtf Text Passage, die für solche Dinge Verwendung finden würde. Ich möchte ja nicht immer das Rad neu erfinden, vielleicht ist jemand schon damit beschäftigt.
Beim Erstellen einer solchen Vorlage fuer LaTeX bin ich (ggfs. gegen Entgelt, kommt auf das Problem und dessen Einsatzzweck an) gerne behilflich.
Ich selbst nicht, aber wenn soetwas irgendwo benötigt werden würde, leite ich es weiter :-)
* das gleiche mit HTML und htmldoc
Taugt eher nicht zum Ausdrucken.
* oder eine PDF-Library verwenden, z. B. http://www.pdflib.com/
Wie schwer ist's damit ein "gescheites" Layout hinzubekommen?
Mit PDFLaTeX hat man das Problem eben nur einmal -- beim Erstellen der Vorlage...
Und mit PDFCreator von jedem Programm als Grundlage :-) Also grundsätzlich sehe ich eine Rtf/PDF/Latex Vorlage für nichtwiederholende Texte als Lösung. (Rtf/PDF/Latex Editor direkt/indirekt/indirekt) Und wxReportWriter für Reporte. Ich brauch eben beides in einem. Wobei ich in der Erweiterung des Reportwriters nur das Ausgeben des Rtf Textes in einen Bereich des Reportes sehe. Evtl. kontaktiere ich den Autor von wxReportWriter mit diesem Vorhaben. Lothar
-dnh
-- "I stopped at Land's End, because to go any further would have been Scilly." -- Robert Billing
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
-- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
participants (6)
-
Bernhard Walle
-
David Haller
-
Lothar Behrens
-
lothar.behrens@lollisoft.de
-
Norbert Pilsl
-
Ralf Corsepius