本书前面两章讨论的内容应该可以让读者顺利地使用dbExpress来开发基本的数据库应用程序了。但是对于实际运行的数据库应用程序来说,程序员仍然需要许多额外的技巧来开发真正能够使用的数据库应用系统。例如排序、查寻数据、如何处理错误、数据库的事务管理等。
从本章开始,我们将会一一地介绍这些高级的dbExpress技巧。读者在掌握了这些经常需要使用的技巧之后,才能够轻松地了解稍后章节介绍的深入概念和技术。本章讨论的内容是属于比较容易上手的dbExpress技巧,下一章将会详细地讨论如何使用dbExpress来查寻数据,在读者阅读完本章和下一章之后,将能够真正掌握dbExpress来处理数据。
3.1 排序数据
对数据进行排序是许多数据库应用程序都需要的功能,例如对客户的身份证字号排序,或是对订单金额的排序,或是对传票日期的排序等。这些是许多数据库应用程序都经常需要使用的。除了简单的排序之外,许多应用也需要做进一步的排序。例如在应用程序对客户的身份证字号进行排序之后,又希望能够根据这个主排序再对客户名称进行子排序等。
当然,由于dbExpress是使用SQL语句向后端数据来源取得数据的,因此,对于刚才提到的要求都可以使用SQL语句的 Order By和Group By等的功能来做到,非常地简单。但是对于dbExpress来说,要排序的数据可能已经在客户端的TSimpleDataSet/ TClientDataSet的Data特性值之中,如果使用SQL语句来重新排序,那么就等于浪费了已经储存在客户端的数据了。而且对于许多排序的应用而言,可能只需要就现有的数据排序,而不是重新从数据来源中再次取得数据。对于这种应用要如何使用dbExpress来完成呢?
本节讨论的内容就在于说明如何使用dbExpress来进行排序的工作。通过讨论各种排序的方法,读者可以了解dbExpress如何处理排序,并且根据自己的需求来使用比较合适的方法。
在开始讨论之前,先让我们看看排列范例使用的数据模块。图3-1是本节范例应用程序使用的数据模块,这个数据模块使用了TSimpleDataSet控件、TSQLDataSet、TDataSetProvider和TClientDataSet控件。在稍后的章节中将会一一地讨论和使用到。其中的scdsDemo和sdsDemo都是使用select * from BIOLIFE从BIOLIFE数据表中选取数据并且进行排序的工作。

图3-1 本章使用的范例数据模块
图3-2则是范例应用程序使用的主窗体。这个范例应用程序将使用数种方法来进行排序的工作,并且会比较各种排序方法的异同和优缺点。

图3-2 范例应用程序的主窗体
现在我们就可以使用各种排序方式来讨论如何在应用程序中实现排序的功能。






