1.问题的提出
  我有大量数据需要取回,并用它们填充一个列表框或组合框。但这样也会出现问题的提出,结果集里取回的信息越多,填充控件所需的时间也就越长。我接到大量用户投诉,都抱怨这种处理花的时间太长。我现在不想在查询的基础上从文件管理软件数据库取回符合标准的所有记录,怎样限制结果集里返回的记录数?另外,在用户需要的时候,怎样获得剩余的记录?
  2.实现技术
  取回数据的时候,许多开发者都忽略了真正需要多少数据这一因素。使用像列表框或组合框这样的控件时,用户在给定时刻能看到的控件实际是有限的。例如,在一个预测系统里,我们或许有一万家以上不同的单位需要观看。为显示这些信息,一个办法是按照费用组对这些单位进行组织,并将信息分隔到两个或更多的列表框里。
  为获得控制数量的信息,另一个方法是利用游标(或记录指针),以便用相对和绝对定位实现技术在结果集里上下移动。在这儿,“相对定位”是指将记录指针直接移至一个特定的记录编号。例如,在一个数据列表里,我们共有5000行信息,记录指针当前正定位于编号为2500的记录。在我们的表单里,利用特定的命令按钮,可向前移动或向后移动100行。这是相对定位的一个例子。同样在这个表单里,可利用命令按钮到达一条给定编号的记录。例如,单机这个按钮后,可输入3500这个值,并按下回车键。随后,记录指针会直接移至记录3500,并显示那个记录行的信息。这是绝对定位的一个例子。
  如取回的数据量很大,比如超过1000行,那么毋需将它们同时显示出来。比如,第一次可只取回其中前100行,并用列表框显示出来。用户在数据间滚动查看的时候,一旦抵达第100行,程序就开始取回接下去的100行。以此类推。
  3.实现步骤
  打开并运行CURSORS.VBP。这时,屏幕上会出现表单。表单载入的时候,会创建一个rdoResultset对象。列表框内将显示出旅馆里居住的客人清单。这时,我们不必同时显示出全部客人,而是只显示头5个人。如欲显示更多的客人,可单击相应的命令按钮,显示出接下去的5个人。以此类推。如果列表框已列完了rdoResultset内的所有数据行,就会显示一个消息框,提示用户已取回了所有记录;同时,刚才提到的命令按钮也会屏蔽起来不能继续使用。
  (1)创建一个新项目,把它命名为CURSORS.VBP。打开Forml,将其命名为fMain,并把它另存为FMAIN.FRM。
  (2)将下述代码添加到fMain的“常规声明”区域。第一个变量定义了来自SQL语句的行数,使其能在整个表单内均能使用,接下去的变量用于构建一个二维数组,其中将包含客人的名字。最后一个变量用于定义rdoResultset。
  (3)在Form-Load事件里插入下述代码。表单载入的时候,会创建rdoResultset。SQL语句不是用常规的形式构建的,它在此使用的是一个函数的形式。我们将在后面的实现步骤里对这个问题的提出进行解释。创建好rdoResultset后,将取回第一套5个数据行,并调用FetchRows子例程,将这些记录显示出啦。
  (4)在Form-Unload事件里插入下述代码。表单卸载的时候,在Form-Load里创建的对RDO结果集的引用将会关闭,并设为Nothing。
  (5)在表单模块里添加下面这个BuildSQL函数。该函数将返回一个字符串值。由于我们不知道查询到底有多少个select项目,所以该函数将通过ParamArray接收自变量。该函数有3个目的。首先,它要设定准备在SQL语句里使用多少个select项目。整个数字将保存到模块变量nColumns里。其次,它要将传递的自变量(参数)传递到一个接近的字符串里,以便在SQL语句里使用。第三,由于SQL语句是动态构件的,所以它还要从SQL语句里删去逗号。如果语句的最后一个逗号被保留下来,就会得到错误的结果。

关于TeamDoc软件:

TeamDoc是基于服务器/客户端架构的轻量级文件管理软件。TeamDoc将文件集中加密存储在您单位自己的服务器中,员工使用TeamDoc客户端访问服务器,从而获得与自己权限相关的权限:登入后与“我的电脑”界面类似,可以看到自己该看的文件,编辑自己能编辑的文档,对于能看到的文件,还可以细分文档权限,进而做到能看不能拷,能看不能截屏等功能,多种权限灵活设置,在线协同编辑、全文搜索、日志与版本追踪,快速构建企业文档库。告别假大空,我们提供值得您选择的、易用的、可用的文档管理软件。现在就访问TeamDoc首页

TeamDoc软件界面(点击可放大)

版权所有:南京网亚计算机有限公司,本文链接地址: 控制文件管理软件显示的行数