ERP系统,有两个表,MF_BOM(PRD_NO,PHOTO_BOM),MF_MO(MRP_NO),MF_BOM表的PHOTO_BOM是二进制的图片数据,我从FR中拖一个PICTURE控件到报表中,想显示PRD_NO=MRP_NO的图片,要怎么做呢?

解决方案 »

  1.   

    FR什么版本,应该是有Demo的,记得有LoadFromFile之类的方法
      

  2.   

    把picture控件的DataField设为PHOTO_BOM
      

  3.   

    fr上有picture組件,設定其datafield
      

  4.   


    这样会把所有MF_BOM表中所有的图片都打印出来,而我只是要和这个MF_BOM的PRD_NO相等的MRP_NO行的PHOTO_BOM,要怎么过滤呢?对了,是天思ERP
      

  5.   

    需要建设相应的ado数据集,然后把数据集关联到fr,再选择相应的图片字段
      

  6.   

    procedure TDataModule1.frrpPrintBeforePrint(Memo: TStringList;    //获取数据库的图片信息
      View: TfrView);
    var
      tempstream: TStringStream;
      tempjpeg: TJPEGImage;
    begin
      if View.Name = '控件名' then
      begin
        try
          tempstream := TStringStream.Create(' ');
          TBlobField(adoqryPrint.FieldByName('Picture')).SaveToStream(tempstream);
          tempstream.Position := 0;
          tempjpeg := TJPEGImage.Create;
          tempjpeg.LoadFromStream(tempstream);
          TfrPictureView(View).Picture.Bitmap.Assign(tempjpeg);
        finally
          tempstream.Free;
          tempjpeg.Free;
        end;
      end;
    end;
      

  7.   

    這個也可以FastReport中的PictureView控件不是数据感知控件,无法像Memo控件一样随着字段数据的变化而动态显示数据,要实现此功能,需要在FrxReport控件的BeforePrint中添加如下代码:
    //以下为自定义函数
    procedure TForm2.LoadPhoto;     //此处的TForm2代表form2窗体的函数,可根据实际情况改动
    var
      S,FileName:String;
    begin
          S:=   trim(form1.adoquery2.FieldByName(''clientcode'').AsString);
          FileName:=''photo\'' +  S +''.jpg'';
          if   FileExists(FileName)   then         //载入photo目录下对应的图片
          begin
              PV.Picture.LoadFromFile(FileName);
          end
          else
          begin
              pv.Picture.LoadFromFile(''photo\black.jpg'');    
          end;
    end;procedure TForm2.frxReport1BeforePrint(Sender: TfrxReportComponent);
    begin
      loadphoto;   //为自定义函数,其内容如上
    end;