⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20000805003.htm

📁 C++Builder教学大全
💻 HTM
字号:
<HTML>

<HEAD>



<TITLE>QuickReport基本知识</TITLE>



<META content="MSHTML 5.00.2314.1000" name=GENERATOR>

</HEAD>

<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>



<div align="center">

  <table width="744" border="0" cellspacing="0" cellpadding="0" height="76">

    <tr> 

      <td> 

        <p align="center"><b><font size="3"><br>

          QuickReport基本知识</font></b> 

        <p><font color="#000000">一、 简单了解各控件功能</font> <font color="#000000"><br>

          &nbsp;&nbsp;&nbsp; 以下是各控件最简单的使用功能,其他功能依具体的实现而介绍。 <br>

          &nbsp;&nbsp;&nbsp; 1. TquickRep:带有坐标,作为其他报表控件(如TQRBand)的容器,它的Band属性可以自动添加各种类型的TQRBand. 

          <br>

          &nbsp;&nbsp;&nbsp; 2. TQRLabel:打印静态的文本(即不是根据数据库值来改变的),作用象Tlabel , Caption的内容就打印出来的内容。 

          <br>

          &nbsp;&nbsp;&nbsp; 3. TQRDBText:打印数据库字段值,一个值一行。作用象TDBText.把它的DataSet 

          , DataField分别赋予Table1,Company时,将打印Table1所指向的表的Company字段的内容。 <br>

          &nbsp;&nbsp;&nbsp; 4. TQRSysData:打印系统信息如时间,页码,报表头等。 <br>

          &nbsp;&nbsp;&nbsp; 5. TQRMemo:非常象TQRLabel,只是它可以打印多行,也是打印静态数据。 <br>

          &nbsp;&nbsp;&nbsp; 6. TQRRichText:打印RichText格式,能够连接到一个Form上的RichEdit控件并打印它的内容,不过必须是32位版本的。 

          <br>

          &nbsp;&nbsp;&nbsp; 7. TQRShape:打印方框、圆和垂直、水平线。 <br>

          &nbsp;&nbsp;&nbsp; 8. TQRImage:打印静态的图片,包括(BMP,WMF,ICON). <br>

          &nbsp;&nbsp;&nbsp; 9. TQRDBImage:从数据库接收图片。 <br>

          &nbsp;&nbsp;&nbsp; 10. TQRBand:用来确定报表的不同位置应该显示什么内容,它上面可以放控件(参见二)。 <br>

          &nbsp;&nbsp;&nbsp; 11.TQRGoups:Groups可以不限级别的组操作。当你连接了几个datasets到报表时可以通过Groups成组的对dataset进行操作。 

          </font> 

        <p><font color="#000000">二、 报表的控件摆放循序</font> 

        <p><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; 出现在所有页上的标题(PageHeader) 

          <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

          | <br>

          &nbsp;&nbsp;&nbsp;&nbsp; 标题(只有首页才有)(Title) <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

          | <br>

          &nbsp;&nbsp;&nbsp;&nbsp; 所有列的标题(ColumnHeader) <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

          | <br>

          &nbsp;&nbsp;&nbsp;&nbsp; 记录的内容,一个字段一列(Detail) <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

          | <br>

          &nbsp;&nbsp;&nbsp;&nbsp; 摘要(最后一页才有)(Summary) <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

          | <br>

          &nbsp;&nbsp;&nbsp;&nbsp; 出现在所有页上的页脚(PageFooter) <br>

          &nbsp; <br>

          &nbsp;&nbsp;&nbsp; 这些根据设置不同的Band(不是控件,一种类型而已,在其上面可以放其他控件)来定位。总共有六种Band。 

          </font> 

        <p><font color="#000000">三、 一个简单的例子</font> <font color="#000000"><br>

          &nbsp;&nbsp;&nbsp; 这个例子制作打印一张表的部分字段名及该字段数据内容的报表。 <br>

          &nbsp;&nbsp;&nbsp; 1. 建立一个新project <br>

          &nbsp;&nbsp;&nbsp; 2. 放一个TTable到Form上,DatabaseName设为BCDEMOS,TableName指向Customer表,Active设为true. 

          <br>

          &nbsp;&nbsp;&nbsp; 3. 放一个TquickRep控件在Form上,DataSet属性为Table1.(即要显示上边Table1所指向的表的内)。 

          <br>

          &nbsp;&nbsp;&nbsp; 4.展开TquickRep的Bands属性,设HasDetail为true,这时自动增加个detail 

          band(一个TQRBand控件,故也可以直接放一个TQRBand控件,BandType属性设为detail就行了)。 <br>

          &nbsp;&nbsp;&nbsp; 5.放一个TQRDBText控件在detail band上面,设DataSet指向Table1,DataField指向Company。第四步是设置在报表的什么位置显示什么类型的数据,而TQRDBText则具体实现。 

          <br>

          &nbsp;&nbsp;&nbsp; 6.选TquickRep控件,按右键,选择”Preview”预览,应该看到表Customer的字段Company的所有字段值。 

          <br>

          &nbsp;&nbsp;&nbsp; 到这一个简单的例子就OK了,程序实现预览及利用TQRuickRep自带的打印功能只须在Form中加一个按钮,它的OnClick事件为:QuickRep1-&gt;Preview(); 

          </font> 

        <p><font color="#000000">四、 一个使用TQRGoups、TQRExpr控件的报表</font> <font color="#000000"><br>

          &nbsp;&nbsp;&nbsp; 该报表先列出州名,接着列出该州的所有公司及公司总数,一个州列完后空一行(groups中断),列出新的州名,接着列新州下的所有公司,没有填州名的公司统一列在Unknown 

          state下面。 <br>

          &nbsp;&nbsp;&nbsp; 1. 建立一个新project。 <br>

          &nbsp;&nbsp;&nbsp; 2. 放一个Tquery在Tquickrep上,其SQL属性为:select * from customer 

          order by State,Company;(即根据州、公司排序),DatabaseName为BCDMome,Active为true. 

          <br>

          &nbsp;&nbsp;&nbsp; 3. 放一个TquickRep控件在Form1上,DataSet为Tquery1. <br>

          &nbsp;&nbsp;&nbsp; 4. 放一个TQRGroups控件在TquickRep上,这时默认为group header。(任何时候当group中断或更高级别的group中断,这个header都将打印出来,如果有表达式,根据表达式的值显示内容。)接着添加一个group 

          footer band,添加时,放一个TQRBand控件在报表上,连接TQRGroups的FooterBand属性到这个QRBand,这时这个新建的TQRBand就成为Group 

          Footer. (TQRGroup的一个重要特性是表达式,任何时候当表达式的值变时Group都将中断,如表达式是按省列出城市名,当前列出广东省,当属于该省的城市列完后,表达式值改变,这时Group中断,接着显示其他省的城市名。)TQRGroups的Expression属性设为Query1.State(根据不同的州来中断)。 

          <br>

          &nbsp;&nbsp;&nbsp; 5. 放一个TQRBand控件在报表上,BandType为rbDetail. <br>

          &nbsp;&nbsp;&nbsp; 6.放一个TQRExpr控件在group header上面,其Expression属性为:if(State&lt;&gt;’’,State,’Unknown 

          state’),即如果公司的州没填,就归入Unknown state,否则归入State. <br>

          &nbsp;&nbsp;&nbsp; 7.放三个TQRDBText在Detail上,他们的DataSet都指向Query1,DataField分别指向Company,Contact,Phone. 

          <br>

          &nbsp;&nbsp;&nbsp; 8.在放一个TQRExpr控件在group Footer上面,Expression为’Customers 

          in’+State+’:’+Str(Count) 作用是在每个州的公司列完后显示该州总共有多少个公司。 <br>

          &nbsp;&nbsp;&nbsp; 9.按右键选预览,应该看到不同的州名及其公司和公司公司总数。 </font> 

        <p><font color="#000000">五、QuickReport 条件式列印</font> <font color="#000000"><br>

          &nbsp;&nbsp;&nbsp; 可以直接在 TQuickReport 的 OnFilter 事件中写明条件判断,OnFilter事件的引数中有一个以 

          var 宣告的 PrintRecord 布林型态变数,将这个变数设为 True(预设值), 该笔记录便会印出;反之, 设为False,就不印出这笔记录. 

          <br>

          &nbsp;&nbsp;&nbsp;&nbsp; procedure TForm1.QuickReport1Filter(var PrintRecord: 

          Boolean); <br>

          &nbsp;&nbsp;&nbsp;&nbsp; begin <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintRecord := False; <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if YourTable.FieldByName('WantedField').AsInteger 

          &lt;= 100 then <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit; <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if YourTable.FieldByName('WantedField').AsInteger 

          &gt;= 150 then <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit; <br>

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintRecord := True; </font> </p>

        </td>

    </tr>

  </table>

 

</div>

</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -