Autor Beitrag
BennyM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Di 24.09.02 16:22 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334

Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 25.09.02 11:18 
Hi
probiers mal so.
Speichern in DB
ausblenden 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:
ausblenden 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

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
BennyM Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mi 25.09.02 13:09 
Hey Lothar ich habs rausgefunden du bist beim lesen anstatt

ausblenden Quelltext
1:
image.picture.[b]graphic[/b].LoadFromStream(Daten);					


ausblenden Quelltext
1:
image.picture.[b]bitmap[/b].LoadFromStream(Daten);					


aber trotzdem vielen dank für deinen Tipp

Mfg

Benny
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 25.09.02 13:14 
Hi
Kleine Ergänzung :
ausblenden 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

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...