DSP

关于Record not found or changed by another user的问题

2019-07-13 20:28发布

ClientDataSet提交时出现"Record not found or changed by another user"错误提示
分析原因可能是找找不到更新数据,从网上搜索到大致原因有一下几个方面:
1、没有主键
2、某些字段不能识别
某些提供解决方案也无非是设置DSP的UpdateMode属性,去掉字段的一些默认值
这些问题,我仔细检查了一下,感觉不可能存在,仔细分析原因:我更新记录是分两种方式
一种是:clientdataset.append;
....
提交后再更新
另外一种是大批量插入表,然后打开数据集更新
而第一种方案不存在这个问题,我开始分析第2种方案可能存在的问题。有如下语句:
INSERT INTO tableA (field1,field2) SELECT  field1,'' FROM tableb
前几天发现ClientDataSet的CommandText用SELECT ''是不能识别的,提示无效的参数
我想是不是这个原因造成,所以将''改为' '一些正常。
此外ClientDataSet的Filter如果是汉字的话,也不能识别,这个是众所周知的,因此分析
都是Delphi不支持Unicode码造成,期待Delphi的版本.据说全面支持Unicode码,支持泛型。