更新主键的一个问题

jianlinlong 2004-11-15 06:23:43
用ado,将LockType设为ltBatchOptimistic为批处理方式

有一主键,假设名为:编号,字段类型为sql server中的自动增加列。

现在问题是该编号字段是不能修改的,
adods.FieldByname('编号').asfloat := -1; //出错,只读字段

adods.FieldByname('编号').ReadOnly := false;
adods.Edit;
adods.FieldByname('编号').asfloat := -1;
adods.Post;
showmessage(format('%f', [adods.FieldByName('编号').asfloat])); //nnd, 竟然自动变为0了

大家明白我的意思了吗?这个主键字段我只是想在客户端修改而已,并不更新回数据库,用第三方的内存数据集控件不太方便。纳闷,这个问题一直都没解决!
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianlinlong 2004-11-16
  • 打赏
  • 举报
回复
看来楼上的比前面的厉害点,明白我的意思!

比如我想在表格中新增一个复选框,想当然会这样:

Select a,b,c,d,e, cast(0,int) as f1 From table

这样的话,f1不是表中的字段,在delphi中就不能修改。即便强制将readonly设为false, 修改后再post,此字段的值又变回原来的了。

-----------
看来这是delphi的不足之处,要这样做,非得要加个字段不可,靠!
jinjazz 2004-11-16
  • 打赏
  • 举报
回复
自增字段是无法编辑的
jianlinlong 2004-11-16
  • 打赏
  • 举报
回复
to merkey2002(小样的):

看来是没办法解决了!
我现在改用cxmemdatatable来处理了,但这样对程序的可读性、可维护性、及执行效率都不好。


我一同事用PB的,说这个问题在pb很好处理!看来每个工具都有自己长处和不足处......
merkey2002 2004-11-16
  • 打赏
  • 举报
回复
沒看懂的你的問題
但是明白你的意思了,
因為我也問過這方面的問題,不過還沒有找到好的解決方法
qizhanfeng 2004-11-16
  • 打赏
  • 举报
回复
加个吧
xfgncit98 2004-11-15
  • 打赏
  • 举报
回复
不太明白!
nyf1220 2004-11-15
  • 打赏
  • 举报
回复
adods.Post;
你post后,数据集记录指针已经不在该记录上了

另外,,你这个问题想做什么,不明白

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