| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 865 人关注过本帖
标题:查询条件的问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你那个老板的要求相当正常,其实数据库管理系统就是专为这等应用而生的。问题是你自己实现不来,拿着宝剑当大刀使,套路完全不一样。别说你是自学,就我观察,现在很多科班出身的人,可以说是不会操纵VFP数据库的,他们只当SQL数据库用,而两种数据库的操作方式是不同路数的,应用于不同场合,在VFP特长的场合舍弃专长不用改用别的场合的指令,叫做舍近就远,非聪明之举。然而事实上不是他们不聪明,而是历来就没学过正宗的VFP程序设计。没有DOS时代dBASE、FoxPro程序基础的当代人,是很难精通VFP的。

这不是数据库领域特有的现象,其实是普遍性的。学C、ASP、VB、Java等的人,对DOS和Windows、Unix内核机制不熟悉,就只能在花巧的界面上打转,无法深入数据领域,对语言功能的认识,是只知其然而不知其所以然,一旦没有现成的工具,就手足无措,却没意识到解决办法其实早就在自己熟悉的那些指令上,不过是不懂运用而已。

就你这个问题而言,解决的办法本来很简单,每一条语句其实都是你早就学过的:

1.构建数据表之时就应对这个日期字段建立索引,VFP的索引文件是复合索引文件,可以同时储存无限个不同索引表达式的索引;如果没有在建立数据表时做索引,也可以在需要时建立独立的临时索引。建立索引的指令INDEX ON是你学过的,比如你的这个字段名是F_DATE,那么INDEX ON F_DATE TO Temp_Index,就可以建立一个临时的独立索引文件Temp_Index.IDX,它以F_DATE的值为升序排序,日期最前的记录是第一条,最后的记录是最后一条。

2.查询时,将当前索引切换到Temp_Index上,即SET ORDER TO Temp_Index,此时,数据表中的记录逻辑顺序就是按F_DATE升序排列的,只要GOTO BOTTOM,就到达最后一条记录,那必然是日期最后的记录。现在,查询就完成了。

整个过程,只有三条简单的指令,全部是你学过的。在时间耗用方面,只有第一条建立索引文件花费的时间较长,但如果你一开始构建数据表结构时就建立了这个索引表达式,那么根本就不用第一条指令。后面两条指令,时间是瞬间立现的,1毫秒都不用。你自己不妨实验一下,用上面那些SQL指令,要多少时间?如果你知道普通程序的查询算法,就可以知道那些动作要做什么、耗用多少资源。正因为你们没有这种低级程序算法的基础,所以才会以为一条SQL语句比三条VFP指令快。

见到不少人总问,不想编程要怎么做才能达到目的。我就觉得纳闷,你不想编程,学VFP、VB、C之类编程语言干什么?直接用Excel好啦。编程语言就是为了解决无法一步到达的需求的!也不想想Excel最具特色的东西是什么,就是它提供了VBA这种编程功能!整个Office的成功,是因为都是可编程做二次开发的软件,而且全部软件在内部是可以通过编程联系构建为整体解决方案的。

[ 本帖最后由 TonyDeng 于 2011-8-22 01:05 编辑 ]

授人以渔,不授人以鱼。
2011-08-22 00:57
ilikeflash
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:148
专家分:186
注 册:2011-4-6
收藏
得分:0 
多谢TonyDeng,每次看TonyDeng的帖子都会受益匪浅,以后还要多指点哈。
2011-08-22 19:31
快速回复:查询条件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061505 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved