Меня эта проблема вообще в тупик загнала, вот в чем ее суть:
программно создаю lookup поля в AdoTable
вот процедура создания полей:
Код:
procedure CreateLookups;
//Процедура создания LookUp поля
procedure createit(KeyF, //Имя поля которое нужно заменить
LUpKeyF,
LUpRes :string;
T1, T2 :TADOTable);
begin
with TStringField.Create(DataModule1.T) do
begin
FieldName := 'lookup' + KeyF;
FieldKind := fkLookup;
DataSet := T1;
Name := 'My' + FieldName;
KeyFields := KeyF;
LookUpDataSet := T2;
LookUpKeyFields := LUpKeyF;
LookUpResultField:= LUpRes;
DataModule1.T.FieldDefs.Add(Name, ftString, 100, false);
end;
DataModule1.T.FieldByName(KeyF).Visible:=false;
DataModule1.T.FieldByName(KeyF).Index:=T1.Fields.Count-1;
DataModule1.T.FieldByName('lookup' + KeyF).Index:=StrToInt(KeyF)-1;
DataModule1.T.FieldByName('lookup' + KeyF).DisplayLabel:=KeyF;
end;
begin
DataModule1.T.Active:=false;
createit('2','id','value', DataModule1.T, DataModule1.T2);
createit('4','id','value', DataModule1.T, DataModule1.T4);
createit('76','id','value', DataModule1.T, DataModule1.T76);
DataModule1.T.Active:=true;
end;
Но при просмотре таблицы получается, что отображается только первые 20 символов во всех 3х полях(пример в файле). Проверял с разными таблицами, везде ошибка повторяется, значит ошибка в датасете. Создовал в ручную лукап поле, вроде, отображается нормально, но меня интересует именно программное создание полей.
Подскажите как можно исправить ошибку?