Autor Beitrag
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 20.11.14 18:06 
Hallo.

Vor Jahren hatte ich ein Buch, welches sich mit der Datenbankentwicklung unter Delphi3 beschäftigte. Dies habe ich als Hobbyprogrammierer eher zäh gelesen, weil das ganze für mich viel zu abstrakt war.

Dann im Laufe der Zeit habe ich mich in eine Datenbankstruktur (TDBf - Sourceforge) eingearbeitet, welche aber schon längst nicht mehr weiter entwickelt wurde. Nun zu meinem Problem. Die Datenbank liegt beim ersten Programmstart nicht vor, sie wird dann erst erstellt. Die Datenbankanbindungen werden auch erst beim Programmstart erzeugt.

Ich ersuche um Hilfe bei der therotischen Erstellung eines Programmes vom Start bis zur normalen Laufzeit in Form wie etwa:

1. Datenbank öffnen
1.1. A Wenn DB noch nicht existiert, erstellen
1.1. B Wenn DB schon existiert, Versionsprüfung
1.2 Datenbank auf Fehler prüfen (Itegritätsprüfung)



würde mir hierbei bitte jemand helfen oder einen aktuellen Link geben, wo ich solchen nachlesen kann?

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Do 20.11.14 21:17 
Bring erstmal die Reihenfolge auf die Reihe ;)

1. Wenn DB noch nicht existiert, erstellen
2. Datenbank öffnen
3. Versionsprüfung
4. Datenbank auf Fehler prüfen (Integritätsprüfung)

Zu 1.) Das geht mit FileExists, sofern es eine lokale DB ist (Access, TurboDB, ADB usw). Ansonsten Connection zum Server öffnen
Zu 2.) Ist Abhängig von der lokalen DB / Server

Der Rest ist "DB öffnen, Tabelle öffnen, Felder auslesen", also Business as usual bei Datenbank-Anwendungen.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 20.11.14 22:13 
Danke Olaf.

Dann habe ich noch eine Frage bezüglich der Codepflege.

Bisher hatte ich immer die Feldnamen der Tabellen und auch die Größe, Feldtyp und ein Bool als Requiered in einer eigenen Unit ausgelagert. So konnte ich bei Bedarf die Felder aktualisieren, Größen anpassen usw.

Macht man das so oder gibt es einen besseren Weg?

Hier mal ein Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  { VersionDaten }
  ver_HighDB = 4//Anzahl der Felder, beginnend bei 0

  ver_Labels_DB: array [0 .. ver_HighDB] of string = ('ver_index''ver_datum''ver_uhrzeit''ver_programm''ver_test');
  ver_Labels_DB_Type: array [0 .. ver_HighDB] of TFieldType = (ftAutoInc,
    ftString, ftString, ftString, ftString);
  ver_Labels_DB_Length: array [0 .. ver_HighDB] of Integer = (-132,
    323232);
  ver_Labels_DB_Required: array [0 .. ver_HighDB] of Boolean = (True, False,
    False, False, False);
  { VersionDaten }


Erstellt, geprüft und aktualisiert habe ich diese Tabellen dann immer mit einer eigenen Function, in welcher die Arrays entsprechend genutzt werden.

Praktikabel oder nutzt ihr bessere, einfache Varianten?

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Fr 21.11.14 17:05 
Der Möglichkeiten gibts viele. Man könnte eine Textdatei ablegen, in der die aktuelle DB-Version hinterlegt ist. Oder - so wie ich es einmal gemacht habe - gibt es eine Tabelle mit nur einem Eintrag. Dort lagen Dateipfade, benutzerdef. Farben und so weiter drin. Unter anderem auch ein Feld für die DB-Version.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.