Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1696789
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: 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两个方法就够。

阅读(5908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~