[返回]
中国计算机报1999年第71期

Delphi使用二则

李 海

  阅读了贵报第59期《如何获得count值》一文和第63期《为Delphi 3.0中数据库报表加上网格线》一文,认为两篇文章都有各自的见解。在此与大家谈谈笔者的办法。


  一、获取count值


  Delphi与Power Builder一样,都提供了SQL语言,来实现对数据库的访问,仅仅是实现语句的长短不同。Delphi是在Pascal语言基础之上发展起来的,它提供了强大的功能,各种控件提供了丰富的属性和方法。我们应该充分利用这些属性和方法。要想知道某数据库的记录数,用一个简单的语句即可完成。例如求Delphi的DBDemos数据库中表day.db的记录总数,假设Table控件已加到Form上,具体实现语句为:

  Edit1.text:=inttostr(Table1.recordcount);

  如果是要知道符合某条件的记录数,也非常方便,具体实现语句为:

  Edit1.text:=inttostr(Query1.recordcount);

  Recordcount属性用来表示为数据集相连的表的记录总数。

  还有一种通用的方法,具体实现语句为:

  VAR i:integer;

  Begin

  i:=0;

  Table1.open;

  Table1.First;

  While not Table1.eof do

  BEG1N

   i:=i+1;

   Table1.next;

  End;

  Edit1.text:=inttostr(i);

  如果使用了TQuery控件,具体步骤如下:

  Query1.close;

  Query1.SQl.clear;

  query1.SQL.add (′ ...... ′);

  //某查询语句

  Query1.open

  Query1.first;

  i:=0;

  While not Query1.eof do

  BEG1N

   i:=i+1;

   Query1.next;

  EnD

  Edit1.text:=Inttostr(i);


  二、 给数据库报表加上网格线


  Delphi 1.0和2.0版捆绑了Reportsmith报表制作工具,实现报表打印。如果打印一个很简单的报表,在程序中启动Reportsmith,就显得比较麻烦。对于比较简单的报表,我们一般按本报63期相应文章的方法实现报表打印。例如,用Delphi 1.0编写的商业财务软件《保灵商务营销管理系统》中报表打印就是自主开发的,整个系统显得短小、整体性比较好。Delphi 3.0和Delphi 4.0就不再捆绑Reportsmith,但增加了QReport组中报表控件的功能,使得报表制作更加灵活。给报表加上网格线就太容易了。在QReport组件中用来显示数据的TQRExpr。它就有一个Frame属性, 按下 F11键,在“Object inspect”中,修改“Frame”属性,它提供7个子属性,其功能如下:

color 显示网格线颜色
style 报表网格线的形状,如实线、虚线等
width 网格线的宽度
drawbottom 网格的底部
drawlefl 网格的左边
drawright 网格的右边
drawtop 网格的底部


  在制做报表前,最好在数据库表中添加几个记录,然后根据需要修改这些属性,使用报表的预览功能在设计期间看修改效果,不满意可立即修改。