![]() |
Datenbank: ? • Version: ? • Zugriff über: ?
Mal wieder Datenbanken ;-(
Möchte für eine Freundin eine möglichst recht einfach zu bedienende Datenbank schreiben. Die "einfache Bedienung" liegt natürlich an mir, ist schon klar.
Die "Datenbank" soll nur lokal mit einem Benutzer - der Freundin - laufen. Geschätzte Ausmaße der Datenbank: < 5.000 Datensätze < 50 Datenfelder DatenFeldtypen: - viele Strings < 255 Zeichen mit Umlauten und Pfadangaben - mehrere Booleans Habe hier ein paar alte, brauchbare Komponenten für eine dBase III-Datenbank unter Delphi5. dBase III ist aber wohl nicht mehr so ganz up-to-date ;-) Ich möchte das Projekt mit Delphi7 personal (dem keine Datenbankkomponenten beiliegen) verwirklichen. Habt ihr irgendwelche Empfehlungen, die nicht auf XML hinauslaufen? GG |
AW: Mal wieder Datenbanken ;-(
Textdatei, CSV-Format. Es handelt sich ja nur um eine einzige Tabelle. Textformat ist besser, weil man auch manuell lesen/editieren kann.
Du baust dir einen Record mit deinen Daten und zunächst eine Lese- und eine Schreibroutine, die den Record in einen String schreiben und wieder zurück lesen kann. Dafür gibt es hier im Forum die 'Explode' Routine. So, nun kannst Du dir einen Array of TDatenRecord aufbauen und dann erstmal lesen und schreiben implementieren. Wenn das gut funktioniert, tippelst Du dir ein paar Testdaten zusammen (Lustig, auch EXCEL liest/schreibt 'CSV' Dateien). Dann nur noch die Visualisierung, also dein Programm drüberbuppeln und fettisch is die Kiste. |
AW: Mal wieder Datenbanken ;-(
Danke Furtbichler,
aber CSV finde ich nicht so prickelnd, wenn die 50 Strings (eines Datensatzes) aneinandergehängt werden sollen. In Textdateien bekommt man oft Ärger mit den Zeilenumbrüchen :-( Hat jemand andere Vorschläge? GG |
AW: Mal wieder Datenbanken ;-(
|
AW: Mal wieder Datenbanken ;-(
Zitat:
Wenn Du natürlich gleich etwas dazulernen willst, nimm ne richtige DB... Geht mormot auch mit D7P? |
AW: Mal wieder Datenbanken ;-(
Zitat:
![]() |
AW: Mal wieder Datenbanken ;-(
Zitat:
Zitat:
Allerdings hat man beim Einsatz von mORMot relativ wenig mit der Datenbank, noch mit dem JSON-Format was so wirklich was am Hut. Man ist ja Delphi-Entwickler, also bleibt man schön bei Delphi und um das ganze Geraffel drumherum kümmert sich das Framework. Ein Beispiel gibt es ![]() ach ja, bevor hier gleich das Gebrülle losgeht "ich will aber keinen Server": Im Client statt:
Delphi-Quellcode:
das hier nehmen
TmORMotClientHttp
Delphi-Quellcode:
und einfach keine Server-App schreiben ;)
TmORMotClientLocal
andersherum kann man ebenso fix aus einer reinen Standalone-Lösung eine Client-Server-Anwendung bauen ;) |
AW: Mal wieder Datenbanken ;-(
Zitat:
|
AW: Mal wieder Datenbanken ;-(
Zitat:
EDIT: hmmm, bei den vielen Stunden am Rechner bleicht aber doch ganz schön :mrgreen: |
AW: Mal wieder Datenbanken ;-(
Also wenn man sich an die RFC hält, dann sollte ASCII delimited bzw CSV eigentlich kein Problem sein, auch bei Zeilenumbrüchen.
Gleiches gilt für XML. Eine weitere Möglichkeit wäre es mit mit einem File of Record zu arbeiten. Statt mit Strings arbeitet man mit einem Array of Char. Ist zwar ein wenig umständlich aber geht unter D7P und ohne Fremdkomponenten. Nur die Möglichkeit mit einem normalen Texteditor daran zu fummeln wäre etwas eingeschränkt. Gruß K-H |
AW: Mal wieder Datenbanken ;-(
Delphi-Quellcode:
?
array of char
Oder doch einfach den
Delphi-Quellcode:
, da eh alles weniger als 256 Zeichen haben soll, bzw. einen ShortString mit Längenangabe (maximal), also
ShortString
Delphi-Quellcode:
.
String[123]
Char wäre für eine Speicherung eh das Schlimmste, denn wenn man mal das Delphi erneuert, war's das erstmal. > AnsiChar, WideChar oder eben den ShortString, welcher immer ANSI ist/bleibt. |
AW: Mal wieder Datenbanken ;-(
Ich glaube, der Fragesteller meint, das man zwar Text-Dateien mit 12345 Zeichen pro Zeile editieren kann, aber einige blöde Programme (NOTEPAD) bei falscher Einstellung die Zeilen umbrechen. Delphi macht das doch auch.
Hier meine Rangliste, sortiert nach Einfachheit in der Umsetzung. 1. "File Of TMyRecord" (mit reinen Shortstrings). 2. CSV 3. XML 4. morMot (aber nur wegen der anfänglichen Lernkurve, sonst weiter oben) 5. DBase 6. SQLLite 7. Alles andere an RDBMS Nach Eleganz wäre dieses mORMot wohl an erster Stelle, ganz klar. |
AW: Mal wieder Datenbanken ;-(
Zitat:
6+7 ist eigentlich gleichwertig. |
AW: Mal wieder Datenbanken ;-(
Jo. Hast Recht. Bei SQLLite käme noch das DLL-Gedöns dazu, aber der Fragesteller hat ja eh D7P, womit er sowieso irgend etwas installieren müsste.
Ach, eine kbMemTable wäre noch was, aber er hat ja keine TDBGrid, TDBEdits etc. |
AW: Mal wieder Datenbanken ;-(
![]() Das könnte man einmal durcharbeiten und sich dann entscheiden. Bei dem zu erwartenden Datenaufkommen sollte eine typisierte Datei IMO eigentlich völlig ausreichen, aber man kann natürlich auch etwas anderes nehmen. |
AW: Mal wieder Datenbanken ;-(
Zitat:
Somit sehe ich da einen klaren Vorteil für den Einsatz von mORMot. Der Implementierungs-Aufwand ist bei beiden Verfahren gleich und bei der Datenstruktur (Record <-> TSQLRecord) sogar sehr ähnlich. |
AW: Mal wieder Datenbanken ;-(
Es kommt eben darauf an, was genau der TE erreichen will. Soll das Programm ohne weitere Bibliotheken auskommen, dann eben eine flache Datenstruktur und Funktionalitäten selbst implementieren, soll es etwas bequemer sein, dann eben andere Lösungen. Mein Vorschlag war ja, sich auf der verlinkten Seite zunächst einen Überblick zu verschaffen, entscheiden kann man sich dann immer noch.
|
AW: Mal wieder Datenbanken ;-(
ich werfe - wie so oft - Absolute Database von ComponentAce in die Runde :-) Für privaten Gebraucht im Single-User Betrieb kostenlos...
|
AW: Mal wieder Datenbanken ;-(
Kann man denn auch mit der Personal darauf zugreifen? Wenn da TDataset-Abkömmlinge enthalten sein sollten stelle ich mir das schwierig vor.
|
AW: Mal wieder Datenbanken ;-(
Vielen Dank für die Anregungen :thumb:
Werde mir mal Sir Rufos Synopse-Tipp zu Gemüte führen. LG Gustav |
AW: Mal wieder Datenbanken ;-(
Zitat:
Je nach gewünschter Datenspeicherung muß natürlich AnsiChar oder WideChar genutzt werden. Gruß K-H |
AW: Mal wieder Datenbanken ;-(
Also ich hatte vor ca 4 Jahren, als ich noch nicht über ein kommerzielles Delphi verfügte, für einen Künstler-Verein eine komplette Veranstaltungsverwaltung mit Delphi 7 Personal geschrieben, und zwar auf Basis folgender Records:
Delphi-Quellcode:
Wichtig ist hier, in Records keine reinen Strings zu verwenden, sondern ausschließlich selbstdefinierte Shortstrings mit einer festen Größe.
TYPE
STR002 = STRING[ 2]; STR005 = STRING[ 5]; STR010 = STRING[ 10]; STR012 = STRING[ 12]; STR020 = STRING[ 20]; STR030 = STRING[ 30]; STR040 = STRING[ 40]; STR050 = STRING[ 50]; STR100 = STRING[100]; STR150 = STRING[150]; STR200 = STRING[200]; STR255 = STRING[255]; ZEICHEN = ARRAY[0..255] OF CHAR; PERSON = RECORD Anrede : INTEGER; Name : STR030; Vorname : STR020; GebDat : TDate; GebOrt : STR050; PLZ : INTEGER; Ort : STR050; Strasse : STR050; Land : INTEGER; Vorwahl : LONGINT; TelPriv : STR020; TelAtel : STR020; TelHand : STR030; Fax : STR020; Email : STR050; Homepage : STR100; Ak : BOOLEAN; Bk : BOOLEAN; Dk : BOOLEAN; Fv : BOOLEAN; Li : BOOLEAN; Mu : BOOLEAN; Kf : BOOLEAN; Eintritt : TDate; Austritt : TDate; Mark : BOOLEAN; Datei : STR255; END; VERANSTALT = RECORD Titel : STR200; Beginn : TDate; Ende : TDate; Art : WORD; Ort : WORD; Verni : WORD; Finni : WORD; Mitt : WORD; Donn : WORD; Frei : WORD; Sams : WORD; Sonn : WORD; Mark : BOOLEAN; END; TextZeilen = ARRAY[1..20] OF STR200; MEDIUM = RECORD Name : STR050; {Dateiname} Typ : STR010; {Dateityp} Size : Int64; {Dateigröße} Datum : TDate; {Dateidatum} Zeit : TTime; {Dateiuhrzeit} Text : TextZeilen; {Beschreibung der Datei} END; VERTRAG = RECORD Titel : STR100; Preis : LONGINT; Jahr : WORD; Datum : TDate; Breite : INTEGER; Hoehe : INTEGER; Kuenstler : STR050; Kaufer : STR050; Adress : STR100; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz