Subject:
CnADOUpdateSQL的BUG
[Print This Page]
Author:
30896186
Time:
2008-9-12 23:39
Subject:
CnADOUpdateSQL的BUG
有空的可以测式一下,因我看了他的原理,是用替换字符的方式,但如一更新的表中,有类似的字段,就会出错,如有两个字段
fsort和fsortabc
这样,后面的字段就不会更新而且会出错
如fsort的值为'123'
fsortabc的值就会变为'123'abc
Author:
30896186
Time:
2008-9-12 23:42
Subject:
我用了最土的方法修改了
原: sCommandText := StringReplace(sCommandText, sFieldNameParam, QuotedStr(VarToStr(nValue)), [rfReplaceAll])
改为:
if bOld then
sCommandText := StringReplace(sCommandText, sFieldNameParam, QuotedStr(VarToStr(nValue)), [rfReplaceAll])
else
begin
sCommandText := StringReplace(sCommandText, sFieldNameParam+',', QuotedStr(VarToStr(nValue))+',', [rfReplaceAll]);
sCommandText := StringReplace(sCommandText, sFieldNameParam+')', QuotedStr(VarToStr(nValue))+')', [rfReplaceAll]);
end;
字段列表的字段列表名后面,一般为 ; 号 或 ) 号,如不是的话,说明他替换时不是完整的字段名
Author:
TinTin
Time:
2008-9-21 13:28
稍微简单改一下即可,即StringReplace,原被替换字符串后多带一个空格,新的字符串,QuotedStr()后多一个空格。
所有的TUpdateSQL都有一个通病,即我只修改字段 F1,但在Update中却 set F1,F2,F3所有的字段。
这个源于 TParams的简单赋值方法,却带来以下缺点:1、增加Update字段的危险。2、增加数据库开销,如日志、执行效率。
因此,我们希望,修改那个字段,Update Set 那个字段。
CnADOUpdateSQL还比较好改,因为她基于独立的TADOQuery,而不是拥有UpdateObject的TADOQuery,因此,修改其commandtex,
不影响原有的Params。
Author:
Passion
Time:
2008-9-23 13:53
得请作者小夏来看看。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0