Я например, динамически добавлял колонки в датасете и ставил событие ОнКалкФилд, где по двум параметрам (ключ строки, ключ столбца) извлекал из другого д/с нужное значение.
Типо так:
procedure хххх.AddCalcFields(DataSet: TDataSet);
var x:integer;
zz: array[0..100] of TFloatField;
begin
DataSet.FieldDefs.Update;
for x := 0 to DataSet.FieldDefs.Count - 1 do
DataSet.FieldDefs.Items[x].CreateField(DataSet);
x:=0;
fmain.qCalendar.Open;
while not fmain.qCalendar.EOF do begin
zz[x]:=TFloatField.Create(self);
zz[x].Name:='Cube'+IntToStr(x);
zz[x].Displaylabel:=sl[x];
zz[x].FieldName:='Cube'+IntToStr(x);
zz[x].DataSet:=DataSet;
zz[x].FieldKind:=fkCalculated;
fmain.qCalendar.Next;
inc(x);
end;//while
fmain.qCalendar.Close;
end;