这是delphi中tquery的bug 吗?(100分)

  • 主题发起人 主题发起人 karxios
  • 开始时间 开始时间
K

karxios

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库sqlserver
在用tquery控件时 发现有这样一个问题,假如一个表里有几个text型字段aa,bb,cc,dd,然后我用query1指向
一条记录,query2指向另一条, 然后执行这样的语句
..............
query1.edit;
query1.fieldbyname('aa').asstring:=query2.fieldbyname('aa').asstring;//用asstring 是没有错误的,
query1.fieldbyname('bb').asstring:=query2.fieldbyname('bb').asstring;
...........................................................
query1.post;
最后会发现query1 post后,没有安预想的写数,也就是bb也许会到aa里,......总之乱了
ttable 就不会有, 奇怪
 
TEXT字段好像不是这种写法。
 
这样写多好:
query1.close;
query1.sql。clear;
query1.sql('update table_XXXX set aa=:AA,bb=:BB where XXXX');
query1.SQl。ParamByName('AA').AsString:= query2〔'aa'〕;
query1.SQl。ParamByName('BB').AsString := query2〔'bb'〕;
...........................................................
query1。ExecSQL;

用SQL语句吧!
 
query不支持真正的写库
可以用UPdateSQL控件,其实就是用SQL语句来更新数据库
 
query1.close;
query1.sql.clear;
query1.sql('update table_XXXX set aa=:AA,bb=:BB where XXXX');
query1.SQl.ParamByName('AA').value:= query2〔'aa'〕.asstring;
query1.SQl.ParamByName('BB').value := query2〔'bb'〕.asstring;
...........................................................
query1.ExecSQL;
 
:Jackyxia

当真么
 
用SQL语句写应该是最好的方法了.就用updatesql控件.
 
to:荷塘新月 text也可以这样写,用table 时可以的 image也可以这样写
to:jrq 我不知道我的数据发生过什么错误,总之有的数据会报错,但是用table 不会报错 那样
用update xxx set xxx='''+query2...........语句的话 如果字段内容有 ' 会报错

存储过程又不能定义text型的变量
 
建议你用update来更新数据库记录吧,这样不会有错误的!~
 
你是用什么连接你的SQL Server数据库的,建议用ADO。。
 
是呀我也发现这个问题了,怎么回事呢。
 
接受答案了.
 
后退
顶部