三层连接后台数据库,前面做删除操作为什么更新不到后台数据库?? 谢了! (50分)

  • 主题发起人 主题发起人 dtu_ysxk
  • 开始时间 开始时间
D

dtu_ysxk

Unregistered / Unconfirmed
GUEST, unregistred user!
删除代码:
procedure TFrm_rzgl.Button3Click(Sender: TObject);
begin
if logcds.IsEmpty then
Exit;
if Application.MessageBox('您确定要删除当前记录吗?', '提示信息',
MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = 6 then
logcds.delete;
logcds.ApplyUpdates(-1);
end;
其中 logcds 为TClientDataSet;通过TClientDataSet.RemoteServer连接TSocketConnection;并选择好TClientDataSet.ProviderName(为一TDataSetProvider.name,他在连着一个Query1,Query1来执行SQL操作) 。
客户端的 TClientDataSet 都通过TSocketConnection连接中间层,中间层包括以上提的
TDataSetProvider、Query控件,还有DB、Session等控件了。
出现问题:以上代码在客户端做删除记录操作,但完成后再接着对同一 logcds 做显示记录操作,刚才删的还在,各环节都看过了,还是没解决. . . . .郁闷!!!
请教高手原因应该出在那里?? 谢了。
再现等。。。。。。
 
使用 TDataSetProvider 类
var
dsp: TDataSetProvider;
begin
//保存到数据库
dsp.ApplyUpdates(logcds.delta, 0, ErrCount);
end;
 
使用 TDataSetProvider 类
var
dsp: TDataSetProvider;
ErrCount: Integer;
begin
//保存到数据库
dsp.ApplyUpdates(logcds.delta, 0, ErrCount);
end;

 
加入procedure TForm1.ClientDataSet1ReconcileError(
DataSet: TCustomClientDataSet;
E: EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
showmessage(e.message);
end;
报错显示:
Tabledo
es not exist.
ORA-00942:表或视图不存在。
编程环境 :
DELPHI5 + ORACLE9i + WIN2000 SERVER
 
我的中间层程序中:
QUERY1.CachedUpdates = TRUE
QUERY1.RequestLive = FALSE
TBaseProvider.Options = [poAllowMultiRecordUpdates,poAllowCommandText]
TDataSetProvider.ResolveToDataSeT = FALSE
其中在ORACLE中建的表肯定存在,有主建,无索引,表内允许有空值;
清高手判断一下原因在那??
 
你要判断你的QUERY1能不能提交数据,如果能,将TDataSetProvider.ResolveToDataSeT = True把数据提交权给Query1。否则让DataSetProvider去分析SQL语句进行数据提交,可能会出错,尤其是你的Query1中使用了复杂的查询。
 
To:TYZhang
试过TDataSetProvider.ResolveToDataSeT = True,程序删除时未报错,grid里删掉,但再查询又出来???????请教
 
已解决,数据库名的大写问题
设 QUERY1.RequestLive = true
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部