Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MS Access + Delphi + Bilder - Unglückliche Kombination? (https://www.delphipraxis.net/212208-ms-access-delphi-bilder-unglueckliche-kombination.html)

feddelphipraxis 4. Jan 2023 14:57

Datenbank: MS Access • Version: 365 (2020) • Zugriff über: ADO

MS Access + Delphi + Bilder - Unglückliche Kombination?
 
Hallo Delphi-Freunde

Ich verwende die Kombination Delphi - ADO - MS Access schon ziemlich lange und bin damit recht zufrieden. Früher verwendete ich Paradox mit der BDE, da gab es schon einige Probleme. Mit MS Access bin ich heute wirklich glücklicher.
Ich muss noch vorausschicken, dass ich die Datenbank als Stand Alone-Anwendung typischerweise auf einem Laptop verwende. Eine Migration auf ein anderes DBS ist zurzeit nicht geplant.

Also jetzt zum Problem:
Ich habe recht viel zum Thema MS Access und Bilder gelesen, hier und anderswo. Es werden unterschiedliche Lösungen beschrieben. Aber nirgends die einfache Lösung.
Das verstehe ich nicht.

Ist MS Access grundsätzlich ungeeignet Bilder oder Array Of Bytes zu verwalten?
Natürlich könnte ich die eigentlichen Daten in Files oder wo auch immer separat ablegen, aber das will ich nicht.
Ein Vorteil von MS Access ist ja gerade, dass in einem File (MDB oder ACCDB) alles enthalten ist.

Zwischenschnitt:
Wenn ich im falschen Forum bin, mich zum Beispiel besser im MS Access Forum umschauen soll, so sagt mir das.

Meine Aufgabe ist einfach:
Es geht um eine Materialverwaltung mit Fotos. Typisch ca. 2000 Positionen, maximal etwa 10000. Bildformat jetzt mal JPEG. die meisten Bilder sind 100 Kilobyte bis 1 Megabyte groß.
Ich muss lesen (darstellen) und speichern können.

Ich denke das ist eine Aufgabe, die von Tausenden Delphianern so gestellt wird. Ich habe bis jetzt noch keine einfache Lösung gesehen. Und natürlich sollte der Speicherverbrauch dafür vernünftig (einigermaßen effizient) sein. Wer hat da einen Ansatz für die gute Lösung?

Danke im Voraus.

Klaus01 4. Jan 2023 15:08

AW: MS Access + Delphi + Bilder - Unglückliche Kombination?
 
.. vielleicht hilft Dir das etwas weiter: https://www.codeproject.com/articles...icrosoft-acces

Grüße
Klaus

HolgerX 4. Jan 2023 18:18

AW: MS Access + Delphi + Bilder - Unglückliche Kombination?
 
Hmm...

Ein Tipp: Verges es 10000 Bilder mit bis zu 1 MB in eine Datenbank zu schieben!

Die Datenbankdatei würde (bei Bildgöße 1 MB, einfacher zu rechnen) nur mit den Bildern auf über 10 GB Größe anwachsen!
(10.000 X 1 MB) + Verwaltungsdaten

Wenn ich bedenke, dass heute Fotos mit Handy erstellt deutlich größer wie 1 MB sind würde die Datei massiv wachsen.

Wenn ich diesen Spezifikation richtig verstehe, kann eine Access Datei maximal 2 GB groß sein!!
https://support.microsoft.com/de-de/...8-98c1025bb47c
Somit hat sich deine Idee bereits damit erledigt..

Vorschlag:
- Lege die Bilder in einem direkten Unterverzeichnis des Ordners mit der Datenbankdatei ab.
- Packe in die DB nur den relativer Pfad + Bild-Dateiname.
- Eventuell ein 'kleines' ThumbNail (in Blob-Feld) hinzu für Vorschau.

Deine App würde dann für die Volldarstellung die Datei ganz normal laden.

TurboMagic 4. Jan 2023 19:45

AW: MS Access + Delphi + Bilder - Unglückliche Kombination?
 
Falls die Speicherung in der DB wirklich ein Muss ist,
müsste dann die DB gewechselt werden, z.B. zu Firebird.
Da gibt's dann keine so niedrige Größenbegrenzung.
Manche alternativen DBs können auch embedded, d.h. ohne
Server benutzt werden.

mytbo 4. Jan 2023 22:18

AW: MS Access + Delphi + Bilder - Unglückliche Kombination?
 
Bei der geringen Anzahl an Daten würde ich alles in einer Datenbank speichern. Sollte es Gründe für die Trennung von Stamm- und Bilddaten geben, dann jeweils in einer eigenen Datenbank. Eine Blobgröße von 0,1 - 1MB ist bei modernen DBs in Ordnung. In deinem Fall bietet sich eine Embedded SQLite Datenbank, statisch ins Programm eingebunden, an. SQLite hat ein Größenlimit von 281474 Gigabytes, damit wären noch Reserven vorhanden. Ein Beispiel, wie es mit einem ORM einfach umzusetzen ist, findest du im Artikel ORM und DocVariant kurz vorgestellt.

Einige Fakten zum Nachlesen:
Bis bald
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz