我用的fastreport3.0的报表
setfrxreport_zy(id); //读取报表,然后设置报表纸张,等等,MyDataModule.frxReport1.Print; //打印,但是提示异常。提示:
access violation at adress 00569FF9 in module "glht.exe " read of address 2F3831F2
请教各位了

解决方案 »

  1.   

    MyDataModule.frxReport1.Preview;
    改成这样 看行不行
    是不是没连接上打印机呢?
      

  2.   

    setfrxreport_zy(id); //读取报表,然后设置报表纸张,等等, MyDataModule.frxReport1.Print; //打印,但是提示异常。 估计是报表参数设置或者读取出现非法访问,请再检查一下你的报表代码等有没写错,设置.
      

  3.   

    procedure setfrxreport_zy(sid:string);
    var
       id_temp,s,strtile:String;
       FStream:   TIniFile;
       FStream1:   TIniFile;
       filename,filename1:string;
       strrow:string;
      memo1,memo2,memo3,memo4,memo5,memo6,memo7,memo8,memo9,memo10,memo49:TfrxMemoView ;
      memo11,memo12,memo13,memo14,memo15,memo16,memo17,memo18,memo19,memo20:TfrxMemoView ;
      memo21,memo22,memo23,memo24,memo25,memo26,memo27,memo28,memo29,memo30,memo31,memo32:tfrxMemoView ;
      memo33,memo34,memo35,memo36,memo37,memo38,memo39,memo41,memo40,memo42,memo43,memo44,memo45,memo46,memo47:TfrxMemoView ;  page1:TfrxReportpage ;
      reporttitle1:tfrxreporttitle ;
      masterdata1:tfrxmasterdata;
      footer1:tfrxfooter;
      header1:tfrxheader;
      /////////////////////////  str,sqlStr,sqlStr1,headerstr:string;
      i,n:integer;
       header_array:array[0..20,0..1] of String;   //顶部打印顺序数组
       buttom_array:array[0..3,0..1] of String;   //检验项目打印顺序数组
       sqljingjian,sqlupdate:string;
       WPath:string;    qry1,qry2,qry3:TADOQUERY;
       frxDBDataset1jianyan_mincheng:TfrxMemoView ;
       frxDBDataset1jianyan_changyongzhi:TfrxMemoView ;
       frxDBDataset1jianyan_cankaozhi:TfrxMemoView ;
       frxDBDataset1jingjian_mincheng:TfrxMemoView ;
       frxDBDataset1jingjian_zhi:TfrxMemoView ;   reporttile1:TfrxReportTitle ;
       idstr:string;   bottommargin,leftmargin,rightmargin,topmargin:real;
       strpage,strpage1:string;
       introw:integer;   paperwidth,PAPERHEIGTH:Extended ;   Widthpage:real; //这个宽度是报表去掉左右margin的值。去掉左右边距的数值
           //把毫米单位换成像素   
        
           DC:HDC;
           dpiSize:integer;
           pix:integer;      strstyle:string;      page2:TfrxPage;     FX:STRING;//  记录方向
      label outer;begin  id:=Trim(sid) ;  if id<>''then
      begin
              MyDataModule.frxReport1.pages[0].Clear ;      try
              filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
              FStream   :=   TIniFile.Create(filename);
                //左右格式1.上下格式--2
              strstyle:=trim((FStream.ReadString('Style','Style','')));
              strpage:=trim((FStream.ReadString('Paper','PaperName','')));
              strpage1:=trim((FStream.ReadString('UserPaper','PaperName','')));
              if ( Trim(strpage)='') and (Trim(strpage1)='')  then
              begin //如果自定义,系统的都没有定义纸张,就会出错。
                   ShowMessage('请设置报表的纸张的大小!!!');
                   exit;
              end;
              if Trim(strstyle)='1' then
              begin
                             //35 原来的,
                             //36对35上面做了修改,可以横竖,自定义的纸张。
                             //351 是对纸张做横向打印的。
                              //35是按照b5的大小设计的。
                              //34是按照A4的大小设计的。
                   MyDataModule.frxReport1.LoadFromFile(WPath + IntToStr(36) + '.fr3');          end else  if Trim(strstyle)='2' then
              begin               MyDataModule.frxReport1.LoadFromFile(WPath + IntToStr(355) + '.fr3');          end
              else if Trim(strstyle)='' then
              begin
                  ShowMessage('请设置报表的格式!!!');
                  exit;
              end;
      

  4.   

     page1:= MyDataModule.frxreport1.findobject('page1')as TfrxReportpage  ;
              with page1 do
              begin
                    //读取的纸张的大小,保存在ini文件中。
                   //  strpage:=trim((FStream.ReadString('Paper','PaperName','')));
                begin
                     if strpage='A4' THEN
                     begin
                          page1.PaperSize:=DMPAPER_A4;
                      end
                     else  if strpage='Letter' THEN PaperSize:=DMPAPER_Letter
                     else  if strpage='LetterSmall' THEN PaperSize:=DMPAPER_LetterSmall
                     else  if strpage='Tabloid' THEN PaperSize:=DMPAPER_Tabloid
                     else  if strpage='Ledger' THEN PaperSize:=DMPAPER_Ledger
                     else if strpage='Legal' THEN PaperSize:=DMPAPER_Legal
                     else  if strpage='Statement' THEN PaperSize:=DMPAPER_Statement
                     else if strpage='Executive' THEN PaperSize:=DMPAPER_Executive
                     else if strpage='A3' THEN PaperSize:=DMPAPER_A3
                     else if strpage='A4Small' THEN PaperSize:=DMPAPER_A4Small
                     else if strpage='A5' THEN PaperSize:=DMPAPER_A5
                     else if strpage='B4' THEN PaperSize:=DMPAPER_B4
                     else if strpage='B5' THEN
                     begin
                             PaperSize:=DMPAPER_B5;                 end
                     else if strpage='Folio' THEN PaperSize:=DMPAPER_Folio
                     else if strpage='Quarto' THEN PaperSize:=DMPAPER_Quarto
                     else if strpage='qr10X14' THEN PaperSize:=DMPAPER_10X14
                     else  if strpage='qr11X17' THEN PaperSize:=DMPAPER_11X17
                     else if strpage='Note' THEN PaperSize:=DMPAPER_Note
                     else if strpage='Env9' THEN PaperSize:=DMPAPER_ENV_9
                     else  if strpage='Env10' THEN PaperSize:=DMPAPER_Env_10
                     else  if strpage='Env11' THEN PaperSize:=DMPAPER_Env_11
                     else  if strpage='Env12' THEN PaperSize:=DMPAPER_Env_12
                     else  if strpage='Env14' THEN PaperSize:=DMPAPER_Env_14
                     else  if strpage='CSheet' THEN PaperSize:=DMPAPER_CSheet
                     else  if strpage='DSheet' THEN PaperSize:=DMPAPER_DSheet
                     else if strpage='ESheet' THEN PaperSize:=DMPAPER_ESheet                 else   //custom
                     begin
                          
                          filename1:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
                          FStream1   :=   TIniFile.Create(filename1);
                          try
                              Page1.Paperwidth:=strtoint(trim(FStream1.ReadString('UserPaper','length','')));
                              Page1.PaperHeight:=strtoint(trim((FStream1.ReadString('UserPaper','Width',''))));
                          
                          finally
                              FStream1.Free;
                          end;                      
                     end;
                                      //ShowMessage('纸张设置完毕');
                     FX:='';
                     if  trim((FStream.ReadString('Print','P','')))='1' then
                     begin                     // ShowMessage('竖向打印');
                          page1.Orientation:=poPortrait;
                          FX:='1';                 end else  if  trim(FStream.ReadString('Print','P',''))='2' then
                     begin
                            //  ShowMessage('横向打印');
                               page1.Orientation:=poLandscape;
                               FX:='2';
                     end;                  if  trim((FStream.ReadString('Marge','Left','')))<>'' then
                      begin
                            leftmargin:=strtofloat(trim((FStream.ReadString('Marge','Left',''))));
                            page1.leftmargin:= leftmargin;                  end;
                      if  trim((FStream.ReadString('Marge','Top','')))<>''then
                      begin
                            topmargin:=strtofloat(trim((FStream.ReadString('Marge','Top',''))));
                            page1.TopMargin:=topmargin;
                      end;
                      if  trim((FStream.ReadString('Marge','Right','')))<>''then
                      begin
                            rightmargin:=strtofloat(trim((FStream.ReadString('Marge','Right',''))));
                            page1.RightMargin:=rightmargin;
                      end;
                      if  trim((FStream.ReadString('Marge','Bottom','')))<>''then
                      begin                      bottommargin:=strtofloat(trim((FStream.ReadString('Marge','Bottom',''))));
                          page1.BottomMargin:=bottommargin;
                      end;                  if  trim((FStream.ReadString('Marge','Row','')))<>''then
                      begin                      page1.Columns:=strtoint(trim(FStream.ReadString('Marge','Row','')));                  end;
                       if  trim((FStream.ReadString('Marge','Row','')))<>''then
                       begin
                         introw:=strtoint(trim((FStream.ReadString('Marge','Row',''))));
                         page1.Columns:=introw;
                       end;                 s:='ZwFont';
                     with page1 do
                     begin
                            Font.Name:=FStream.ReadString(s,'Name','Arial');
                            FONT.CharSet:=strtoint(FStream.Readstring(s,'CharSet',''));
                            FONT.Color:=strtoint(FStream.Readstring(s, 'Color', ''));
                            FONT.Size:=strtoint(FStream.Readstring(s,'Size',''));
                     end;                                end;            end;
           finally
                 FStream.Free;
           end;
      

  5.   

    memo1:= MyDataModule.frxreport1.findobject('memo1')  as TfrxMemoView ;
          memo2:= MyDataModule.frxreport1.findobject('memo2')  as TfrxMemoView ;
          memo3:= MyDataModule.frxreport1.findobject('memo3')  as TfrxMemoView ;
          memo4:= MyDataModule.frxreport1.findobject('memo4')  as TfrxMemoView ;
          memo5:= MyDataModule.frxreport1.findobject('memo5')  as TfrxMemoView ;
          memo6:= MyDataModule.frxreport1.findobject('memo6')  as TfrxMemoView ;
          memo7:= MyDataModule.frxreport1.findobject('memo7')  as TfrxMemoView ;
          memo8:= MyDataModule.frxreport1.findobject('memo8')  as TfrxMemoView ;
          memo9:= MyDataModule.frxreport1.findobject('memo9')  as TfrxMemoView ;
          memo10:= MyDataModule.frxreport1.findobject('memo10')  as TfrxMemoView ;
          memo11:= MyDataModule.frxreport1.findobject('memo11')  as TfrxMemoView ;
          memo12:= MyDataModule.frxreport1.findobject('memo12')  as TfrxMemoView ;
          memo13:= MyDataModule.frxreport1.findobject('memo13')  as TfrxMemoView ;
          memo14:= MyDataModule.frxreport1.findobject('memo14')  as TfrxMemoView ;
          memo15:= MyDataModule.frxreport1.findobject('memo15')  as TfrxMemoView ;
          memo16:= MyDataModule.frxreport1.findobject('memo16')  as TfrxMemoView ;
          memo17:= MyDataModule.frxreport1.findobject('memo17')  as TfrxMemoView ;
          memo18:= MyDataModule.frxreport1.findobject('memo18')  as TfrxMemoView ;
          memo19:= MyDataModule.frxreport1.findobject('memo19')  as TfrxMemoView ;
          memo20:= MyDataModule.frxreport1.findobject('memo20')  as TfrxMemoView ;
          memo21:= MyDataModule.frxreport1.findobject('memo21')  as TfrxMemoView ;
          memo22:= MyDataModule.frxreport1.findobject('memo22')  as TfrxMemoView ;
          memo23:= MyDataModule.frxreport1.findobject('memo23')  as TfrxMemoView ;
          memo24:= MyDataModule.frxreport1.findobject('memo24')  as TfrxMemoView ;
          memo25:= MyDataModule.frxreport1.findobject('memo25')  as TfrxMemoView ;
          memo26:= MyDataModule.frxreport1.findobject('memo26')  as TfrxMemoView ;
          memo27:= MyDataModule.frxreport1.findobject('memo27')  as TfrxMemoView ;
          memo28:= MyDataModule.frxreport1.findobject('memo28')  as TfrxMemoView ;
          memo29:= MyDataModule.frxreport1.findobject('memo29')  as TfrxMemoView ;
          memo30:= MyDataModule.frxreport1.findobject('memo30')  as TfrxMemoView ;
          memo31:= MyDataModule.frxreport1.findobject('memo31')  as TfrxMemoView ;
          memo32:= MyDataModule.frxreport1.findobject('memo32')  as TfrxMemoView ;
          memo33:=MyDataModule.frxreport1.findobject('memo33')   as TfrxMemoView ;
          memo34:= MyDataModule.frxreport1.findobject('memo34')  as TfrxMemoView ;
          memo35:= MyDataModule.frxreport1.findobject('memo35')  as TfrxMemoView ;
          memo36:= MyDataModule.frxreport1.findobject('memo36')  as TfrxMemoView ;
          memo37:= MyDataModule.frxreport1.findobject('memo37')  as TfrxMemoView ;
          memo38:= MyDataModule.frxreport1.findobject('memo38')  as TfrxMemoView ;
          memo39:= MyDataModule.frxreport1.findobject('memo39')  as TfrxMemoView ;
          memo40:= MyDataModule.frxreport1.findobject('memo40')  as TfrxMemoView ;
          memo41:= MyDataModule.frxreport1.findobject('memo41')  as TfrxMemoView ;
          memo42:= MyDataModule.frxreport1.findobject('memo42')  as TfrxMemoView ;
          memo43:= MyDataModule.frxreport1.findobject('memo43')  as TfrxMemoView ;
          memo44:= MyDataModule.frxreport1.findobject('memo44')  as TfrxMemoView ;
          memo45:= MyDataModule.frxreport1.findobject('memo45')  as TfrxMemoView ;
          memo46:= MyDataModule.frxreport1.findobject('memo46')  as TfrxMemoView ;
          memo47:= MyDataModule.frxreport1.findobject('memo47')  as TfrxMemoView ;
          memo49:= MyDataModule.frxreport1.findobject('memo49')  as TfrxMemoView ;      reporttitle1:=MyDataModule.frxreport1.findobject('reporttitle1')as tfrxreporttitle ;
          masterdata1:=MyDataModule.frxreport1.findobject('masterdata1')as tfrxmasterdata ;
          footer1:=MyDataModule.frxreport1.findobject('footer1')as tfrxfooter ;
          header1:=MyDataModule.frxreport1.findobject('header1')as tfrxheader ;
     /////////////////////////////////////////////////////////////////////////////////////////////////
           ///////////////////////////////////////////////////////////////////////////////////////////////////////       try
                    filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
                    FStream:=   TIniFile.Create(filename);
                    s:='TitleFont';
                    with memo1 do
                    begin
                        Font.Name:=FStream.ReadString(s,'Name','Arial');
                        FONT.CharSet:=strtoint(FStream.Readstring(s,'CharSet',''));
                        FONT.Color:=strtoint(FStream.Readstring(s, 'Color', ''));
                        FONT.Size:=strtoint(FStream.Readstring(s,'Size',''));
                    end;
           finally
              FStream.Free;
           end;
      

  6.   

    with MyDataModule  do
          begin
                 MyDataModule.tbl2.Close;
                 MyDataModule.tbl1.close;
                 
                qry1.Close;
                qry1.SQL.Clear;
                qry1.SQL.Add('select ename,cname from printsort where which='+''''
                +'head'+''''+' and isprint=true order by num');            qry1.Open;            n:=0;
               
                //取得打印的表头的字段。
                while not qry1.Eof  do
                begin               //   header_array[n,0]:=qry1.fieldbyname('ename').AsString;  英文名字
                   //    header_array[n,1]:=qry1.fieldbyname('cname').AsString; //中文名字                  if  Trim(qry1.fieldbyname('cname').AsString)='检验日期' then
                      begin
                           // ShowMessage('33dddddd33333333333333332');
                           header_array[n,1]:=qry1.fieldbyname('cname').AsString;                       header_array[n,0]:=Trim(MidStr(id,1,4))+'-'+trim(MidStr(id,5,2))+'-'+trim(MidStr(id,7,2));
                      end
                      else
                      begin
                        //ShowMessage('kkkkkkkkk');
                          header_array[n,1]:=qry1.fieldbyname('cname').AsString;
                          qry2.Close;
                          qry2.SQL.Clear;
                          headerstr:='select '+trim(qry1.fieldbyname('ename').AsString) +char(13);
                          headerstr :=headerstr +'from patient where id=:id';
                          qry2.SQL.Add(headerstr);
                          qry2.Parameters.Items[0].Value:=Trim(id);
                          qry2.Open ;
                          header_array[n,0]:=qry2.fieldbyname(qry1.fieldbyname('ename').AsString).AsString ;
                      end;
                      n:=n+1;
                      qry1.Next;
                end;
              
                //取得打印的buttom的字段。
                qry1.Close;
                qry1.SQL.Clear;
                qry1.SQL.Add('select ename,cname  from printsort where which='+''''
                +'buttom'+''''+' and isprint=true order by num');
                qry1.Open;
                n:=0;
                while not qry1.Eof  do
                begin
                      //ShowMessage('button ziduan ');
                      buttom_array[n,1]:=qry1.fieldbyname('cname').AsString;
                      qry2.Close;
                      qry2.SQL.Clear;
                      headerstr:='select '+trim(qry1.fieldbyname('ename').AsString) +char(13);
                      headerstr :=headerstr +'from patient where id=:id';
                      qry2.SQL.Add(headerstr );
                      qry2.Parameters.Items[0].Value:=Trim(id);
                      qry2.Open ;
                      buttom_array[n,0]:=qry2.fieldbyname(qry1.fieldbyname('ename').AsString).AsString ;                ///////////////////////////////////////////////////////////////////////
                    n:=n+1;
                    qry1.Next;
                end;
      

  7.   

          //取得 patient,ghx_data的数据。
                
                if  header_array[0,1]<>'' then
                begin
                      memo2.Text :=header_array[0,1]+':' ;
                      memo3.Text :=header_array[0,0]  ;            end
                else
                begin
                      memo2.Text :=''; memo3.Text :='';
                      memo2.Visible:=false; memo3.Visible :=false;
                end;
                if  header_array[1,1]<>'' then
                begin
                      memo4.Text := header_array[1,1]+':' ;
                      memo5.Text := header_array[1,0]  ;
                end
                else
                begin
                       memo4.Text :=''; memo5.Text :='';
                      memo4.Visible:=false; memo5.Visible :=false;            end;
                if  header_array[2,1]<>'' then
                begin
                       memo6.Text:= header_array[2,1]+':' ;
                       memo7.Text :=header_array[2,0]  ;
                end
                else
                begin
                      memo6.Text :=''; memo7.Text :='';
                      memo6.Visible:=false; memo7.Visible :=false;
                end;
                if  header_array[3,1]<>'' then
                begin
                      memo8.Text:= header_array[3,1]+':'  ;
                      memo9.Text :=header_array[3,0]  ;
                end
                else
                begin
                      memo8.Text :=''; memo9.Text :='';
                      memo8.Visible:=false; memo9.Visible :=false;            end;
                if  header_array[4,1]<>'' then
                begin
                    memo10.Text:= header_array[4,1]+':';
                    memo11.Text :=header_array[4,0]  ;
                end
                else
                begin
                       memo10.Text :=''; memo11.Text :='';
                      memo10.Visible:=false; memo11.Visible :=false;            end;
                if  header_array[5,1]<>'' then
                begin
                    memo12.Text:= header_array[5,1]+':';
                     memo13.Text :=header_array[5,0]  ;
                end
                else
                begin
                      memo12.Text :=''; memo13.Text :='';
                      memo12.Visible:=false; memo13.Visible :=false;            end;
                if  header_array[6,1]<>'' then
                begin
                      memo14.Text:= header_array[6,1]+':';
                      memo15.Text :=header_array[6,0]  ;
                end
                else
                begin
                       memo14.Text :=''; memo15.Text :='';
                      memo14.Visible:=false; memo15.Visible :=false;
                end;
                if  header_array[7,1]<>'' then
                begin
                     memo16.Text:= header_array[7,1]+':';
                     memo17.Text :=header_array[7,0]  ;
                end
                else
                begin
                     memo16.Text :=''; memo17.Text :='';
                      memo16.Visible:=false; memo17.Visible :=false;
                end;
                if  header_array[8,1]<>'' then
                begin
                    memo18.Text:= header_array[8,1]+':';
                      memo19.Text :=header_array[8,0]  ;
                end
                else
                begin
                       memo18.Text :=''; memo19.Text :='';
                      memo18.Visible:=false; memo19.Visible :=false;
                end;
                if  header_array[9,1]<>'' then
                begin
                    memo20.Text:= header_array[9,1]+':';
                     memo21.Text :=header_array[9,0]  ;
                end
                else
                begin
                      memo20.Text :=''; memo21.Text :='';
                      memo20.Visible:=false; memo21.Visible :=false;
                end;
                if  header_array[10,1]<>'' then
                begin
                     memo22.Text := header_array[10,1]+':' ;
                       memo23.Text :=header_array[10,0]  ;
                end
                else
                begin    memo22.Text :=''; memo23.Text :='';
                      memo22.Visible:=false; memo23.Visible :=false;
                end ;
                if  header_array[11,1]<>'' then
                begin
                     memo24.Text := header_array[11,1]+':' ;
                       memo25.Text :=header_array[11,0]  ;
                end
                else
                begin
                      memo24.Text :=''; memo25.Text :='';
                      memo24.Visible:=false; memo25.Visible :=false;
                end ;                //   ShowMessage('buttom ');
                  ////////////////////////buttom     27---36
                if  Trim(buttom_array[0,1])<>'' then
                begin
                   // ShowMessage('buttom is begin update ');
                   // showmessage(memo38.text) ;
                    memo38.Text:= Trim(buttom_array[0,1])+':';
                    memo39.Text :=Trim(buttom_array[0,0])  ;
                end
                else
                begin
                     // ShowMessage('buttom there is no recorder  ');
                       memo38.Text :=''; memo39.Text :='';
                       memo38.Visible:=false; memo39.Visible :=false;
                end;
                if  Trim(buttom_array[1,1])<>'' then
                begin
                 // ShowMessage('buttom is begin update ');
                    memo40.Text := Trim(buttom_array[1,1])+':';
                    memo41.Text :=Trim(buttom_array[1,0])  ;
                  //  showmessage(memo40.text) ;
                end
                else
                begin                  memo40.Text :=''; memo41.Text :='';
                      memo40.Visible:=false; memo41.Visible :=false;
                end;            if  Trim(buttom_array[2,1])<>'' then
                begin
                   // ShowMessage('buttom is begin update ');
                   // showmessage(memo42.text) ;
                    memo42.Text:= Trim(buttom_array[2,1])+':';
                    memo43.Text :=Trim(buttom_array[2,0])  ;
                end
                else
                begin
                     memo42.Text :=''; memo43.Text :='';
                      memo42.Visible:=false; memo43.Visible :=false;
                end;
    ////////////////////////////////////////////////////////////////////////////////
                //写时间,日期
                memo46.Text :='打印日期:';
                memo47.Text:=dateTimetostr(now);
                
                //update beizhu
                memo44.Text :='备注:';
                qry1.Close;
                qry1.SQL.Clear;
                qry1.SQL.Add('select beizhu_mincheng from beizhu ');
                qry1.Open;
                memo45.Text:=qry1.FieldByname('beizhu_mincheng').AsString  ;
     
                 //设置报表的标题居中。
                qry1.Close;
                qry1.SQL.Clear;
                qry1.SQL.Add('select yiyuanmingcheng from systemSetting ');
                qry1.Open;
                memo1.Text :=qry1.FieldByname('yiyuanmingcheng').AsString+'尿液检测报告单'  ;        
                  //设置报表的标题居中。            
                            memo1.width:=reporttitle1.Width  ;
                               IF Trim(FX)='1' THEN    //竖向
                 BEGIN
                    IF Length(qry1.FieldByname('yiyuanmingcheng').AsString)<=16 THEN
                   BEGIN
                        memo1.Left :=memo2.Left +memo2.Width/3;               END
                   else IF (Length(qry1.FieldByname('yiyuanmingcheng').AsString)>=16) and
                            (Length(qry1.FieldByname('yiyuanmingcheng').AsString)<=28) THEN
                   BEGIN
                        memo1.Left :=memo2.Left +memo2.Width/4;               END
                   ELSE IF Length(qry1.FieldByname('yiyuanmingcheng').AsString)>28  THEN
                   BEGIN
                         memo1.Left :=memo2.Left;
                   END;
                end  ELSE IF Trim(FX)='2' then   //横向
                begin
                                  memo1.width  := ReportTitle1.Width;                memo1.HAlign := haCenter;
                //  memo1.VAlign := VaCenter;
                     memo1.Left  := 0;            end;            
                           
      

  8.   

       ////////////下面是更新干化学项目表   报表的左边的项目。
                  sqlStr1:='select shunxu,id from ghx_data where id='+''''+id+'''';
                  qry1.Close;
                  qry1.SQL.Clear;
                  qry1.SQL.Add(sqlStr1);
                  qry1.Open;                sqlStr:='select ';                qry2.Close;
                    qry2.SQL.Clear;
                    qry2.SQL.Add('select * from printsort where which='+''''
                    +'middle'+''''+' and isprint=true order by num');
                    qry2.Open;                while not qry2.Eof do
                    begin
                       if  AnsiContainsText(qry1.FieldByname('shunxu').AsString,qry2.fieldBYname('ename').AsString) then
                         sqlStr:=sqlStr+qry2.fieldBYname('ename').AsString+',';
                         qry2.Next;                end;              //     去掉标点符号,
                  sqlStr:=MidStr(sqlStr,1,length(sqlStr)-1);
                 // ShowMessage('构造查询语句'+sqlstr);
                // 下面是取出ghx_data的数据,再填到临时表中去,再取出来填到表中去                 //  'M/C'替换为'[M/C]',因为'M/C'是不可以识别的字段每次
                       if AnsiContainsText(Trim(sqlStr),'M/C') then
                       begin
                           sqlStr :=AnsiReplaceText(sqlStr,'M/C','[M/C]')  ;                   end;
                       if AnsiContainsText(Trim(sqlStr),'C/C') then
                       begin
                           sqlStr :=AnsiReplaceText(sqlStr,'C/C','[C/C]')  ;                   end;                sqlStr:=sqlStr+' FROM ghx_data where id='+''''+id+'''';
                    MyDataModule .tbl2.close;               //删除jianyan_temp 的数据
                     qry1.Close;
                     qry1.SQL.Clear;
                     qry1.SQL.Add('delete from jianyan_temp where jianyan_mincheng is not null');
                     qry1.ExecSQL;                qry1.Close;
                    qry1.SQL.Clear;  //tempADOQuery
                    qry1.SQL.Add(sqlStr);
                    qry1.Open;