53分(我的所有)请教:关于ClientDataSet新增记录问题(请富翁们关注!谢谢)

1楼: 数据库为SQL Server2000,表结构为: djbh char 10 单句号 主键 sort int   序号 sn: int    排列号 主键 spid char 40  商品ID shl decimal  数量 ...... 使用 Query->DataSetProvider->ClientDataSet 我需要: 1。在录入时在DBGrid的左边显示序号,就是数据表的sort,在资料删除时sort保持连续排列。 2。sn是否可以在ClientDataSet中设为自增字段,在数据表中sn不是自增。 3。在新增记录时怎么判断当前新增记录在ClientDataSet已经存在,并且给出提示,让用户选择是否可以重复。 真心请教各位富翁。。

2楼: 问题是不是有难度啊? 字串8

3楼: 1.Query有记录号,是按顺序排的 2.ClientDataSet中不能设自增字段,只能在数据库中设 3.判断重复只能由程序来做,主要是对主键做判断

4楼: 谢谢lgxyy的回答。 我使用过Query记录号,也使用过计算字段做序号,也在ClientDataSet中用了自增字段。 然后在AfterPost ClientDataSet1.Edit; ClientDataSet1.FieldByName(‘dj_sort‘).AsInteger:=。。。 ClientDataSet1.FieldByName(‘dj_sn‘).AsInteger:=。。。 但总觉得不是好办法。 如果用主键判断是否重复的话,就不容许重复了。

5楼: 其实楼上的那样做就可以了,要不你可以换另一种方法,在onnewrecord时 sort :=sort +1 sn:=sn+1 然后马上给它post 在post后在Applydata 以下, 同理,删除的时候相反,我以前做过和你类似的,就是用这样的办法, 客户一直在用,都没啥问题

6楼: 可以在SQL语句中添加一个列 I := i + 1;

7楼: 我设置 ClientDataSet.FieldByName(‘djbh‘).AutoGenerateValue:=arDefault; ClientDataSet.FieldByName(‘djbh‘).DefaultExpression:=‘AAAA0001‘; 在新增记录时自动获得了djbh的值。但是设置 ClientDataSet.FieldByName(‘sn‘).AutoGenerateValue:=arAutoInc; 不知道 ClientDataSet.FieldByName(‘sn‘).DefaultExpression:=??

8楼: ez 字串5

9楼: 如果是网络数据库最好不要使用敏感控件。

好的代码像粥一样,都是用时间熬出来的
原文地址:https://www.cnblogs.com/jijm123/p/13976559.html