Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
woojin
Member

Откуда:
Сообщений: 96
добрейшего денька!

если создать два TClientDataSet в дизайнере и заполнить их необходимыми полями со связями, то после запуска программы всё отображается как надо
но если создавать всё то же самое в Run-Time то LookUp поле первого TClientDataSet не показывает выбранное значение из второго TClientDataSet

+ FormCreate
procedure TForm.Create(Sender: TObject);
var
    Field1, Field2, Field3, Field4: TField

begin
      { +++++ ClientDataSet2 +++++ }
      { авто добавляемое поле порядкового номера }
      Field1 := TAutoIncField.Create(nil);
      Field1.FieldName := 'id';
      Field1.Visible := True;
      Field1.FieldKind := fkData;
      Field1.DataSet := ClientDataSet2;
      ClientDataSet2.Fields.Add(Field1);

      { текстовое поле с данными }
      Field2 := TStringField.Create(nil);
      Field2.FieldName := 'name';
      Field2.Visible := True;
      Field2.FieldKind := fkData;
      Field2.Size := 5;
      Field2.DataSet := ClientDataSet2;
      ClientDataSet2.Fields.Add(Field2);
      { ----- ClientDataSet2 ----- }

      { +++++ ClientDataSet1 +++++ }
      { номер выбранного значения из  ClientDataSet2 }
      Field3 := TIntegerField.Create(nil);
      Field3.FieldName := 'id_izmer';
      Field3.Visible := True;
      Field3.FieldKind := fkData;
      Field3.DataSet := ClientDataSet1;
      ClientDataSet1.Fields.Add(Field3);

      { текстовое поле с данными из  ClientDataSet2 }
      Field4 := TStringField.Create(nil);
      Field4.FieldName := 'izmer';
      Field4.Visible := True;
      Field4.FieldKind := fkLookup;
      Field4.Size := 5;
      Field4.DataSet := TClientDataSet(DataSet);
      { заполнение данных для LookUp }
      Field4.KeyFields := 'id_izmer';
      Field4.LookupKeyFields := 'id';
      Field4.LookupResultField := 'name';
      Field4.LookupDataSet := ClientDataSet2;
      ClientDataSet1.Fields.Add(Field4);
      { ----- ClientDataSet1 ----- }

      ClientDataSet2.CreateDataSet;
      ClientDataSet2.Active := True;
      ClientDataSet1.CreateDataSet;
      ClientDataSet1.Active := True;
end;

после запуска заполняю некоторыми значениями DBGrid2 с привязанным ClientDataSet2
делаю выбор в LookUp поле DBGrid1 - и значение в поле id_izmer меняется, а в самом поле izmer пустота

подскажите что я сделал не так?
10 фев 20, 12:42    [22076715]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
woojin,
Field4.DataSet := TClientDataSet(DataSet);
а это что?
10 фев 20, 12:58    [22076727]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
woojin
Member

Откуда:
Сообщений: 96
vavan
woojin,
Field4.DataSet := TClientDataSet(DataSet);
а это что?


тут ошибся, на самом деле
Field4.DataSet := ClientDataSet1;
10 фев 20, 13:20    [22076755]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
woojin, когда создаю поля (лукапные в частности) то отчего-то (не помню) делаю это через FieldClass с указанием в качестве владельца датасета и не делаю добавления результата к Fields
10 фев 20, 13:35    [22076775]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
woojin
Member

Откуда:
Сообщений: 96
vavan
делаю это через FieldClass
а зачем?
если вот как он описан
Data.DB
TFieldClass = class of TField;
и больше ни где не расширяется!
------------------------------------------------------------------------
vavan
в качестве владельца датасета
вот это разве не владелец
woojin
Field1.DataSet := ClientDataSet2

------------------------------------------------------------------------
vavan
не делаю добавления результата к Fields
т.е. не надо делать так
woojin
ClientDataSet2.Fields.Add(Field1);
10 фев 20, 14:01    [22076799]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
woojin
а зачем?
да у меня там процедура клонирования, соответственно конкретный тип заранее неизвестен
woojin
вот это разве не владелец
не, это задание к какому датасету относится поле
woojin
т.е. не надо делать так
я уже не помню почему у меня так сделано
10 фев 20, 14:29    [22076824]     Ответить | Цитировать Сообщить модератору
 Re: и снова lookup поле в в dbgrid (не отображает выбранные значения)  [new]
woojin
Member

Откуда:
Сообщений: 96
вот... блин!!!!!!
чуть мозг не расплавился

не надо было КЭШ включать для этого поля
10 фев 20, 22:48    [22077257]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить