Hallo zusammen, ich bin neu hier
Mein Problem sieht so aus:
Ich möchte Bilder in einer Datenbank abspeichern (Als Stream, nicht nur den Pfad),
und diese dann wieder auslesen.
Wie ich ein Bild von einer Datei in einen Stream lade, habe ich schon herausgefunden.
In die Datenbank kopiere ich den geladenen Stream so:
ADOTable1.Edit;
(ADOTable1.FieldByName('MStream')as TBlobField).LoadFromStream(stream);
ADOTable1.Post;
Bis hier hin funktioniert alles. Egal was ich als Datei in den Stream lade, es wird in der DB gespeichert.
Will ich die Daten auslesen, (wir gehen jetzt nur von Bild Dateien aus), habe ich 2 Möglichkeiten.
Nummer 1 ist, ein DB Image zu nehmen, Data Source und Data Field auf die DB einzustellen.
So lange das gegenwärtige Feld der DB nun ein Bitmap ist, wird dieses von DBImage dargestellt. Ist es kein Bitmap, gibts ne Fehlermeldung. Das scheint aber in Ordnung zu gehen da DBImage nur Bitmaps zu können scheint.
Nummer 2 wäre, ein normales Image mit den Bilddateien zu laden. Dazu dachte ich mir, müsse man den Inhalt der relevanten Feldes der DB in einen Stream kopieren, und diesen dann als Datei abspeichern, oder das Image direkt aus dem Stream zu beschreiben.
Mein Versuch hierfür klappt leider nicht:
var s : TBlobStream;
s := TBlobStream.Create(ADOTable1.FieldByName('MStream') AS TBlobField, bmReadWrite);
ich kann das zwar kompilieren, doch wenn ich der Stream geladen werden soll kommt der Fehler das eine ungültige Typenumwandlung geschieht.
Ich weiss nicht ob meine Methode generell richtig ist, ich komme aber nicht dahinter wo der Fehler liegt.
Falls mir jemand weiterhelfen kann, wäre das super.
Noch als Zusatzinfo :
Die Datenbank ist eine Access 2000 Datenbank mit den Feldern ID (Autowert) Bezeichner(Text) und MStream(Memo)
Ich hatte MStream auch schon als OLE Feld getestet, hat aber am resultat nix geändert.
PS.: Ich glaube den Beitrag ins falsche Unterforum gepostet zu haben. Könnte ein Mod den Thread ins Datenbank Unterforum verschieben?