主键,自增字段更新,急。(100分)

  • 主题发起人 主题发起人 zhucp
  • 开始时间 开始时间
Z

zhucp

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库为SQL Server 2000,数据表名为 tb1 字段为 ID,Name,Sex,CardNumber (注意ID是主键,也是自增字段)
TADOQuery - > TDataSetProvider 服务端
ClientDataSet.CommandText := 'select top 0 * from tb1',然后打开
我插入记录
ClientDataSet.Insert;
ClientDataSet.FieldByName('Name').AsString := '姓名';
ClinetDataSet.FieldByName('Sex').AsString := '男';
ClientDataSet.FieldByName('CardNumber').AsString := '001';
ClientDataSet.Post;
ClientDataSet.ApplyUpdates(-1);
插入成功
然后
ClientDataSet.Edit
ClientDataSet.FieldByName('CardNumber').AsString := '0001';
ClientDataSet.Post;
ClientDataSet.ApplyUpdates(-1);
修改不成功 这是为什么
//--------------------------------------
我试着插入记录后, ClientDataSet.Refresh;
之后我的ClientDataSet中的数据为空了。

对于有主键,有自增字段,及插入后,可能会修改的,在三层结构中有没有好的办法???
 
先試試前一部分是否有問題﹐再試第二部分
 
这样不行.你EDIT时,没有确定主键ID,会出错试试这个
.将DataSetProvider的ALLOWCOMMANDTEXT设为TRUE.
INSERT用SQL语句.
CLIENTDATASET.COMMANDTEXT:='*************'
UPDATE时.
也用SQL语句.
UPDATE......SET ***=*** WHERE ID=***
你只要知道ID是什么就OK.
这个我弄过N次了
 
hehe,我的问题也很类似。我的表的主键也是自增ID.再加完纪录后,要添加子表纪录。
因此也无法得到新添加的纪录的主键。怎么办???
 
关键是top 0,新增的记录没在Provider,故修改失败
在新增之后要重新Query.
将top 0 改为top 1 或where ...即可修改
已测试通过
 
嘿嘿,原来不只我一个人在受苦受难!
你可以联系我,commander@sina.com
我曾经为此而饱受折磨。
不过,分可不可以给多一些??[:D][:D][:D]
 
双击DataSet(如一个TClientDataSet),增加所有字段,然后
选择自增字段,把 AutoGenerateValue 属性设为 arAutoInc
 
我插入记录
ClientDataSet.Insert;
ClientDataSet.FieldByName('Name').AsString := '姓名';
ClinetDataSet.FieldByName('Sex').AsString := '男';
ClientDataSet.FieldByName('CardNumber').AsString := '001';
ClientDataSet.Post;
ClientDataSet.ApplyUpdates(-1);
插入成功
[red]如果存在默认值、自增量字段等,必须:
ClientDataSet.Close;
ClientDataSet.Open;
原因:这时后台的数据与前台的数据不一致。[/red]
然后
ClientDataSet.Edit
ClientDataSet.FieldByName('CardNumber').AsString := '0001';
ClientDataSet.Post;
ClientDataSet.ApplyUpdates(-1);
修改不成功 这是为什么
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部