Avatar billede roz Nybegynder
21. marts 2005 - 01:35 Der er 7 kommentarer og
1 løsning

Gemme JPEG billede i Access DB

Mit spørgsmål lyder: Hvordan kan jeg med et TADODataset gemme et billede i et blob felt i en database?

Har selv forsøgt med denne kode:

  fs:=TFileStream.Create(Opendialog1.FileName, fmOpenRead);
  try
  ADODataset1.Edit;
  ADODataset1.Insert;
  ADODataset1.FieldByName('Image').:=fs; //PROBLEEEEEEM
  ADODataset1.Post;
  finally
  fs.Free;

Men der hvor der står problem ved jeg ikke hvad jeg skal gøre. Men en almidelige ADOTable ville jeg have brigt LoadFromStream men med ADODataset ved jeg ikke hvordan jeg skal gøre det.
Har prøvet google og ekspertens søgemaskine men kan ikke finde hoved og hale i de fundne poster.

Så 200 point til den der kan hjælpe mig :)
Avatar billede dkn Nybegynder
21. marts 2005 - 02:28 #1
function SaveToBlob(const Stream: TStream; const AField: TField): boolean;
var
  FieldStr          : string;
  PFieldStr        : PChar;
begin
  Result := false;
  if (Assigned(AField)) and (Assigned(Stream)) then
  begin
    try
      Stream.Seek(0, 0);
      SetLength(FieldStr, Stream.Size);
      PFieldStr := PChar(FieldStr);
      Stream.Read(PFieldStr^, Stream.Size);
      AField.Value := FieldStr;
      Result := true;
    except
    end;
  end;
end;


function LoadFromBlob(const AField: TField; const Stream: TStream): boolean;
var
  ResultStr        : string;
  PResultStr        : PChar;
begin
  Result := false;
  if (Assigned(AField)) and (Assigned(Stream)) then begin
    try
      ResultStr := AField.Value;
      PResultStr := PChar(ResultStr);
      Stream.Write(PResultStr^, Length(ResultStr));
      Stream.Seek(0, 0);
      Result := true;
    except
    end;
  end;
end;
Bare husk at kalde insert inden man kalder dem.
Avatar billede dkn Nybegynder
21. marts 2005 - 02:31 #2
hov...

så bliver det noget lign:

var
  ms          : tmemorystream;
begin
  ms := tmemorystream.Create;
  JPEGIMG.SaveToStream(ms);

  ADODataSet.Insert;
  SaveToBlob(ms2, ADODataSet.FieldByName('Image'));
  ms.Free;
end;
Avatar billede roz Nybegynder
21. marts 2005 - 02:54 #3
Hmm hvad kan jeg så gøre hvis jeg skal have filnavnet JPEGIMG fra en dialog (opendialog)?
Avatar billede roz Nybegynder
21. marts 2005 - 02:57 #4
Og hvordan ville jeg loade billedet fra LoadBlob funktionen ind i et Image?
Avatar billede roz Nybegynder
21. marts 2005 - 03:12 #5
Okay klarede selv det første. Men kan ikke få Load funtionen til at loade til et image. Hvordan gør jeg det?
Avatar billede roz Nybegynder
21. marts 2005 - 04:11 #6
Nå fandt ud af dem begge :) Blot et spørgsmål jeg har problemer med. Hvordan loader jeg gemmer jeg et TImage til en stream?
Avatar billede martinlind Nybegynder
21. marts 2005 - 10:45 #7
Prøv evt. at kigge i hjælpen under BlobStream, der er et udemærket eks. på hvordan, det er ca. 4-5 liner du skal skrive så kører det :)
Avatar billede roz Nybegynder
23. marts 2005 - 14:26 #8
Fandt ud af det uden. Men tak alligevel :)
Giver dig lige point dkn ;) Tak for hjælpen :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester