Hallo Uwe,
meine Listendatenbank hat folgenden Aufbau:
TYP=>Numerisch: Beinhaltet den Projektdatei-Typ. Dient zur
Unterscheidung/Zuordnung des Formulares zum Programmteil, z.B.
Auftragsbearbeitung, Bestellwesen, Kasse usw.
FILENAME=>String: Beinhaltet den physikalischen Dateinamen der Projektdatei,
einschließlich Dateierweiterung.
LISTBEZ=>String: Die Projektbezeichnung aus der Projektdatei, Section
“[Description]”, Wert “Text”. Hintergrund: Wenn die vorhandenen Listen in
einem DBGrid dargestellt werden sollen/müssen dann dauert es viel zu lange
jedes mal die Beschreibung aus der Section heraus zu lesen, also speichere
ich sie separat in einem String-Feld.
DATUM=> Datum der letzten Änderung
TABLENAME=>String: Beinhaltet den Tabellen-Namen
INDEXNAME=>String: Beinhaltet den zu verwendenden Index für den Ausdruck
FILTER=>String: Beinhaltet einen String zur Filterung der zu druckenden
Daten. Ist zudem vorgesehen als alternative Verwendung für ein SQL-Script.
LST=>Blob: Hier wird die eigentliche Projektdatei gespeichert. Ein Textfeld
verwende ich nicht, weil in meinen Formularen (speziell bei den Formularen
für die Auftragsbearbeitung) oft Grafiken mit eingebunden sind. Die
Integration der Grafikdaten in die jeweilige Projektdatei ist erforderlich,
weil ansonsten die Clients im Netzwerk wieder physikalischen Zugriff auf die
Grafikdateien haben müssen, verbunden mit den entsprechenden Problemen und
darum: Wenn ich schon eine Client-Server-Datenbank verwende, dann möchte ich
das auch konsequent umsetzen. D.h. in meinem Programm benötigt kein Client
physikalischen Zugriff auf irgend eine Datei auf dem Server. Alles wird in
den Datenbanken gespeichert, sogar Textdateien (Textbausteine), Archivdaten,
Grafiken. Demzufolge muss ich bei der Installation keine Freigabe oder ein
Netzwerklaufwerk einrichten. Das war früher ein Problem. da waren die
LL-Dateien auf dem Server gespeichert und jeder Client musste darauf Zugriff
haben. Die Shares einzurichten oder die Netzwerklaufwerke war bei der
Installation ziemlich aufwändig. Heute entfällt das alles, der Anwender muss
nur mehr die CD einlegen und ein paarmal auf “OK” oder “Weiter” klicken und
ein Server oder ein Arbeitsplatz ist betriebsbereit installiert.
Zum Speichern der Dateien generell kann ich nicht viel sagen, da ich mit SQL
nicht arbeite. Habe den Nexus-Server im Einsatz (www.nexusdb.com) und
verwende ausschließlich die VCL-Komponenten. Diese bieten Methoden (so wie
man es von der BDE und den TTable-Komponenten kennt) um Dateien in die
Memofelder zu laden oder aus den Memofeldern zu speichern.
Es gibt aufgrund der Datenbank-Speicherung im Netzwerk auch keine
Zugriffs(Locking-)probleme. Das war bei der Designerstellung ein wichtiges
Thema. Es sollte z.B. möglich sein, dass während ein Anwender eine Änderung
einer Liste vornimmt die anderen User weiterhin mit der ursprünglichen Liste
weiter arbeiten können und nicht blockiert sind. Selbst wenn ein User
stundenlang eine Projektdatei editieren würde, er arbeitet ja immer mit
einer lokalen Kopie auf seinem Rechner, respektive beim Einsatz im
Terminalserver in seinem eigenen Userverzeichnis. In diesem Zusammenhang
würde es noch Sinn machen ein paar weitere Blob-Felder für die
unterschiedlichen “Versionen” der Projektdatei zu reservieren.
Beispielsweise um eine “Undo”-Option zur Verfügung zu haben.
Das ist so aus dem Stehgreif heraus das Wichtigste was mir gerade dazu
einfällt. Hoffe es hilft dir etwas weiter.
Viel Erfolg und freundliche Grüße
Otto