Ну никак не могу создать лукап в рантайме((((((

Angellore
Дата: 13.11.2007 10:55:15
Помогите пожалуйста.
Есть клиент датасет.
Я хочу создать лукапное поле в рантайме.
Вот что я делаю:
 
  fldLook := TField.Create(cdsDBColls); //cоздаю новый филд 
  fldLook.FieldName := 'fldLook';
  //fldLook.LookupCache := true;
  fldLook.Name := 'fldLook';
  fldLook.FieldKind := fkLookup;
  fldlook.LookupDataSet := cdsOuter;
  fldlook.KeyFields := 'COUNTER';
  fldlook.LookupKeyFields := 'COUNTER';
  fldlook.LookupResultField := 'DETACH';
  fldLook.DisplayLabel := 'LookupField';
  cdsDBColls.Fields.Add(fldLook);
//добавляю филд в датасет.
Но это не работает, ругается д иксовый грид, мол у поля fldLook нет датасета.
Добавляю датасет руками fldLook.dataSet := cdsDBColls;
все равно лажа.
Подскажите, как быть. В гриде создаю соответствующий лукап филд, но не получается
Помогите!!!!
Дураг
Дата: 13.11.2007 10:59:28
Angellore
Добавляю датасет руками fldLook.dataSet := cdsDBColls;
все равно лажа.


текст лажи в студию
Angellore
Дата: 13.11.2007 11:01:11
Так лажа же и написана, вроде все нормально, а лукап не создается.
Дураг
Дата: 13.11.2007 11:02:20
Angellore
Так лажа же и написана, вроде все нормально, а лукап не создается.


где написана? текст ошибки давай
Angellore
Дата: 13.11.2007 11:08:02
'Field 'LookupField' has no dataset'
вот что выдает на это все.
А датасет руками добавляю, так ругается...
Дураг
Дата: 13.11.2007 11:11:59
Angellore
'Field 'LookupField' has no dataset'
вот что выдает на это все.
А датасет руками добавляю, так ругается...


ничего не понял... попробуй вот так:

fldLook := TField.Create(cdsDBColls); //cоздаю новый филд 
  fldLook.FieldName := 'fldLook';
  //fldLook.LookupCache := true;
  fldLook.Name := 'fldLook';
  fldLook.FieldKind := fkLookup;
  fldlook.LookupDataSet := cdsOuter;
  fldlook.KeyFields := 'COUNTER';
  fldlook.LookupKeyFields := 'COUNTER';
  fldlook.LookupResultField := 'DETACH';
  fldLook.DisplayLabel := 'LookupField';
  fldLook.dataSet := cdsDBColls;
  cdsDBColls.FieldDefs.Update;


кстати, почему TField ? а не TStringField, например?
Angellore
Дата: 13.11.2007 11:13:45
А чем стрингфилд лучше?
Дураг
Дата: 13.11.2007 11:22:24
Angellore
А чем стрингфилд лучше?


у него тип данных определен - ftString
Angellore
Дата: 13.11.2007 11:24:15
Сделал стрингфилд.
Так тоже не выходит. Говорит, что нельзя выполнять такую операцию над открытым датасетом, когда филду присвиваю датасет. Закрываю датасет. Присваиваю и открываю, после чего программа не находит тех филдов, которые были еще до создания лукапа.
Игорь Сойников
Дата: 13.11.2007 11:50:54
Если текст создания весь, то во-первых нехватает свойства Parent := WinControl (где отображать), без этого созданный Run-Time компанент никогда не будет виден.