UpdateSQL 运行时出错, 'General SQL Error: Blob not found!'(50分)

  • 主题发起人 主题发起人 lqk
  • 开始时间 开始时间
L

lqk

Unregistered / Unconfirmed
GUEST, unregistred user!
组件: Database1 ==> Query1 ==> UpdateSQL1

Database1连接一个InterBase数据库
Query1.CashedUpdate =True
UpdateSQL 根据 PrimaryKey: "ID"进行更新,新增和删除

Query1连接的表中有一字段 Description, 类型为 Blob,Text
此字段通过一个DBMemo1组件显示和修改内容

另有一ButtonApply按钮,执行新增或修改后的存储操作
try
Database1.StartTransaction;
Query1.ApplyUpdates;
Database1.Commit;
Query1.CommitUpdates;
except
on E: Exception do
begin
ShowMessage('更新错误:' + E.Message);
Database1.RoolBack;
end;
end;

问题:
新增和删除都没错.

开始修改某条记录后,存储.接着再修改这条记录,再存储,出现
标题中提到的错误:'General SQL Error: Blob not found!'.

在UpdateSQL1中把Blob字段清除,错误消失,因此必定是此处出错.

如果修改某条记录时,顺带修改了DBMemo1中的内容,那么以后对
这条记录的修改无论进行多少次都不会出错.
现在,我只好在Query1.AfterEdit中,人为地给DBMemo1加一个空
格,再减一个空格,以避免这个错误.

请各位高手指教,出现此问题的原因是什么,有没有不那么土的解决
办法.

 
用了这么久的interbase没碰到过你这个问题。
 
这问题我碰到过,主要是由于Blob字段对象没有刷新。
解决办法有两种:
1.使用TTable控件,不使用TUpdateSql;
2.记录修改保存后,对于所有的备注字段添加一下代码:
Var A:Variant;
A:=MemoField1.Value;
MemoField1.Value:=A;
问题应该解决;
 
我认为是没有刷新的问题。TUpDateSql控件修改数据库后并不会自动刷新,
显示的仍然是以前的数据,此时,你在对数据进行修改,因为原来的数据已经不存在,
所以,就会提示can not found……,你应该及时的进行刷新!
 
接受答案了.
 
后退
顶部