Discussion:
Saubere Datenbankprogrammierung
(zu alt für eine Antwort)
Manfred Polak
2017-09-24 12:34:50 UTC
Permalink
Moin!

Ich habe so vor 15 bis 20 Jahren zwei Nachschlagewerke auf CD bzw. DVD
gekauft. Das Problem ist, dass das eine Programm jetzt unter Win 7 nur
mehr schlecht als recht und das andere gar nicht mehr funktioniert. Bis
jetzt sind beide noch auf meinem Alt-PC mit XP installiert (der nicht
mehr am Internet hängt), aber das soll nicht ewig so bleiben. Ich stehe
also vor der Aufgabe, selbst Programme zum Zugriff auf die Daten zu
schreiben. Ich habe aber überhaupt keine Erfahrung mit Datenbankprog-
rammierung, und bin sonst auch nur Gelegenheits- und Hobbyprogrammierer,
und da stellen sich für mich einige Fragen.

Ich habe hier schon lange Turbo Delphi (2006) installiert, und seit ein
paar Monaten auch die Starter Edition von 10.2. Die Anwendungen werden
rein lokal sein. Die Daten werden im selben Verzeichnis wie das Programm
liegen, und es wird auch nur einen Anwender geben (nämlich mich). Das
eine Nachschlagewerk ist eine Access-Datenbank im alten mdb-Format, das
andere ist dBase III+. Aus etwas anderen Gründen will ich danach auch
noch ein Frontend für eine MySQL-Datenbank schreiben. Aber erst mal
beginne ich mit Access. Da scheint die erste grundlegende Frage zu sein,
ob ich ADO oder BDE nehmen soll. Ich hab mir zwei oder drei Einschätzun-
gen dazu durchgelesen, und zumindest für Access gingen die mehr in
Richtung ADO, aber eindeutig war die Entscheidung nicht, außerdem waren
diese Texte schon ein paar Jahre alt. Was würdet Ihr also empfehlen?

Eigentlich wollte ich für neue Projekte ja nur noch das neue Delphi
verwenden, aber da finde ich in der Komponentenpalette kein ADO. Kurzes
Googeln hat ergeben, dass es wohl tatsächlich weggelassen wurde. Im
Turbo Delphi ist es dagegen im Abschnitt dbGo enthalten. Muss ich also
wirklich das alte Delphi nehmen, wenn ich ADO verwenden will? Oder kann
man das in der Starter Edition irgendwie nachrüsten? Da ich wie erwähnt
nur Hobbyprogrammierer bin, sollte es aber kostenlos sein oder höchstens
einen kleinen zweistelligen Betrag kosten.

Die nächste Frage, auf die ich gestoßen bin, ist, ob ich ein Datenmodul
verwenden soll. Ich hab mir im Web zwei Einsteigerbeispiele für Access-
Zugriff mit ADO angesehen, und im einen wird ein Datenmodul verwendet
und im anderen nicht. Es geht also offenbar beides. Ich hab im Turbo
Delphi schon mal den Anfang beider Versionen nachvollzogen und konnte
mit einem TADOConnection sowohl im Hauptformular als auch in einem
Datenmodul eine Verbindung zur fraglichen mdb-Datei herstellen. Mehr
Komponenten hab ich noch nicht eingebaut, weil ich mir eben erst über
das bessere Design klarwerden will. Was ist also der genaue Sinn und
Zweck von Datenmodulen? Soll ich eines verwenden, oder kann ich es
genausogut weglassen? Und gilt das unabhängig davon, ob ich ADO oder
BDE nehme?


