在编写数据库系统的时候,少不了使用 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);    “十万个为什么”电脑学习网原创文档
    转载请注明出处:http://www.why100000.com

解决方案 »

  1.   

    这样的话,在2次使用这个ADODataSet的时候,1次会不会关闭
    还有应如何区分是哪个DataSet这和ADOQuery的
    close;
    sql.clear;
    sql.add();
    open;
    区别在哪里,能否说明一下
    请LZ赐教
      

  2.   

    是这样,本问题只是提供一个使用  ADODataSet 查询和更新记录时的一个情形。
    你问区别,那就是ADOQuery和ADODataSet 的区别。
    如果在某种情况下必须使用 ADODataSet,这里的方法就有用了。
      

  3.   

    另:这种 ADODataSet 其实最适合做临时变量使用,是无法同时使用的。因为不存在同时使用的问题,所以也就不存在关闭的问题,在程序结束的适合就一同关闭了。当然如果这个 ADODataSet 是我们用代码声明的实例,在程序结束的适合我们还要用代码关闭它。