Hallo zusammen,
zunächst eine kleine Warnung: Da ich nicht weiß, wie ich direkt auf den Punkt kommen soll, beginne ich mal mit einer etwas ausführlicheren Einleitung.
Es geht, wie der Titel bereits aussagt, darum, wie man eine Anwendung sauber programmiert, so dass sie übersichtlich und einfach wartbar wird. Ich bin ja kein professioneller Programmierer und habe auch keine entsprechende Ausbildung, aber auch als "Hobbyist" möchte ich versuchen meine Sache so gut wie möglich zu lösen und ich bin mir leider nicht ganz sicher, ob ich mich auf dem richtigen Weg befinde, oder mir das Leben selbst unnötig schwer mache. So beginne ich mal einige Möglichkeiten auf zu listen, die auch weitestgehend dem entsprechen, wie ich bisher vor gegangen bin.
Zunächst noch der Hinweis, dass ich hier von einer
DB als
SQL-Server spreche, da die Anwendung im Netzwerk und ggf. mit mehreren Benutzern betrieben wird. Die eingesetzte
DB ist jetzt mal
MSSQL mit
ADO, das kann aber auch mal
MySQL mit Zeos sein. In der Regel benutze ich keine Komponenten, wie DBGrid o.ä. sondern greife über eine
Query auf die
DB zu und fülle "normale" Grids und Edits mit den Daten.
1. Die "alles in einem" Lösung: Ein Formular, eine Connection, eine
Query. Das wurde sehr schnell sehr unübersichtlich und machte keinen Spaß.
2. Ein globales Datenmodul mit einer Connection und einer
Query. Die Anwendung wurde auf mehrere Formulare aufgeteilt, die diese
Query verwendeten. Wesentlich übersichtlicher, ich musste allerdings manchmal mehrere Querys verwenden, wenn parallel Daten bereitgestellt werden mussten und hatte die
SQL-Anweisungen in der jeweiligen Formularunit. Zudem las ich irgendwann von der Trennung von
GUI und Daten, was mich zum nächsten Versuch führte.
3. Globales Datenmodul mit Connection und
Query(s), der Zugriff auf die Daten erfolgte jedoch nicht direkt über die
Query sondern über extra dafür erstellte Methoden, in der Art wie "First" und "Next". Als Beispiel nenne ich mal "FirstArtikelübersicht", die mit einem Select eine
Query öffnet und "NextArtikelübersicht" mit dem ich Datensatz für Datensatz aus der
Query auslesen und in die
GUI übertragen kann. Sinn war es, bei einer
DB-Änderung (z.B. auf
MySQL) nur das Datenmodul ändern zu müssen. So richtig befriedigt hat mich das allerdings auch nicht, weil jetzt das Datenmodul ziemlich unübersichtlich geworden ist.
Grundsätzlich bin ich auch nicht so sicher, ob es eine gute Idee ist, die Daten auf diese Weise in Anzeigekomponenten zu kopieren, weil diese ja auch (teilweise) in irgend einer Weise bearbeitet und geändert werden und dementprechend wieder in die
DB geschrieben werden müssen.
----
Jetzt stehe ich wieder davor eine kleine Anwendung machen zu wollen und möchte mich gerne verbessern und mir das Leben einfacher machen. Deshalb die Frage:
Wie soll ich das am sinnvollsten angehen?