本帖最后由 smq289569259 于 2009-12-12 16:17:06 编辑

解决方案 »

  1.   

    这个比较简单,方法如下:思路:你现在使用2个窗体,窗体1就是主窗体,主要用来数据浏览,窗体2主要是带Edit框的编辑窗体,当双击窗体1的dbgrid的一条记录后,将窗体1的数据集传到窗体2上,窗体1和窗体2就可以共享数据了,也就是说编辑窗体2的数据就等于编辑窗体1的数据。具体:
      1、窗体2上放几个DataSource组件,具体数字和窗体1的数据集数字相等,窗体2上的编辑框的DataSource连接本窗体上放的Datasource。2、当双击窗体1上的dbgrid时,把窗体里的数据集传给窗体2的datasource;代码如下:  with TForm2.create(nil) do
      begin
        DataSource1.DataSet := adoquery1;
        DataSource2.DataSet := adoquery2;
        ...  end;3、如果窗体2上有保存按钮,则代码如下:   if DataSource1.DataSet.State in [dsEdit, dsInsert] then
        DataSource1.DataSet.post;
      ...以此类推就ok啦!
      

  2.   

    补充
     with TForm2.create(nil) do 
      begin 
        DataSource1.DataSet := adoquery1; 
        DataSource2.DataSet := adoquery2; 
        ... 
        ShowModal;
        Free;
      end; 
      

  3.   

    谢谢,基本上都解决了,还差一个问题!我双击DBGrid1其中一条数据之后进入了窗2,但是窗体2里面的4个DBGrid2~5控件显示的是所有的数据,而不是与我点击进去那条数据所关联的数据,数据库我也做了关联了啊,在主表删除数据的时候从表的数据也会跟着删除,从表删除数据主表则不动!但为什么从表的DBGrid显示的时候不能只显示与主表有关联的数据?而是显示全部数据呢?(我想实现的是主表一条数据关联从表多条数据并在DBGrid显示出来,多余的隐藏起来)
      

  4.   

    之前可能说得不太清楚,我再整理下思路!有一个主表,四个从表,关键字是“ZYDID” 
    其中主表一条数据对应从表的多条数据 怎样可以实现选择连接主表DBGrid1显示的任何一条数据,点击修改按钮时,同时其它四个DBGrid2~5所显示的数据是与DBGrid1所选数据关连的数据? 所有的东西基本都弄好了,就差DBGrid显示问题,每次点击主表所连接的DBGrid1数据修改按钮后,其它连接从表的四个DBGrid2~5所显示的数据都是其对应数据表内全部的数据,而不是只显示与主表关联的数据