给你一个读写打印Ole的例程,自己去看吧: procedure ReadOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String); var Stream_tmp:TStream; begin if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then begin Stream_tmp := TMemoryStream.Create(); Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead); Stream_tmp.Position := 0; OleContainer.LoadFromStream(Stream_tmp); Stream_tmp.Free(); end; end;procedure WriteOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String); var Stream_tmp :TStream; begin if (OleContainer.State <> osEmpty ) then begin Stream_tmp := TMemoryStream.Create(); OleContainer.SaveToStream(Stream_tmp); Stream_tmp.Position := 0; (AdoQuery.FieldByName(OleField) as TBlobField).LoadFromStream(Stream_tmp); Stream_tmp.Free(); end; end; procedure PrintOle(AdoQuery: TADOQuery;OleContainer: TOleContainer; OleField: String); var Stream_tmp:TStream; begin if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then begin Stream_tmp := TMemoryStream.Create(); Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead); Stream_tmp.Position := 0; OleContainer.LoadFromStream(Stream_tmp); OleContainer.DoVerb(ovPrimary); OleContainer.OleObject.OleProcedure('PrintOut'); OleContainer.Close(); Stream_tmp.Free(); end; end;
procedure ReadOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String);
var
Stream_tmp:TStream;
begin
if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then
begin
Stream_tmp := TMemoryStream.Create();
Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead);
Stream_tmp.Position := 0;
OleContainer.LoadFromStream(Stream_tmp);
Stream_tmp.Free();
end;
end;procedure WriteOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String);
var
Stream_tmp :TStream;
begin
if (OleContainer.State <> osEmpty ) then
begin
Stream_tmp := TMemoryStream.Create();
OleContainer.SaveToStream(Stream_tmp);
Stream_tmp.Position := 0;
(AdoQuery.FieldByName(OleField) as TBlobField).LoadFromStream(Stream_tmp);
Stream_tmp.Free();
end;
end;
procedure PrintOle(AdoQuery: TADOQuery;OleContainer: TOleContainer; OleField: String);
var
Stream_tmp:TStream;
begin
if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then
begin
Stream_tmp := TMemoryStream.Create();
Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead);
Stream_tmp.Position := 0;
OleContainer.LoadFromStream(Stream_tmp);
OleContainer.DoVerb(ovPrimary);
OleContainer.OleObject.OleProcedure('PrintOut');
OleContainer.Close();
Stream_tmp.Free();
end;
end;