三层结构中的数据更新问题,错误提示是找不到要更新的记录,用sql monitor 跟踪,居然得到update table set field='a' where

  • 主题发起人 主题发起人 siyan
  • 开始时间 开始时间
S

siyan

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构中的数据更新问题,错误提示是找不到要更新的记录,用sql monitor 跟踪,居然得到update table set field='a' where field=? 的SQL语句,请各位指点! (300分)<br />oracle 8i 的数据库
使用BDE连接数据库
用SOCKETCONNECTION连接应用服务器
客户端用CLIENTDATASET.COMMMADTEXT 获取数据
在DBGRID上执行简单修改后提交,出现上面的错误,请各位多多指教
声明:我的数据表中有BLOB字段,可是我已经把DATASETPROVIDER的FETCHONBLOB
设为True,还要设置什么东西吗
 
用midas中自带的错误信息处理单元模块呀!
 
设置option中的poallowcommandtext看看
 
很有可能是在字段中有浮点数类型的,因为精度问题导致DELPHI找到原记录。
如果有唯一索引的话,可试试把服务器端的对应的DataSetProvider的UpdateMode
设为upWhereKeyOnly
或upWhereChanged
 
to szf
设置为upWhereChanged好像不是很安全吧
设置为upWhereKeyOnly它却找不到这个键值
我已经把BLOB字段去掉了,表中也没有浮点数
请问还会有其他原因吗
 
好象没有其它的原因了。
TDataSetProvider有个属性ResolveToDataSet,它控制那个更新
SQL是由它自己生成还是由它所连接的DataSet生成。
不知道这个会不会有影响。
upWhereAll就是更新时,记录要全部符合所有字段的原来值。
upWhereChanged就是更新时,被修改的字段的记录要符合原来值
upWhereKeyOnly就是只要是主键值相同就行。
你可以先试试在表上生成一个唯一索引,upWhereKeyOnly就可以了。
不存在什么安不安全的问题,你只要保证数据正确就行了。
 
Resolvetodataset:=True
 
<font color=red> :-)</font>
 
to szf
设置为upWhereKeyOnly它却找不到这个键值,这是什么原因呢
主键索引已经建立了
 
如果不是在Create Table时设为主键,那么在生成主键的同时应该为它生成一个唯一索引。
 
没碰到这种情况
 
to szf
主键是在建表的时候就已经建立了,索引肯定已经建立了
可是 upWhereKeyOnly 还是不能用
 
genue到了,但没时间回答你的问题。给我分了就寄给你程序。100分即可。
 
看不到出错提示,这样解决问题太困难了,再想不出其它原因。
要不你把服务器部分的代码写成两层的看看怎么样。
要不你抽出一段关键代码让我试试。
 
to szf
几乎没有任何代码,
用CLIENTDATASET.COMMMADTEXT 获取数据
在DBGRID上显示编辑保存后提交,如此而已
有机会我再换成两层的试试
 
因为genue急需分数来问问题,所以我想把这题的分数给他
大家可以到1362199里继续讨论,分数是一样的,请大家谅解
 
请告诉我你的Email,好给你原码。
 
后退
顶部