分类: WINDOWS
2012-07-08 16:22:49
这时说的是当不使用感知组件时,直接在代码中修改SimpleDataSet的某个字段的值,在网上也找到有人说先用SimpleDataSet.Edit,再用SimpleDataSet.Post方法,最后用SimpleDataSet.ApplyUpdates方法(测试不行),可是自己用每次都在SimpleDataSet.Post方法的时候出错.后来运行了下面这个程序才知道原来只要现两步:1 SimpleDataSet.Edit进行赋值,再调用2 SimpleDataSet.ApplyUpdates方法就好了.
数据库中有张表t1( id int primary key, name char(4));
程序加入各组件,如下各组件属性设置
名称 类型 属性 值
SQLConnection1 TSQLConnection ....设置好连接到数据库,可看我其它的日志.DelphidbExpress连接数据库
Connected true
SimpleDataSet1 TSimpleDataSet Connection SQLConnection1
DataSource1 TDataSource DataSet SimpleDataSet1
DBGrid1 TDBGrid DataSource DataSource1
ClientDataSet1 TClientDataSet
DataSource2 TDataSource DataSet ClientDataSet1
DBGrid2 TDBGrid DataSource DataSource2
然后加入四个按钮btSelect、btEdit、btPost、btApplyUpdates代码分别如下
//btSelect
procedure TForm1.btSelectClick(Sender: TObject);
begin
SimpleDataSet1.Active:=false;
SimpleDataSet1.DataSet.CommandText:=' select * from t1 where id=:id';
SimpleDataSet1.DataSet.ParamByName('id').AsInteger:=12;
SimpleDataSet1.Active:=true;
end;
//btEdit
procedure TForm1.btEditClick(Sender: TObject);
begin
SimpleDataSet1.Edit;
SimpleDataSet1.FieldByName('id').AsInteger:=22;
ClientDataSet1.Data:=SimpleDataSet1.Delta;//通过这条语句,我们可以看到我们对SimpleDataSet1的改变,显示在第DBGrid2中
end;
//btPost
procedure TForm1.btPostClick(Sender: TObject);
begin
SimpleDataSet1.Post; //按这个按钮会出错
end;
//btAppyUpdates
procedure TForm1.btApplyUpdatesClick(Sender: TObject);
begin
SimpleDataSet1.ApplyUpdates(0);
SimpleDataSet1.Refresh;
end;
运行,并点击Select按钮和Edit按钮就可以看到SimpleDataSet中Data和Delta的变化了,SimpleDataSet的Data也已经被修改了,不需要SimpldeDataSet.Post了,按Post按钮调用simpdedataset.Post反而会出错。只要再点击ApplyUpdate按钮就更新到数据库了。
所以总结就是:调用SimpleDataSet的Edit和ApplyUpdates两个方法就够。