X
xyzsuper
Unregistered / Unconfirmed
GUEST, unregistred user!
做了一个简单的中间层,用这个模式,TClientDataSet-》TDataSetProvider—》TADOQuery—》TADOConnection,后端连接SqlServer2000的pubs库中的employee表,中间层写两个接口:一、中间层把数据传给客户端
function Ttest.IGETDATA: OleVariant;
begin
CDS.Close;
CDS.CommandText:='Select * from employe';
CDS.Open;
Result:=CDS.Data;
CDS.Close;
end;
二、客户端把TClientDataSet.delta传给中间层处理
procedure Ttest.ISETDATA(ADATA: OleVariant);
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add('Select * from employe where 1=0');
ADOQ.Open;
CDS.Close;
CDS.Data:=ADATA;
CDS.Open;
ADOQ.FieldByName('emp_id').ProviderFlags:=ADOQ.FieldByName('emp_id').ProviderFlags+[pfInKey ];
CDS.ApplyUpdates(-1);
CDS.Close;
CDS.Close;
end;
问题是,如果我把pubs库中的employee改名,比如改成employe,中间层中的sql语句也改为employe,当执行到 CDS.ApplyUpdates(-1)时,会提示“找不到对象名employee”,也就是说中间层会记住原来的表名,重新编译和重启都没有用,请高手赐教!!!
function Ttest.IGETDATA: OleVariant;
begin
CDS.Close;
CDS.CommandText:='Select * from employe';
CDS.Open;
Result:=CDS.Data;
CDS.Close;
end;
二、客户端把TClientDataSet.delta传给中间层处理
procedure Ttest.ISETDATA(ADATA: OleVariant);
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add('Select * from employe where 1=0');
ADOQ.Open;
CDS.Close;
CDS.Data:=ADATA;
CDS.Open;
ADOQ.FieldByName('emp_id').ProviderFlags:=ADOQ.FieldByName('emp_id').ProviderFlags+[pfInKey ];
CDS.ApplyUpdates(-1);
CDS.Close;
CDS.Close;
end;
问题是,如果我把pubs库中的employee改名,比如改成employe,中间层中的sql语句也改为employe,当执行到 CDS.ApplyUpdates(-1)时,会提示“找不到对象名employee”,也就是说中间层会记住原来的表名,重新编译和重启都没有用,请高手赐教!!!