Beispiel C/S Datenbank

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Beispiel C/S Datenbank

Beitrag von Zvoni »

Ich sehe im Prinzip 3 grosse Baustellen für Andy
1) Die reine Daten-Struktur der Datenbank von 4D nach wasauchimmer schieben. Ich kann nur hoffen es gibt saubere Primär/Fremd-Schlüssel
2) Lazarus/FreePascal lernen
3) "Portieren" (ggfs. komplett neu schreiben) seines bisherigen Quellcodes

Ich denke es gibt genug Leute hier, die dir bei allen 3 Punkten helfen können
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Zvoni hat geschrieben: Mi 5. Feb 2025, 13:23 Ich sehe im Prinzip 3 grosse Baustellen für Andy
1) Die reine Daten-Struktur der Datenbank von 4D nach wasauchimmer schieben. Ich kann nur hoffen es gibt saubere Primär/Fremd-Schlüssel
2) Lazarus/FreePascal lernen
3) "Portieren" (ggfs. komplett neu schreiben) seines bisherigen Quellcodes

Ich denke es gibt genug Leute hier, die dir bei allen 3 Punkten helfen können
Das beruhigt mich nun wirklich.....- Danke an alle hier für die super Unterstützung. :D

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

af0815 hat geschrieben: Di 4. Feb 2025, 18:05
Andy Nightingale hat geschrieben: Di 4. Feb 2025, 17:32 Danke sehr. Höre ich da heraus das es garnicht machbar ist nach deinen Erfahrungen? Du klingst nicht so das es machbar wäre.
Nein, alles ist grundlegend machbar. Wenn du eine intensive Woche für eine definierte Problemstellung machst, Bsp. einfache GUI Eingabe, bringt dir einmal ein Gefühl und bessere Einschätzbarkeit.

Man kann bei Lazarus mit geschickter Planung viel Zeit und Resourcen sparen durch Vererbung und damit verbundene Templates. Beispiel ist der Login und Rechte. Weil die hast du in jedem Clientteil. Das einmal erstellt, kann wir eine Blackbox überall verwendet werden. Die Arbeit dabei ist, es einmal sauber hinzubekommen, dann ist es an einer Stelle und auch nur an einer Stelle zu Warten. Ist das Design falsch und wird wild in jedes Projekt hineinkopiert, hast du einen Wartungsirrsinn, weil jeder Bugfix überall nachgeführt werden muss, wehe du vergisst eine Stelle.

Ich habe gerne units verwendet und die Sachen wirklich gekapselt. Bei GUI gehen auch Forms zu vererben, am liebsten aber über dynamische Frames. Gerade Frames sind geschaffen für Kapselung, wenn man eine gewisse Disziplin aufbringt.
Was meinst du genau mit :...Ich habe gerne units verwendet und die Sachen wirklich gekapselt ? .- verstehe ich das richtig das du z.B eine Unit genommen hast für sagen wir die Terminplanung und eine andere für Artikelverwaltung und eine....usw. und am Ende alles zusammengeführt hast zu einem Programm? Grüße

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Beispiel C/S Datenbank

Beitrag von Zvoni »

Andy Nightingale hat geschrieben: Mi 5. Feb 2025, 14:11 Was meinst du genau mit :...Ich habe gerne units verwendet und die Sachen wirklich gekapselt ? .- verstehe ich das richtig das du z.B eine Unit genommen hast für sagen wir die Terminplanung und eine andere für Artikelverwaltung und eine....usw. und am Ende alles zusammengeführt hast zu einem Programm? Grüße
Ich glaube af0815 meint sowas wie im Anhang (Ist nur ein kleines Beispiel)
project1.zip
(2.33 KiB) 29-mal heruntergeladen
Form2 "erbt" von Form1
Du siehst die Messagebox für Form2 ("Geerbte Form"), wenn du auf "Geerbten Button" clickst, obwohl nirgends in Form2 dafür Code steht

Im Prinzip: Wenn du verschiedene Formen hast (Formen sind auch Objekte/Klassen), kannst du den Teil, der überall gleich ist "auslagern"
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Zvoni hat geschrieben: Mi 5. Feb 2025, 14:56
Andy Nightingale hat geschrieben: Mi 5. Feb 2025, 14:11 Was meinst du genau mit :...Ich habe gerne units verwendet und die Sachen wirklich gekapselt ? .- verstehe ich das richtig das du z.B eine Unit genommen hast für sagen wir die Terminplanung und eine andere für Artikelverwaltung und eine....usw. und am Ende alles zusammengeführt hast zu einem Programm? Grüße
Ich glaube af0815 meint sowas wie im Anhang (Ist nur ein kleines Beispiel)
project1.zip
Form2 "erbt" von Form1
Du siehst die Messagebox für Form2 ("Geerbte Form"), wenn du auf "Geerbten Button" clickst, obwohl nirgends in Form2 dafür Code steht

