在编写数据库系统的时候,少不了使用 ADODataSet 这个组件。在表不多的情况下,我们可以为每个表建立一个 ADODataSet,
然后通过 DBGrid 等数据显示组件来操作她。

    但是,如果表的数量很多,比如多达几十个表的时候,特别是表的数量动态变化的时候,我们就不太适合为每个表建立对应的 ADODataSet 了。

    这时,通过 ADODataSet 的复用,可以使问题大大简化,减少大量的笨拙的代码,使程序清晰而优美。甚至使一些无法编程的问题得到完美解决。

    具体做法:只在窗体上拖放一个 ADODataSet 组件,然后在连接不同的表的事件中,使用以下类似代码即可:

    ADODataSet1.Close;
    ADODataSet1.CommandText := ‘Select * from <不同的表名>’;
    ADODataSet1.Parameters.Clear;
    ADODataSet1.Parameters.ParseSQL(ADODataSet.CommandText, true);
    ADODataSet1.Open;

    以上代码中,语句 ADODataSet1.Parameters.ParseSQL(ADODataSet.CommandText, true) 是关键代码。通过 ParseSQL 方法解构 ADODataSet.CommandText 的 SQL 语句,建立 ADODataSet1 新的对象参数,从而使新的查询生效。

    附:Delphi 文档中对 ParseSQL 方法的描述:

    ParseSQL method (TParameters):

    Parses an SQL statement for parameters and TParameter objects.

    Delphi syntax:

    function ParseSQL(SQL: String; DoCreate: Boolean): String;

    Description

    Call ParseSQL to parse an SQL statement for parameters. For each parameter found in the SQL statement, a TParameter object is added to the calling TParameters object using the name of the parameter in the SQL statement.

    SQL contains the SQL statement to parse.

    DoCreate indicates whether to clear all existing parameter definitions before parsing the SQL statement.

    ParseSQL returns a parsed version of the SQL statement specified in the SQL parameter.

    ADOQuery1.Parameters.ParseSQL(ADOQuery1.Text, True);