Thema: Delphi SetBlobData bei ADOQuery

Einzelnen Beitrag anzeigen

HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

AW: SetBlobData bei ADOQuery

  Alt 7. Jan 2015, 10:28
Hallo nochmal,

habe das nun testen können und es klappt leider nicht. Was mache ich falsch ?

Hier mal der Code, welcher einen Stream auslesen soll und anschliessend wieder an einer anderen Stelle einfügen soll:

Delphi-Quellcode:
var
 blob: TStream;
 outstream: TMemoryStream;
 Query: TADOQuery;
begin

 DM_Main.ADOTableRaw.Close;
 DM_Main.ADOTableRaw.TableName := 'KO_STATIONSTYP';
 DM_Main.ADOTableRaw.IndexFieldNames := 'STATIONSTYP';
 DM_Main.ADOTableRaw.Filter := 'STATIONSTYP = ''' + DM_KSB.ADOQueryBestellung['STATIONSTYP'] + '''';
 DM_Main.ADOTableRaw.Filtered := TRUE;
 DM_Main.ADOTableRaw.Open;

 if DM_Main.ADOTableRaw['BEDIENUNGSANLEITUNG'] <> 'then
 begin

  blob := DM_Main.ADOTableRaw.CreateBlobStream(DM_Main.ADOTableRaw.FieldByName('BEDIENUNGSANLEITUNG'), bmRead);
  blob.Seek(0, soFromBeginning);

  outstream := TMemoryStream.Create;
  outstream.LoadFromStream(blob);
  outstream.Seek(0, soFromBeginning);

  DM_Main.ADOQueryRaw.Close;
  DM_Main.ADOQueryRaw.SQL[1] := 'SYSFORM.KOBUSYS_VERLAUF';
  DM_Main.ADOQueryRaw.SQL[3] := 'BEDIENUNGSANLEITUNG';
  DM_Main.ADOQueryRaw.SQL[5] := 'WHERE ID';
  //DM_Main.QueryRaw.ParamByName('p_pdf').SetBlobData(outstream.Memory, outstream.Size);
  DM_Main.ADOQueryRaw.Parameters.ParamByName('p_pdf').LoadFromStream(outstream.Memory, ftBlob);
  DM_Main.ADOQueryRaw.Parameters.ParamByName('p_auftragsnummer').Value := inttostr(DM_KSB.ADOQueryBestellung['ID']);
  DM_Main.ADOQueryRaw.ExecSQL;

  outstream.Free;

  blob.Free;

 end;
und hier noch der SQL-Code der Query:

Delphi-Quellcode:
UPDATE
SYSDBP.DBP_AUFTRAGEX
SET
PDF
= :p_pdf
WHERE AUFTRAGSNUMMER
= :p_auftragsnummer
Bei .LoadFromStream kommt der Fehler "Zugriffsverletzung bei Adresse ...". Das Auskommentierte ist der vorherige Code mit der BDE und TQuery. Das ging. Nun will ich das ja mit ADOQuery machen.

Vielleicht kennt Ihr ja auch eine ganz andere Lösung für das kopieren von einem Stream ...

Gruss

Holger

Geändert von HolgerCW ( 7. Jan 2015 um 10:33 Uhr)
  Mit Zitat antworten Zitat