Manfred
Peter Below
2017-09-24 13:57:34 UTC
Permalink
Post by Manfred Polak
Moin!
Ich habe so vor 15 bis 20 Jahren zwei Nachschlagewerke auf CD bzw. DVD
gekauft. Das Problem ist, dass das eine Programm jetzt unter Win 7 nur
mehr schlecht als recht und das andere gar nicht mehr funktioniert.
Bis jetzt sind beide noch auf meinem Alt-PC mit XP installiert (der
nicht mehr am Internet hängt), aber das soll nicht ewig so bleiben.
Ich stehe also vor der Aufgabe, selbst Programme zum Zugriff auf die
Daten zu schreiben. Ich habe aber überhaupt keine Erfahrung mit
Datenbankprog- rammierung, und bin sonst auch nur Gelegenheits- und
Hobbyprogrammierer, und da stellen sich für mich einige Fragen.
Ich habe hier schon lange Turbo Delphi (2006) installiert, und seit
ein paar Monaten auch die Starter Edition von 10.2.
Die Starter-Editionen sind traditionel ziemlich eingeschränkt was den
Funktionsumfang angeht. Das ist auch der Grund, wieso Du dbGO da nicht
finden kannst. Allerdings ist ADO eine OLE-Technologie, d. h. Du kannst
einfach die entsprechende Type-Library importieren, um deine eigenen
Delphi Interfaceunits zu erstellen. Ich hoffe, die Starter-edition
bietet zumindest das an (Components -> Import components - Active X
type library).
Post by Manfred Polak
Die Anwendungen
werden rein lokal sein. Die Daten werden im selben Verzeichnis wie
das Programm liegen, und es wird auch nur einen Anwender geben
(nämlich mich). Das eine Nachschlagewerk ist eine Access-Datenbank im
alten mdb-Format, das andere ist dBase III+. Aus etwas anderen
Gründen will ich danach auch noch ein Frontend für eine
MySQL-Datenbank schreiben. Aber erst mal beginne ich mit Access. Da
scheint die erste grundlegende Frage zu sein, ob ich ADO oder BDE
nehmen soll.
Keines von beiden, die BDE schon garnicht, denn die ist seit mehr als
10 Jahren nicht mehr weiterentwickelt worden und läßt sich auf modernen
windows Versionen kaum noch installieren. Offiziel unterstützt wird sie
von Delphi seit mehreren Jahren nicht mehr.

Dei erster Schritt sollte sein, die Daten in ein moderneres Format zu
konvertieren, z. B. Firebird oder halt mySQL. Das
Konvertierungsprogramm sollte über ADO auf die Orginaldaten zugreifen,
das sollte funktionieren, wenn auf deinem PC noch OLE DB Treiber für
diese alten Formate verfügbar sind (waren es auf XP definitiv, bin mir
nicht so sicher bei Windows 10).

Der aktuelle Standard für den Datenbankzugriff in Delphi ist FireDAC,
was aber vermutlich in der Starterversion nicht oder nur stark
abgespeckt verfügbar ist.
Post by Manfred Polak
Ich hab mir zwei oder drei Einschätzun- gen dazu
durchgelesen, und zumindest für Access gingen die mehr in Richtung
ADO, aber eindeutig war die Entscheidung nicht, außerdem waren diese
Texte schon ein paar Jahre alt. Was würdet Ihr also empfehlen?
Eigentlich wollte ich für neue Projekte ja nur noch das neue Delphi
verwenden, aber da finde ich in der Komponentenpalette kein ADO.
Kurzes Googeln hat ergeben, dass es wohl tatsächlich weggelassen
wurde. Im Turbo Delphi ist es dagegen im Abschnitt dbGo enthalten.
Muss ich also wirklich das alte Delphi nehmen, wenn ich ADO verwenden
will? Oder kann man das in der Starter Edition irgendwie nachrüsten?
Da ich wie erwähnt nur Hobbyprogrammierer bin, sollte es aber
kostenlos sein oder höchstens einen kleinen zweistelligen Betrag
kosten.
Die nächste Frage, auf die ich gestoßen bin, ist, ob ich ein
Datenmodul verwenden soll.
Ein DM ist eine gute Möglichkeit, alle Komponenten und Code für dein
eigentlichen Datenbankzugriff zu zentralisieren und damit aus den
Form-Units herauszuhalten. Das ist besonders wichtig, wenn Du diesen
Zugriff aus verschiedenen Forms heraus benötigst. Auf den Forms gibt es
dann jeweils nur TDatasource-Instanzen, die mit den lokalen Controls
verbunden sind und halt mit den datasets aus dem DM. wenn man die
klassische RAD-Programmierung verwendet (gut genug für kleine
Anwendungen) ist das ein gutes Design.