Im Prinzip: Wenn du verschiedene Formen hast (Formen sind auch Objekte/Klassen), kannst du den Teil, der überall gleich ist "auslagern"
Ja praktisch kann ich etwas nutzen das woanders ist.....dann stimmt das was ich gesagt habe.- oder? Also das ich eine Unit habe mit Termindaten und eine mit Tagesdaten (blödes Beispiel aber was besseres fällt mir gerade nicht ein) aber auf die Termindaten zugreifen kann oder etwas anderes eben. Echt cool. Danke für das Beispiel das ich studieren werde....braucht eben eine Weile bis es klick macht. :roll:

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Beispiel C/S Datenbank

Beitrag von Zvoni »

So was ähnliches.

Es lauft im Prinzip darauf hinaus, dass wenn sich Code wiederholt (und dabei egal, ob innerhalb derselben Unit oder über andere Units verteilt), kann (eigentlich "soll") dieser Code in eine eigene Unit ausgelagert werden. So hast du nur eine Stelle zu bearbeiten, sofern du was ändern/verbessern willst.
Wie in meinem Beispiel, wenn du die Nachricht für den Button-Click ändern willst: Es gibt nur eine Stelle.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Verstehe. Dann könnte ich ja sämtliche Programmierungen in eine Unit reinmachen....cool.

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Beispiel C/S Datenbank

Beitrag von Soner »

Andy Nightingale hat geschrieben: Di 4. Feb 2025, 11:34
Soner hat geschrieben: Mo 3. Feb 2025, 23:55 Ich würde in deiner Stelle folgendes nehmen:
- Datenbank --> Firebird,
- Datenbank-Komponenten --> SQLDB oder ZEOS,
- Berichte --> LazReport + Grids + HTML + PascalScript,
- PDF --> Chromium,
- Scan --> Twain,
damit bist du sehr gut aufgehoben. Verwende kein Appserver, kommuniziere direkt mit Firebird-Server. AppServer machen Programme nur komplizierter.
Nach deiner Aufgabenstellung hier hier ist das nur ein paar Monate Arbeit, so schwer ist das nicht maximal 3-4 Monate.
Hallo Soner,
das scheint genauso zu sein wie ich es mir vorstelle. Danke sehr. Was ich noch nicht verstehe ist auf was muß ich achten wenn ich code von außerhalb in meinen hinein bringen möchte? Da verhaut es mir immer und ich verstehe es nicht genau. Weißt du was ich meine?
Ich weißt nicht, vielleicht sie richtig benutzen. Ich glaube du bist neu in Lazarus- und Pascalwelt, deshalb wäre es vielleicht besser, dass ihr das jemanden mit Erfahrung machen lässt und du in Lazarus/Pascal einarbeitest und später an dem fertigen Programm-Quelltext, falls nötig, Anpassungen vornimmst.

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Beispiel C/S Datenbank

Beitrag von Soner »

af0815 hat geschrieben: Di 4. Feb 2025, 06:29
Soner hat geschrieben: Mo 3. Feb 2025, 23:55 Ich würde in deiner Stelle folgendes nehmen:
- Datenbank --> Firebird,
Ich bin da nicht ganz einig - In etlichen Firmen ist MS-SQL Server oder IBM DB2 Standard. Vor allen würde ich mich da an die Server-Fritzen wenden, was die verwenden, weil mit einem Exot im Serverpool wird auf lange Sicht keiner glücklich.

BTW: Es ist den meisten nicht bekannt, das der MS SQL Server nicht nur unter Windows läuft, sondern auch excellent unter Linux Ubuntu. MS hat dazu auch eine sehr gute Doku für die Installation. Das kann man dann beliebig skalieren, vom kleinen Access Ersatz (Express !!) bis zum Vollen Server ist es dieselbe Engine und die Administrierung und Performancetools sind ja da auch kostenlos (für private Zwecke und Evaluierung).

Express:
SQL Server 2022 Express ist eine kostenlose Edition von SQL Server, ideal für die Entwicklung und Produktion von Desktop-, Web- und kleinen Serveranwendungen.
Administrieren muss man von einem Windows PC aus, das ist klar.

Link zur Linuxinstallation: https://learn.microsoft.com/de-de/sql/l ... ubuntu2004 Kommt eine neue Langzeitversion von Ubuntu heraus, folgt kurz darauf auch MS mit einer neuen Installationsanleitung.
MS-Produkte sind sehr schwerfällig, sehr kompliziert, es ändert sich ständig irgendetwas, deshalb wird ja für diese Produkte Schulungen angeboten, das gilt auch für viele andere Produkte wie z.b. MySql.
Bei uns in der Firma war bei einer Maschine MySql installiert, irgendwas ist kaputt gegangen, da die Maschine abgeschottet war, konnte ich nicht vieles machen, der Hersteller hat 1-2 Monaten gebraucht um es wieder zum laufen zu bekommen. In dieser Zeit haben sie uns Ingenieur-Arbeitsstunden von 150-200 € in Rechnung gestellt. Bei Firebird hätte ich das ganze sogar von USB-Stick laufen lassen.
Ich erweitere Firebird-DB im laufenden Betrieb um neue Spalten und Tabellen, es läuft. Das ist auch ein Vorteil von einfachen Basic-Komponenten wie SQLDB oder ZEOS. Bei Frameworks wie Mormot musste man DB neu erstellen von der Alten importieren usw. Der PC mit FB-Server ist wegen Stromausfall einige male ausgeganden, es ist nichts mit DB passiert. Ich benutze es seit über 20 Jahren und ich bin sehr zufrieden.

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Beispiel C/S Datenbank

