你那个老板的要求相当正常,其实数据库管理系统就是专为这等应用而生的。问题是你自己实现不来,拿着宝剑当大刀使,套路完全不一样。别说你是自学,就我观察,现在很多科班出身的人,可以说是不会操纵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 编辑 ]
这不是数据库领域特有的现象,其实是普遍性的。学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 编辑 ]
授人以渔,不授人以鱼。