Ich hab mir im Web zwei
Post by Manfred Polak
Einsteigerbeispiele für Access- Zugriff mit ADO angesehen, und im
einen wird ein Datenmodul verwendet und im anderen nicht. Es geht
also offenbar beides. Ich hab im Turbo Delphi schon mal den Anfang
beider Versionen nachvollzogen und konnte mit einem TADOConnection
sowohl im Hauptformular als auch in einem Datenmodul eine Verbindung
zur fraglichen mdb-Datei herstellen. Mehr Komponenten hab ich noch
nicht eingebaut, weil ich mir eben erst über das bessere Design
klarwerden will. Was ist also der genaue Sinn und Zweck von
Datenmodulen? Soll ich eines verwenden, oder kann ich es genausogut
weglassen? Und gilt das unabhängig davon, ob ich ADO oder BDE nehme?
--
Peter Below
TeamB
Sieghard Schicktanz
2017-09-24 22:16:26 UTC
Permalink
Hallo Peter,
Post by Peter Below
Dei erster Schritt sollte sein, die Daten in ein moderneres Format zu
konvertieren, z. B. Firebird oder halt mySQL. Das
Konvertierungsprogramm sollte über ADO auf die Orginaldaten zugreifen,
Gibt's nicht für quasi jede mögliche Kombination fertige
Konvertierprogramme zum Download? MySQL als Zielformat sollte eigentlich
von so ziemlich allem erreichbar sein, was an Datenbankformaten so
existiert und existierte. dBase geht jedenfalls, das hat vor einiger Zeit
mal ein Bakannter gemacht.
Ein paar Fallstricke gibt es natürlich dabei, so sind z.B. nicht alle
Feldtypen in gleicher Art überall vorhanden, insbesondere einen logischen
Typ gibt es bei MySQL (AFAIR) nicht standardmäßig, da wird dann gerne in
ein 1-Buchstaben-Feld konvertiert. Auch Textfelder sind manchmal ein
Problem, und natürlich die dBase-Memo-Felder, die in MySQL dann meistens
als "Binär-BLOB" landen, falls überhaupt. Aber die Daten sollten schon
irgendwie in verarbeitbarer Form übertragen werden können, ohne daß man
dazu groß selber was programmieren muß. Und anscheinend sind viele dieser
Programme sogar in Delphi geschrieben...
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Peter Below
2017-09-25 06:35:01 UTC
Permalink
Post by Sieghard Schicktanz
Hallo Peter,
Post by Peter Below
Dei erster Schritt sollte sein, die Daten in ein moderneres Format
zu konvertieren, z. B. Firebird oder halt mySQL. Das
Konvertierungsprogramm sollte über ADO auf die Orginaldaten
zugreifen,
Gibt's nicht für quasi jede mögliche Kombination fertige
Konvertierprogramme zum Download?
Vermutlich schon, man muß sie nur finden :-).
--
Peter Below
TeamB
Manfred Polak
2017-09-25 15:37:27 UTC
Permalink
Post by Peter Below
Die Starter-Editionen sind traditionel ziemlich eingeschränkt was den
Funktionsumfang angeht. Das ist auch der Grund, wieso Du dbGO da nicht
finden kannst. Allerdings ist ADO eine OLE-Technologie, d. h. Du kannst
einfach die entsprechende Type-Library importieren, um deine eigenen
Delphi Interfaceunits zu erstellen. Ich hoffe, die Starter-edition
bietet zumindest das an (Components -> Import components - Active X
type library).
Mal sehen, ob ich das hinkriege.
Post by Peter Below
Keines von beiden, die BDE schon garnicht, denn die ist seit mehr als
10 Jahren nicht mehr weiterentwickelt worden und läßt sich auf modernen
windows Versionen kaum noch installieren. Offiziel unterstützt wird sie
von Delphi seit mehreren Jahren nicht mehr.
OK, BDE ist also out.
Post by Peter Below
Dei erster Schritt sollte sein, die Daten in ein moderneres Format zu
konvertieren, z. B. Firebird oder halt mySQL. Das
Konvertierungsprogramm sollte über ADO auf die Orginaldaten zugreifen,
das sollte funktionieren, wenn auf deinem PC noch OLE DB Treiber für
diese alten Formate verfügbar sind (waren es auf XP definitiv, bin mir
nicht so sicher bei Windows 10).
Ich hab jetzt mal ein paar dieser Konvertierprogramme runtergeladen und
werde sehen, ob das klappt. Die Treiber sind jedenfaslls vorhanden (es
geht um Win 7, nicht 10).
Post by Peter Below
Der aktuelle Standard für den Datenbankzugriff in Delphi ist FireDAC,
was aber vermutlich in der Starterversion nicht oder nur stark
abgespeckt verfügbar ist.
Es fehlt, genauso wie alle anderen Datenbankkomponenten im engeren
Sinn. Nur diese allgemeinen Datenzugriffs- und -steuerungselemente
sind da. In dieser Hinsicht ist die Starter Edition ein Rückschritt im
Vergleich zu Turbo Delphi. Gut, dass ich das nicht gelöscht habe,
nachdem ich die Starter Edition installiert hatte.
Post by Peter Below
Post by Manfred Polak
Die nächste Frage, auf die ich gestoßen bin, ist, ob ich ein
Datenmodul verwenden soll.
Ein DM ist eine gute Möglichkeit, alle Komponenten und Code für dein
eigentlichen Datenbankzugriff zu zentralisieren und damit aus den
Form-Units herauszuhalten. Das ist besonders wichtig, wenn Du diesen
Zugriff aus verschiedenen Forms heraus benötigst. Auf den Forms gibt es
dann jeweils nur TDatasource-Instanzen, die mit den lokalen Controls
verbunden sind und halt mit den datasets aus dem DM. wenn man die
klassische RAD-Programmierung verwendet (gut genug für kleine
Anwendungen) ist das ein gutes Design.
Dann werde ich das auf jeden Fall verwenden. Vielleicht wird es am Ende
sogar nur ein Programm statt zwei, mit zwei Datenmodulen für die beiden
Datensätze. Aber so weit bin ich noch nicht. Jetzt werde ich mich erst
mal nach weiteren Einsteigerbeispielen umschauen und mich daran entlang
vorarbeiten. Erst mal danke für die Antworten.


