AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Image in Access Datenbank speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Image in Access Datenbank speichern

Ein Thema von uwe12 · begonnen am 28. Apr 2009 · letzter Beitrag vom 5. Mai 2009
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#31

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 12:21
Hallo,

entweder die Tabelle ist leer oder du stehst hinter dem letzten Datensatz (EOF),
dann wird ein Table.Edit automatisch zu Table.Insert,
oder du machst was verkehrt ...

Was machst du genau vor dem Table.Edit ?
Hängt an dem Table noch was dran (DBGrid) ?


#Edit:
gerade gesehen

Zitat:
wenn ich einen neuen datensatz anlegen möchte
Warum kein Table.Insert ?

Lass mal den ganzen Blob-Kram weg und lege nur einen leeren Record an.



Heiko
Heiko
  Mit Zitat antworten Zitat
uwe12

Registriert seit: 21. Apr 2009
58 Beiträge
 
#32

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 14:06
ich versteht das nicht ganz. ich komm irgendwie nicht weiter. die tabelle ist nicht leer. Vor dem AdoTable1.edit lege ich einen neuen datensatz über Adotable1.append an.
hab hier nochmal mein quelltext.
Delphi-Quellcode:
var
  blob: TAdoBlobStream;
  fs:TMemorystream;
begin
  AdoTable1.edit;
  blob := TADOBlobStream.Create(AdoTable1Bild, bmwrite);
  try
    fs := TMemorystream.create();
    ADOImage.Picture.Bitmap.SaveToStream(fs);
    fs.Seek(0, soFromBeginning);
    try
      blob.CopyFrom(fs, fs.Size);
        AdoTable1.post;
    finally
      fs.Free;
    end;
  finally
    blob.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#33

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 14:14
Kommt denn nach dem Append noch ein Post?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#34

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 14:18
Hallo,

Zitat:
Vor dem AdoTable1.edit lege ich einen neuen datensatz über Adotable1.append an.
hab hier nochmal mein quelltext.
Wie sollen wir helfen, wenn du nur die Hälfte postest.

Ich sehe hier kein Append.

Ein Edit ist nicht nowendig, wenn du genau vorher ein Append machst.

Unter Tex würde man jetzt sagen: Minimal-Bsp. erzeugen und + DB posten.


Heiko
Heiko
  Mit Zitat antworten Zitat
uwe12

Registriert seit: 21. Apr 2009
58 Beiträge
 
#35

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 14:48
es kommt nur append. ich habe hier mal meinen gesamten quelltext.
Delphi-Quellcode:
function JpegStartsInBlob(PicField:TBlobField):integer;
var
 bS : TADOBlobStream;
 buffer : Word;
 hx : string;
begin
 Result := -1;
 bS := TADOBlobStream.Create(PicField, bmRead);
 try
  while (Result = -1) and (bS.Position + 1 < bS.Size) do begin
   bS.ReadBuffer(buffer, 1);
   hx:=IntToHex(buffer,2);
   if hx = 'FFthen begin
     bS.ReadBuffer(buffer, 1);
     hx:=IntToHex(buffer,2);
     if hx = 'D8then Result := bS.Position - 2
     else if hx = 'FFthen bS.Position := bS.Position-1;
   end;//if
  end;//while
 finally
  bS.Free
 end; //try
end;


procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
var
  bS : TADOBlobStream;
  Pic : TJpegImage;
 begin
 if AdoTable1.FieldByName('Bild').AsString <> 'then
 begin
  bS := TADOBlobStream.Create(AdoTable1Bild, bmRead);
  try
    bS.Seek(JpegStartsInBlob(AdoTable1Bild), soFromBeginning);
    Pic:=TJpegImage.Create;
    try
     Pic.LoadFromStream(bS);
     ADOImage.Picture.Graphic:=Pic;
    finally
     Pic.Free;
    end;
  finally
    bS.Free
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if openpicturedialog1.Execute then
begin
  AdoImage.Picture.LoadFromFile(openpicturedialog1.FileName);
end;
end;
      
procedure TForm1.Button2Click(Sender: TObject);
var
  blob: TAdoBlobStream;
  fs:TMemorystream;
begin
  AdoTable1.edit;
  blob := TADOBlobStream.Create(AdoTable1Bild, bmwrite);
  try
    fs := TMemorystream.create();
    ADOImage.Picture.Bitmap.SaveToStream(fs);
    fs.Seek(0, soFromBeginning);
    try
      blob.CopyFrom(fs, fs.Size);
    finally
      AdoTable1.post;
      fs.Free;
    end;
  finally
    blob.Free;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Adotable1.Append;
end;

procedure TForm1.FormCreate(Sender: TObject);
var sDBPath, sCons: string;
begin
sDBPath := 'O:\adopic\Datenbank1.mdb';
sCons := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + sDBPath + ';Persist Security Info=False';
ADOTable1.Active:=True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ADOTable1.Active:=False;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#36

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 14:54
Also entweder Append oder Edit, so wie oben macht das ja nicht viel Sinn.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
uwe12

Registriert seit: 21. Apr 2009
58 Beiträge
 
#37

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 15:01
aber wenn ich das Adotable1.edit weglasse, dann kommt folgende Fehlermeldung, wenn ich auf speichern klicke: Eine leere Zeile kann nicht eingefügt werden. Mindestens ein Spaltenwert der Zeile muss festgelegt sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#38

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 15:07
Nimm doch das jetzige Append weg und mach es dorthin, wo jetzt Edit steht (ich mache sowas immer per SQL und nicht per Dataset-Methoden, daher bin ich da nicht ganz sicher).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#39

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 15:12
Zitat:
Nimm doch das jetzige Append weg und mach es dorthin, wo jetzt Edit steht
Ja .Edit versetzt den aktuellen Datensatz in den Bearbeitungsmodus; .Insert fügt einen neuen datensatz vor dem bisher aktuelle ein und wechselt in den Bearbeitungsmodus, .Append fügt ihn an am Ende ein und wechselt in Bearbeitungsmodus
Markus Kinzler
  Mit Zitat antworten Zitat
uwe12

Registriert seit: 21. Apr 2009
58 Beiträge
 
#40

Re: Image in Access Datenbank speichern

  Alt 30. Apr 2009, 15:17
es kommt immernoch die meldung: eine leere zeile kann nicht eingefügt werden. Ich glaube das programm weis nicht, was es einfügen soll.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 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