Entwickler-Ecke
Datenbanken - Bitmap in Datenbank schreiben und wieder auslesen
BennyM - Di 24.09.02 16:22
Titel: Bitmap in Datenbank schreiben und wieder auslesen
Hi Leute
Ich habe ein TImage und möchte dies in meiner Datenbank abspeichern ich habe dazu nur eine einfache Paradox - Tabelle genommen und das Feld vom Typ Graphic angelgt. Wie muss ich im Delphi vorgehen dass er mir das Bild abspeichert??? Und wie kann ich es danach wieder von der Datenbank in mein TImage laden??
Mfg
Benny
majolo - Di 24.09.02 20:51
Hi,
also erstens solltest du eine DBImage Komponente verwenden.Die verbindest du dann mit deinem Feld vom Typ Graphic.Dann verwende einen TOpenDialog um das Bild zu öffnen und im DBImage anzuzeigen.Und einen DBNavigator um den Datensatz hinzuzufügen.Ich glaube das müsste klappen.
Gruss
majolo
BennyM - Mi 25.09.02 11:04
hi majolo,
ein bild in ein TImage einladen funktioniert mit dem OpenPictureDialog jetzt brauch ich nur noch wie ich das bild zusätzlich zu vor- und nachnamen speichern kann und danach wieder aus der datenbank in mein TImage lesen kann!
Bisher mach ich es so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TFMitglieder.Felder_versorgen; begin with SQLMitglied do begin FieldByName('MG_Nr').AsInteger := StrToInt(EdNr.Text); FieldByName('MG_Vorname').AsString := EdVorname.Text; FieldByName('MG_Nachname').AsString := EdNachname.Text; FieldByName('MG_Bild').??? := Bild.??? end; end; |
'Bild' ist bei mir der Name meines Images (ein normales TImage keine DBImage) es muss doch auch irgendwie mit einem normalen TImage auch funktionieren??
Und auslesen hab ich es bisher so versucht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TFMitglieder.Maske_fuellen; begin with SQLMitglied do begin EdVorname.Text := FieldByName('MG_Vorname').AsString; EdNachname.Text := FieldByName('MG_Nachname').AsString; Bild.??? := FieldByName('MG_Bild').???; end; end; |
Wäre echt super wenn mit einer helfen könnte!
LCS - Mi 25.09.02 11:18
Hi
probiers mal so.
Speichern in DB
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure Speichern; var Daten : TMemoryStream; begin Daten := TMemoryStream.Create; image.picture.graphic.SaveToStream(Daten); Daten.Position := 0; TBlobField(SQLMitgield.FieldByName('MG_Bild')).LoadFromStream(Daten); Daten.Free; end; |
Und zum Lesen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Lesen; var Daten : TMemoryStream; begin if not SQLMitgield.FieldByName('MG_Bild').IsNull then begin Daten := TMemoryStream.Create; TBlobField(SQLMitgield.FieldByName('MG_Bild')).SaveToStream(Daten); Daten.Position := 0; image.picture.graphic.LoadFromStream(Daten); Daten.Free; end; end; |
Ich konnts nicht testen, aber sollte in etwa hinhauen.
Gruss Lothar
BennyM - Mi 25.09.02 11:41
Hey Lothar
das Speicher funktioniert einwandfrei nur beim lesen gibts noch ein paar schwierigkeiten er bringt mir eine Zugriffsverletzung ich schau mal ob ichs hinbekomme aber falls dir was einfällt woran es liegen könnte dann sag bescheid ich sag auch bescheid wenn ichs hinbekommen hab!
Mfg
Benny
BennyM - Mi 25.09.02 13:09
Hey Lothar ich habs rausgefunden du bist beim lesen anstatt
Quelltext
1:
| image.picture.[b]graphic[/b].LoadFromStream(Daten); |
Quelltext
1:
| image.picture.[b]bitmap[/b].LoadFromStream(Daten); |
aber trotzdem vielen dank für deinen Tipp
Mfg
Benny
LCS - Mi 25.09.02 13:14
Hi
Kleine Ergänzung :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure Lesen; var Daten : TMemoryStream; Bild : TPicture; begin if not SQLMitgield.FieldByName('MG_Bild').IsNull then begin Bild := TPicture.Create; Daten := TMemoryStream.Create; TBlobField(SQLMitgield.FieldByName('MG_Bild')).SaveToStream(Daten); Daten.Position := 0; TGraphic(Bild).LoadFromStream(Daten); image.picture.assign(Bild); Daten.Free; Bild.Free; end; end; |
Gruss Lothar
---
Hab ich geschrieben bevor ich deinen letzten Post gelesen habe. Wenns funzt dann ignoriers einfach :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!