Beitrag von Zvoni »

Bei dieser ganzen Diskussion über "welches DBMS" Andy nutzen kann/soll, wird wohl eins vergessen:
Lizenzierung.
Denkt dran: So wie ich es verstehe, ist der Anwendungsfall von Andy kommerziell (Es ist ein Institut/Firma?).

Da stellt sich die Frage, in wieweit die Lizenzen für Firebird, MySQL, MariaDB etc. damit kollidieren

Weil wenn das auch noch ins Spiel kommt, würde ich sogar eher PostGres nehmen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Soner hat geschrieben: Do 6. Feb 2025, 09:44
af0815 hat geschrieben: Di 4. Feb 2025, 06:29
Soner hat geschrieben: Mo 3. Feb 2025, 23:55 Ich würde in deiner Stelle folgendes nehmen:
- Datenbank --> Firebird,
Ich bin da nicht ganz einig - In etlichen Firmen ist MS-SQL Server oder IBM DB2 Standard. Vor allen würde ich mich da an die Server-Fritzen wenden, was die verwenden, weil mit einem Exot im Serverpool wird auf lange Sicht keiner glücklich.

BTW: Es ist den meisten nicht bekannt, das der MS SQL Server nicht nur unter Windows läuft, sondern auch excellent unter Linux Ubuntu. MS hat dazu auch eine sehr gute Doku für die Installation. Das kann man dann beliebig skalieren, vom kleinen Access Ersatz (Express !!) bis zum Vollen Server ist es dieselbe Engine und die Administrierung und Performancetools sind ja da auch kostenlos (für private Zwecke und Evaluierung).

Express:
SQL Server 2022 Express ist eine kostenlose Edition von SQL Server, ideal für die Entwicklung und Produktion von Desktop-, Web- und kleinen Serveranwendungen.
Administrieren muss man von einem Windows PC aus, das ist klar.

Link zur Linuxinstallation: https://learn.microsoft.com/de-de/sql/l ... ubuntu2004 Kommt eine neue Langzeitversion von Ubuntu heraus, folgt kurz darauf auch MS mit einer neuen Installationsanleitung.
MS-Produkte sind sehr schwerfällig, sehr kompliziert, es ändert sich ständig irgendetwas, deshalb wird ja für diese Produkte Schulungen angeboten, das gilt auch für viele andere Produkte wie z.b. MySql.
Bei uns in der Firma war bei einer Maschine MySql installiert, irgendwas ist kaputt gegangen, da die Maschine abgeschottet war, konnte ich nicht vieles machen, der Hersteller hat 1-2 Monaten gebraucht um es wieder zum laufen zu bekommen. In dieser Zeit haben sie uns Ingenieur-Arbeitsstunden von 150-200 € in Rechnung gestellt. Bei Firebird hätte ich das ganze sogar von USB-Stick laufen lassen.
Ich erweitere Firebird-DB im laufenden Betrieb um neue Spalten und Tabellen, es läuft. Das ist auch ein Vorteil von einfachen Basic-Komponenten wie SQLDB oder ZEOS. Bei Frameworks wie Mormot musste man DB neu erstellen von der Alten importieren usw. Der PC mit FB-Server ist wegen Stromausfall einige male ausgeganden, es ist nichts mit DB passiert. Ich benutze es seit über 20 Jahren und ich bin sehr zufrieden.
Ja ich denke das Firebird das richtige ist. Danke für die Erfahrung.

Andy Nightingale
Beiträge: 179
Registriert: Mo 13. Jan 2025, 12:11

Re: Beispiel C/S Datenbank

Beitrag von Andy Nightingale »

Zvoni hat geschrieben: Do 6. Feb 2025, 09:49 Bei dieser ganzen Diskussion über "welches DBMS" Andy nutzen kann/soll, wird wohl eins vergessen:
Lizenzierung.
Denkt dran: So wie ich es verstehe, ist der Anwendungsfall von Andy kommerziell (Es ist ein Institut/Firma?).

Da stellt sich die Frage, in wieweit die Lizenzen für Firebird, MySQL, MariaDB etc. damit kollidieren

Weil wenn das auch noch ins Spiel kommt, würde ich sogar eher PostGres nehmen
Ja ich habe das direkt überprüft. Kein Problem...wirklich kostenlos auch für kommerzielle Produkte...also Lazarus und Firebird. :D Danke sehr für den Tipp das zu überprüfen.

Antworten