Manfred
Hans-Peter Diettrich
2017-09-24 14:04:08 UTC
Permalink
Post by Manfred Polak
Moin!
Ich habe so vor 15 bis 20 Jahren zwei Nachschlagewerke auf CD bzw. DVD
gekauft. Das Problem ist, dass das eine Programm jetzt unter Win 7 nur
mehr schlecht als recht und das andere gar nicht mehr funktioniert. Bis
jetzt sind beide noch auf meinem Alt-PC mit XP installiert (der nicht
mehr am Internet hängt), aber das soll nicht ewig so bleiben.
Dafür gibt es auch virtuelle Maschinen.
Post by Manfred Polak
eine Nachschlagewerk ist eine Access-Datenbank im alten mdb-Format, das
andere ist dBase III+.
Zu der Programmierung kann ich nicht viel sagen. Möglicherweise brauchst
Du neue Datenbank-Treiber, wenn die alten unter Win7 nicht mehr richtig
funktionieren.

DoDi
Manfred Polak
2017-09-25 15:23:01 UTC
Permalink
Post by Hans-Peter Diettrich
Zu der Programmierung kann ich nicht viel sagen. Möglicherweise brauchst
Du neue Datenbank-Treiber, wenn die alten unter Win7 nicht mehr richtig
funktionieren.
Nö, daran liegt es nicht, dass die Programme nicht mehr oder nur
schlecht funktionieren.


Manfred

Loading...