这个比较简单,方法如下:思路:你现在使用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啦!
补充 with TForm2.create(nil) do begin DataSource1.DataSet := adoquery1; DataSource2.DataSet := adoquery2; ... ShowModal; Free; end;
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啦!
with TForm2.create(nil) do
begin
DataSource1.DataSet := adoquery1;
DataSource2.DataSet := adoquery2;
...
ShowModal;
Free;
end;
其中主表一条数据对应从表的多条数据 怎样可以实现选择连接主表DBGrid1显示的任何一条数据,点击修改按钮时,同时其它四个DBGrid2~5所显示的数据是与DBGrid1所选数据关连的数据? 所有的东西基本都弄好了,就差DBGrid显示问题,每次点击主表所连接的DBGrid1数据修改按钮后,其它连接从表的四个DBGrid2~5所显示的数据都是其对应数据表内全部的数据,而不是只显示与主表关联的数据