三层结构:怎样解决ADO多表更新会出现[列名 'xxx' 无效。]的错误。 D6+Sql2000 (200分)

A

afeisky

Unregistered / Unconfirmed
GUEST, unregistred user!
在多表更新中:
中间层:
ADODataSet1的CommandText:='Select a.*,b.FName from table1 a,table2 b where a.id1=b.id2'
DataSetProvider1指向ADODataSet1
客户端:
ClientDataSet1 指向 DataSetProvider1
运行:
对ClientDataSet的id1和FName字段填写值。
出错,系统提示:列名 'FName' 无效。 ?

为了这个问题:
我用了在以下办法:(都不起作用?)
procedure TCoClass1.DataSetProvider1BeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
begin
DeltaDS.FieldByName('KeyID').ProviderFlags :=
DeltaDS.FieldByName('KeyID').ProviderFlags + [pfInKey]
DeltaDS.FieldByName('FName').ProviderFlags :=
DeltaDS.FieldByName('FName').ProviderFlags - [pfInUpdate];
end;

procedure TCoClass1.ADODataSet1AfterOpen(DataSet: TDataSet);
begin
ADODataSet1.Recordset.Properties.Item['Unique Table'].Value := 'table1'
end;


哪位大侠能帮帮我吗?
先谢谢你!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1190329
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1237160

主要问题是你的 resolvetodataset updatamode 这两个属性是怎么设置的。
感觉三层下ADO的问题可真多呀。。。
 
您是不是在更新的时候才出现这样的问题?还是在查询时就出现这个问题呢???
如果问题没解决,请您回复一下这个问题。
 
顶部