На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> и снова lookup поле в в dbgrid, не отображает выбранные значения
добрейшего денька!

сама БД создаваться должна в программе, грузиться и сохраняться в XML
если создать два TClientDataSet в дизайнере и заполнить их необходимыми полями со связями, то после запуска программы всё отображается как надо
но если создавать всё то же самое в Run-Time то LookUp поле первого TClientDataSet не показывает выбранное значение из второго TClientDataSet
ExpandedWrap disabled
    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 := ClientDataSet1;
          { заполнение данных для 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 пустота

подскажите что я сделал не так?
вот... блин!!!!!!
чуть мозг не расплавился

не надо было КЭШ включать для этого поля
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0812 ]   [ 20 queries used ]   [ Generated: 26.02.20, 12:07 GMT ]