Benutzer mit den meisten Antworten
Wie gestalltet ihr Formulare?

Frage
-
Hallo Programmierer
Wir haben eine Anwendung welche auch Formulare zum ausfüllen und ausdrucken verwaltet. Wir müssen einige der Formulare anpassen und einige neue hinzufügen. Wir dürfen die alten aber nicht wegschmeißen da sie zum ansehen noch gebraucht werden. Ich plane in diesem Zuge die Formular Generierung um zu bauen um für spätere Anpassungen gerüstet zu sein. Hat jemand dahingehen Anregungen oder sogar Lösungen welche man sich ansehen könnte?
Bisher ist meine Überlegung
- die Datenhaltung per XML-Datei zu ermöglichen
- die Formular Vorlage wird aus der SQL-DB geladen und in einer Form generiert
- der Kunde füllt das Formular aus und die gefüllte XML-Datei wird in die Datenbank geschrieben.Vorteil:
- es wird nur eine Tabelle benötigt welche die Vorlagen speichern (mit Version)
- geringe Datenmengen welche übertragen werdenNachteil:
- die Generierung des Formulars anhand der Vorlage ist relativ aufwendig
Hat jemand noch andere Ideen?
Gruß Thomas
Antworten
-
Hi Thomas.
Die Frage ist ja, ob man zum Anzeigen wirklich verschiedene Formulare verwenden muss, oder ob man eine "Universalmaske" verwenden kann, und nur die Lade-/Speicherroutine dann entsprechend anpasst.
Im Detail ist das halt sehr davon abhängig, wie stark sich die Formulare verändern können, ob sich viele Felder ändern oder z.B. nur Feldlängen.
Wenn z.B. alte Daten geladen werden, in denen ein Feld noch nicht vorhanden ist, kann man dieses ja in der Universalmaske ausgrauen, und erst wenn die Daten in einem aktuelleren Format erneut gespeichert wurden, dieses Feld auch aktivieren.
Jedes angezeigte Feld benötigt in dem Fall programmintern eine Version-Range, in der es verfügbar ist, und jeder Datensatz eine Versionsnummer. Alles weitere kann im Programm dann relativ leicht dynamisch erstellt werden. Nicht anzeigbare Felder sieht man einfach nicht, bzw. sie werden nicht interpretiert (Daten-Version wäre neuer als das anzeigende Programm).
LG, Dennis.
EDI Consultant/Developer
Ich nutze meistens VB6 und VS2005 bis VS2012
Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
-
Hi Thomas,
schau dir mal das Beispiel für einen Report Generator an. Könnte vielleicht in die Richtung gehen die du brauchst.
HTML kannst du über das Webbrowser Steuerelement darstellen.
Das Formular samt Daten als XML in die Datenbank klingt für mich jetzt erst mal nicht so toll.
1. Es wird größten Teils das gleiche in die Datenbank geschrieben, bis auf ein paar Werte die sich geändert haben.
2. Abfragen auf die Daten werden komplizierter.
MFG
Björn- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
-
Hallo Thomas,
vorab ist es schwierig so etwas zu bewerten, da jede Anwendung unterschiedliche Schwerpunkte hat. Wenn Du sagst es handelt sich um Formulare gehe ich mal davon aus es handelt sich um so etwas wie Anmeldebögen, Steuerformulare etc.
Solche Formulare solltest vielleicht mit einer Art Assistenten realisieren. Die Forms solltest Du auf jeden Fall nicht überladen, mehr als 15 Eingabefelder sind IMHO schon zu viel. Lieber in Kategorien aufteilen bspw. Anschrift, Rechnungsadresse usw. . Dies alles in TabControl wo Du über einen Next- und Previous-Button wechseln kannst.
Deine Datenhaltung empfinde ich auch als etwas fragwürdig. Du sprichst von einer SQL-DB. Wozu dann XML-Dateien? Du empfindest es als Vorteil wenn Du nur eine Tabelle hast ich sehe das anders. Wer nur eine Tabelle nutzt hat auch sicherlich redundante Daten, ein Kunde hat irgendwann 2 oder mehr Adressen. Einer schreibt "Hamburgerstrasse", der nächste "Hamburger Strasse" und der übernächste "Hamburger Straße". Meines Erachtens tödlich. Setz Dich mal mit dem Thema Datenbanknormalisierung auseinander, dann weißt Du wo von ich spreche. An dieser Stelle Wenn Du Rechnungen fakturiest darfst Du natürlich nicht auf Referenzen in anderen Datentabellen zugreifen. Beispiel Du hast Herrn Willy im Januar 2010 eine Rechnung in die Bergaufstraße gestellt. 2011 ist Herr Willy umgezogen und Er hat Dir mit geteilt dass Er jetzt auf dem Waldweg wohnt. Wenn Du jetzt die Stammdaten benutzt um die Daten der Rechnung zuermitteln würde in der bereits fakturierte Rechnung aus dem Jahre 2010 der Waldweg auftauchen und das darf nicht sein. Abgeschlossen Vorgänge, z.B. fakturierte Rechnungen müssen separat gespeichert werden.
Wenn Du uns etwas detaillierter beschreibst wie die Formulare aussehen können wir Dir sicherlich besser helfen.
Bis dato
Gruß Scotty
- Bearbeitet Karsten Sosna Sonntag, 7. Juli 2013 08:14 Rechtschreibfehler
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
Alle Antworten
-
Hi Thomas.
Die Frage ist ja, ob man zum Anzeigen wirklich verschiedene Formulare verwenden muss, oder ob man eine "Universalmaske" verwenden kann, und nur die Lade-/Speicherroutine dann entsprechend anpasst.
Im Detail ist das halt sehr davon abhängig, wie stark sich die Formulare verändern können, ob sich viele Felder ändern oder z.B. nur Feldlängen.
Wenn z.B. alte Daten geladen werden, in denen ein Feld noch nicht vorhanden ist, kann man dieses ja in der Universalmaske ausgrauen, und erst wenn die Daten in einem aktuelleren Format erneut gespeichert wurden, dieses Feld auch aktivieren.
Jedes angezeigte Feld benötigt in dem Fall programmintern eine Version-Range, in der es verfügbar ist, und jeder Datensatz eine Versionsnummer. Alles weitere kann im Programm dann relativ leicht dynamisch erstellt werden. Nicht anzeigbare Felder sieht man einfach nicht, bzw. sie werden nicht interpretiert (Daten-Version wäre neuer als das anzeigende Programm).
LG, Dennis.
EDI Consultant/Developer
Ich nutze meistens VB6 und VS2005 bis VS2012
Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
-
Hi Dennis
So in etwa hatte ich das auch gedacht. Ich hatte halt überlegt ob man dies auch irgendwie als Web-Formular integrieren kann, weil dann müsste man nur die Html-Vorlage anpassen. Aber das funktioniert halt nicht ohne Web-Service und bei InfoPath-Formularen braucht man auch zwingend InfoPath auf dem Client. Und in einer Windows-Forms Anwendung kann man so weit ich weiß nicht einfach ein Web-Formular darstellen.
Ich danke Dir erst mal für die Mühe
Gruß Thomas
-
Hi Thomas,
schau dir mal das Beispiel für einen Report Generator an. Könnte vielleicht in die Richtung gehen die du brauchst.
HTML kannst du über das Webbrowser Steuerelement darstellen.
Das Formular samt Daten als XML in die Datenbank klingt für mich jetzt erst mal nicht so toll.
1. Es wird größten Teils das gleiche in die Datenbank geschrieben, bis auf ein paar Werte die sich geändert haben.
2. Abfragen auf die Daten werden komplizierter.
MFG
Björn- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
-
Hallo Thomas,
vorab ist es schwierig so etwas zu bewerten, da jede Anwendung unterschiedliche Schwerpunkte hat. Wenn Du sagst es handelt sich um Formulare gehe ich mal davon aus es handelt sich um so etwas wie Anmeldebögen, Steuerformulare etc.
Solche Formulare solltest vielleicht mit einer Art Assistenten realisieren. Die Forms solltest Du auf jeden Fall nicht überladen, mehr als 15 Eingabefelder sind IMHO schon zu viel. Lieber in Kategorien aufteilen bspw. Anschrift, Rechnungsadresse usw. . Dies alles in TabControl wo Du über einen Next- und Previous-Button wechseln kannst.
Deine Datenhaltung empfinde ich auch als etwas fragwürdig. Du sprichst von einer SQL-DB. Wozu dann XML-Dateien? Du empfindest es als Vorteil wenn Du nur eine Tabelle hast ich sehe das anders. Wer nur eine Tabelle nutzt hat auch sicherlich redundante Daten, ein Kunde hat irgendwann 2 oder mehr Adressen. Einer schreibt "Hamburgerstrasse", der nächste "Hamburger Strasse" und der übernächste "Hamburger Straße". Meines Erachtens tödlich. Setz Dich mal mit dem Thema Datenbanknormalisierung auseinander, dann weißt Du wo von ich spreche. An dieser Stelle Wenn Du Rechnungen fakturiest darfst Du natürlich nicht auf Referenzen in anderen Datentabellen zugreifen. Beispiel Du hast Herrn Willy im Januar 2010 eine Rechnung in die Bergaufstraße gestellt. 2011 ist Herr Willy umgezogen und Er hat Dir mit geteilt dass Er jetzt auf dem Waldweg wohnt. Wenn Du jetzt die Stammdaten benutzt um die Daten der Rechnung zuermitteln würde in der bereits fakturierte Rechnung aus dem Jahre 2010 der Waldweg auftauchen und das darf nicht sein. Abgeschlossen Vorgänge, z.B. fakturierte Rechnungen müssen separat gespeichert werden.
Wenn Du uns etwas detaillierter beschreibst wie die Formulare aussehen können wir Dir sicherlich besser helfen.
Bis dato
Gruß Scotty
- Bearbeitet Karsten Sosna Sonntag, 7. Juli 2013 08:14 Rechtschreibfehler
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Samstag, 20. Juli 2013 23:31
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 30. Juli 2013 14:56
-
Hallo Karsten
Sorry das ich mich erst jetzt wieder melde, war Krank und dann hatte ich Urlaub.
Es handelt sich bei den Formularen um Eingabeformulare welche fast ausschließlich mit Checkboxen und Radio Buttons auskommt da es ehr was zum Ausfüllen gibt ganz selten ist mal ein Textfeld vorhanden.
Bisher habe ich mir eine XML-Vorlage gestaltet. Diese Vorlage gibt es für jedes Formular dort sind die Bezeichnungen der Rubriken, die Art der Daten und die Ergebnisse für das entsprechende Formular. Der Vorteil liegt für mich darin das ich diese Vorlage mit einer Version versehen kann und das ich dieses Formular zur Laufzeit aus der XML-Vorlage generieren kann. Wenn sich später mal in dem Formular was ändert wird die Vorlage angepasst und mit einer neuen Version versehen und so kann ich anhand der Version das richtige Formular generieren. Die Vorlage (XML-Datei) wird im SQL-Server in einer Tabelle abgelegt.
Wenn das Formular ausgefüllt und gespeichert wird es natürlich mit den Ergebnisdaten in einer anderen Tabelle im SQL-Server gespeichert. Alle anderen Daten werden natürlich Kundenbezogen gespeichert wie man das halt kennt.
Dieses System habe ich jetzt mit 4 Formularen begonnen und es funktioniert soweit ganz gut. Was mich noch ein wenig stört ist das Scrollen des Panels was noch ruckelt aber da muss ich noch ein wenig verfeinern.
Ich wollte generell mal wissen wie andere mit solchen Vorgängen umgehen. Ich habe auch schon mal darüber nachgedacht das ausgefüllte Formular als PDF-zu generieren und dieses dann in der DB abzuspeichern (wegen der Unveränderlichkeit der Daten) aber der Aufwand ist ganz schön enorm.
Grüße Thomas
PS: Vielen Dank für die vielen Komentare
-
Hallo tommytom73,
Ich gehe davon aus, das dir die Antworten weiter geholfen haben.
<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.