有一个表TABLE1字段有ID MC
还有一表TABLE2 字段有ID MC,这两表结构相同,
DBGRID1连着TABLE1,DBGRID2连着TABLE2,现在窗体上是这样的DBGRID1 添加BUTTON DBGRID2
删除BUTTON
我想点“添加BUTTON ”就把 DBGRID1 中选中的一行或多行添加到DBGRID2中也就是从TABLE1添加到TABLE2
点“删除BUTTON ”就把 DBGRID2中选中的一行或多行删掉,也是从TABLE2中删掉
请问以上怎实现啊
还有一表TABLE2 字段有ID MC,这两表结构相同,
DBGRID1连着TABLE1,DBGRID2连着TABLE2,现在窗体上是这样的DBGRID1 添加BUTTON DBGRID2
删除BUTTON
我想点“添加BUTTON ”就把 DBGRID1 中选中的一行或多行添加到DBGRID2中也就是从TABLE1添加到TABLE2
点“删除BUTTON ”就把 DBGRID2中选中的一行或多行删掉,也是从TABLE2中删掉
请问以上怎实现啊
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
insert : TADOQuery;
begin
ADOQuery1.First;
insert:=TADOQuery.Create(self);
insert.Connection:=ADOConnection1;
while not ADOQuery1.Eof do
begin
if DBGrid1.SelectedRows.CurrentRowSelected then
begin
insert.Close;
insert.SQL.Clear;
insert.SQL.Add('INSERT INTO TABLE2 (id,mc)VALUES (:id,:mc)');
insert.Parameters.ParamByName('id').Value:=DBGrid1.DataSource.DataSet.fieldbyname('id').AsString;
insert.Parameters.ParamByName('mc').Value:=DBGrid1.DataSource.DataSet.fieldbyname('mc').AsString;
insert.ExecSQL;
end;
ADOQuery1.Next;
end;
ADOQuery2.Close;
ADOQuery2.Open;
end;procedure TForm1.Button2Click(Sender: TObject);
var
insert : TADOQuery;
Listid : TStringList;
i : integer;
begin
ADOQuery1.First;
insert:=TADOQuery.Create(self);
insert.Connection:=ADOConnection1;
Listid:=TStringList.Create;
Listid.Clear;
while not ADOQuery2.Eof do
begin
if DBGrid2.SelectedRows.CurrentRowSelected then
begin
Listid.Add(DBGrid1.DataSource.DataSet.fieldbyname('id').AsString);
end;
ADOQuery2.Next;
end; for i:=0 to Listid.Count-1 do
begin
insert.Close;
insert.SQL.Clear;
insert.SQL.Add('DELETE FROM TABLE1 where id=:id');
insert.Parameters.ParamByName('id').Value:=Listid[i];
insert.ExecSQL; insert.Close;
insert.SQL.Clear;
insert.SQL.Add('DELETE FROM TABLE2 where id=:id');
insert.Parameters.ParamByName('id').Value:=Listid[i];
insert.ExecSQL; end; ADOQuery1.Close;
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.Open;
end;end.
Button2 删除
DBGrid1->DataSource1->ADOQuery1
DBGrid2->DataSource2->ADOQuery2
先把原GRID对应的RECORDSET进行FILTER,过滤出选种的
然后通过RECORDSET的CLONE来实现