SQL_SERVER 7 字段类型: Image;
//从数据库中读出cad文件,bmp就更容易,得到后直接用image即可显示
var s : TMemoryStream;
begin
  with ADOQuery1 do begin
    Close;
    SQL.Clear;
    SQL.Add('select filedwg from drawdwg where tabno = :no');
    Parameters.ParamByName('no').Value := Edit1.Text;
    Open;
    if RecordCount = 0 then begin
      showmessage('no find result !');
      Exit;
    end;
  end;
  deletefile('c:\temp.dwg');
  s := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('filedwg')),bmRead);
  s.SaveToFile('c:\temp.dwg');
  s.Free;
end;

解决方案 »

  1.   

    var
      stream1:tstream;
    begin
      stream1:=query1.createblobsteam(query1.fieldbyname('') as    TBlobfield,bmread);
      image1.loadfromstream(stream1);
      stream1.free;
    end;
    ok了
    记得给分呀!
      

  2.   

    光把数据导出,然后用 Image 控件显示不一定能行,因为 Jpg 和 Bmp 的格式是不一样的。
    所以最好用一个字段存放图片文件的后缀,在生成临时文件时用相关的后缀,然后再使用 Image 控件打开临时图片文件即可。
      

  3.   

    kyee兄说的不错,不过我觉得 linyin(林荫) 的应该可行,因为数据以流的方式传送,而image会自动根据识别接受到的流数据的
      

  4.   

    var
      ms:tmemorystream;
      jp:TJpegImage;
    begin
      ms:=tmemorystream.Create;
      jp:=TJpegImage.Create;
      try
        with ADOQuery1 do
        begin
          Open;
          TBlobField(FieldByName('i')).SaveToStream(ms);
          Close;
        end;
        ms.Position:=0;
        jp.LoadFromStream(ms);
        Image1.Picture.Bitmap.Assign(jp);
      finally
        ms.Free;
        jp.Free;
      end;
    end;
      

  5.   

    如果是BMP,就
    bmp:TBitmap;
    后面jp全部改下!