我现在遇到这样的问题:
我用了3个form:分别为form1,form2,form3以及一个datamodule,datamodule中放了一个adotable,adoconection,adotable,datasource.我将adoconnection及adotable的连接写成程序写到Project中。
我在form1中放了一个button,一个dbgrid1。在form1的onshow中写入:
    datamodule1.adotable.close;
    datamodule1.adotable.tablename:='表1';
    datamodule1.adotable.open;
    datamodule1.datasource.dataset:=datamodule1.adotable;
    dbgrid.DataSource:=datamodule1.adotable;
然后点击button进入form2:form2中放了button1,button2。edit1(edit1是用来插入数据,我使用的是adoquery动态插入,在button2中,这里就不说了)。点击button1进入form3,在form3中放一button,一个dbgrid。在form3的onshow中写入
    datamodule1.adotable.close;
    datamodule1.adotable.tablename:='表2';
    datamodule1.adotable.open;
    datamodule1.datasource.dataset:=datamodule1.adotable;
    dbgrid.DataSource:=datamodule1.adotable;
我现在的问题出来了。
当我运行时,form1的dbgrid上显示表1的内容。当进入到form3后,form3上的dbgrid显示表2的内容,而form1上也显示表2的内容,当我关闭form3(form1还在)后,form1上还留着表2的内容。
我想问问大家该怎么解决,我只能用一个adotable。
谢谢!

解决方案 »

  1.   

    如果简单修改的话,将你上面两段代码分别放在Form1和Form3.OnActive而不是OnShow中即可。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    OnActivate————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    这个自然是这样子啦!你的 form1 和 form3 的 DBGrid 引用的是同一个 DataSource 组件嘛!因为你的 DataModule 是同一个实例,并没有为每个 form 创建单独的实例。一个解决方法是放置两个 ADOTable 和 DataSource 组件
    另一个方法是,为每个 form 创建自己的 DataModule 实例