(200分求解)关于ClientDataSet的数据回存的古怪问题!(200分)

  • 主题发起人 主题发起人 mhlijd
  • 开始时间 开始时间
M

mhlijd

Unregistered / Unconfirmed
GUEST, unregistred user!
版本 Delphi 6: update3
描述:
c/s结构,BDE 5.1. 使用Tquery, TClientDataSet, TDataSetProvider.
其中DataSetProvider的属性设置:UpdateMode:=[upWhereKeyOnly];ResolveToDataset:=False;Options:=[poIncFieldProps,poCascadeDeletes,poCascadeUpdates,poAllowMultiRecordUpdates];
当数据修改结束后,调用 ClientDataSet1.ApplyUpdates(-1);
可以修改数据,但是只能修改一条记录(偶尔可以有2条),在sql monitor中观察,得到类似下面结果:
14:32:42 SQL 等等
14:32:42 SQL Execute: DB2 - update "PDGCGL_PDXMXX" set "CENGINEER_NUMBER" = ?,
"CENGINEER_NAME" = ?
where
"IENGINEER_CODE" = ?
9 14:32:42 SQL Vendor: DB2 - SQLBindParameter
10 14:32:42 SQL Vendor: DB2 - SQLBindParameter
11 14:32:42 SQL Vendor: DB2 - SQLBindParameter
12 14:32:42 SQL Vendor: DB2 - SQLExecute
13 14:32:42 SQL Vendor: DB2 - SQLNumResultCols
14 14:32:42 SQL Vendor: DB2 - SQLRowCount
15 14:32:42 SQL Data In: DB2 - Rows affected = 1
等等
14:32:42 SQL Execute: DB2 - update "PDGCGL_PDXMXX" set
"CENGINEER_NUMBER" = ?,
"CENGINEER_NAME" = ?
where
"IENGINEER_CODE" = ?
Prepare: DB2 - update "PDGCGL_PDXMXX" set "CENGINEER_NUMBER" ?,
"CENGINEER_NAME" = ?
where
"IENGINEER_CODE" = ?
22 14:32:42 SQL Vendor: DB2 - SQLBindParameter
23 14:32:42 SQL Error: DB2 -
24 14:32:42 SQL Error: DB2 - Unmapped SQL Error Code: 0
估计是没有Prepare: DB2 引起的,这个问题怎么解决?
BTW:2层结构.
数据库 DB25.2
 
[?]各位以前有遇到同类问题的吗?
 
如果需要sql monitor的日志记录文件,可以email发送.
 
我就遇到过!呵呵,所以就用ClientDataSet1.ApplyUpdates(1);
 
呵呵,怎么回答的人这么少.
顶者有分
 
我个人建议是把数据包即clientdataset1.delta传到服务端,进行人工更新啦!
请见:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2334986
 
Thank you, skyzerobass
还有个问题,一块问了:
我共用一个DataSetProvider来提供数据和保存数据,当用ApplyUpdates是,它updata的是最近一次query的表,而不是我想更新的表.
大家有什么好的方法去处理?
 
后退
顶部