DBGrid里面加载数据并修改不更新后台数据库
最近做个小系统,一直找不到存储查询数据的办法,就只能用最差方法,建立临时表,不过写代码写得要吐呀,找了半天找到TFDMemTable控件,可以存储table数据进去,还可以增加字段,修改数据极大的方便了,在程序开发过程操作查询数据然后再选择过来的操作。
一、TFDMemTable数据的插入
DBGrid属性里面要设置TDataSource,列名设置跟其他的一致
TDataSource的DateSet属性里面选择FDMemTable1
先查询数据,要添加字段的,可以再SQL上面添加
Open后DBGrid就显示数据了
把数据插入到TFDMemTable
FDQuery1.Close;
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add(‘select False as Is_Sub,* from t_Product’);
FDQuery1.Open;
把数据插入到TFDMemTable
FDMemTable1.CopyDataSet(FDQuery1,[coStructure, coRestart, coAppend]);
Open后DBGrid就显示数据了
FDMemTable1.Open;
二、TFDMemTable数据的查询
FDMemTable1.Filtered := False;
FDMemTable1.Filter:='Product_ID='+Edit1.Text;
FDMemTable1.Filtered := True;
FDMemTable1.Open;
条件可多个条件拼接
三、抓取选择的数据插入到实表页面
i:=1;
FDMemTable1.Filtered := False;
FDMemTable1.Filter:=’ Is_Sub=1’;
FDMemTable1.Filtered := True;
FDMemTable1.open;
FDMemTable1.First;
while not FDMemTable1.Eof do
begin
if FDMemTable1.FieldByName(‘Is_Sub’).AsString=‘1’ then
begin
FDQuery2.Close;
FDQuery2.SQL.Clear;
FDQuery2.SQL.Add(‘insert into t_Order_Item(Order_Item_No,Order_No,Product_ID) values(:Order_Item_No,:Order_No,:Product_ID)’);
FDQuery2.ParamByName(‘Order_Item_No’).Value:=i;
FDQuery2.ParamByName(‘Order_No’).Value:=Form6D.Edit1.Text;
FDQuery2.ParamByName(‘Product_ID’).Value:=FDMemTable1.FieldByName(‘Product_ID’).AsInteger;
FDQuery2.ExecSQL;
i:=i+1;
end;
FDMemTable1.Next;
end;
记得插入前POST一下
页面效果