又发现一个BUG,IB的数据控件竞然不能进行多字段关联,如表1和表2的RRMID及COLLADDR
两个相同字段进行Relation的话,打开表1时报RRMID;COLLADDR字段没找到的错误,
最终发现其在VCl/source/DBlocall.pas中还存在错误(注:已经升级Delphi6的升级包):
procedure TIBClientDataSet.SetLocalParams;
procedure CreateParamsFromMasterFields(Create: Boolean);
var
I: Integer;
List: TStrings;
ss:string
//新增加
Len:Integer;//新增加
begin
List := TStringList.Create;
try
if Create then
FLocalParams.Clear;
FDataSet.FKeyFields := MasterFields;
// List.CommaText := MasterFields;原来的程序行 ,这一行在Delphi6中失效了,不知delphi5下会不会?
// 替换的程序段
ss:=MasterFields;
repeat
len:=pos(';',ss);
if len=0 then
len:=length(ss)+1;
list.add(copy(ss,1,len-1));
ss:=copy(ss,len+1,length(ss)-len);
until ss='';
// 增加和程序结束
for I := 0 to List.Count -1 do
begin
if Create then
FLocalParams.CreateParam( ftUnknown, MasterSource.DataSet.FieldByName(List).FieldName,
ptInput);
FLocalParams.AssignField(MasterSource.DataSet.FieldByName(List));
end;
finally
List.Free;
end;
end;