Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / и снова lookup поле в в dbgrid (не отображает выбранные значения) / 7 сообщений из 7, страница 1 из 1
10.02.2020, 12:42
    #39924637
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
добрейшего денька!

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

FormCreate
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
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 пустота

подскажите что я сделал не так?
...
Рейтинг: 0 / 0
10.02.2020, 12:58
    #39924646
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
woojin,
Код: pascal
1.
Field4.DataSet := TClientDataSet(DataSet);

а это что?
...
Рейтинг: 0 / 0
10.02.2020, 13:20
    #39924656
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
vavan
woojin,
Код: pascal
1.
Field4.DataSet := TClientDataSet(DataSet);

а это что?


тут ошибся, на самом деле
Код: pascal
1.
Field4.DataSet := ClientDataSet1;
...
Рейтинг: 0 / 0
10.02.2020, 13:35
    #39924662
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
woojin, когда создаю поля (лукапные в частности) то отчего-то (не помню) делаю это через FieldClass с указанием в качестве владельца датасета и не делаю добавления результата к Fields
...
Рейтинг: 0 / 0
10.02.2020, 14:01
    #39924672
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
vavan
делаю это через FieldClass
а зачем?
если вот как он описанData.DB
Код: pascal
1.
TFieldClass = class of TField;

и больше ни где не расширяется!
------------------------------------------------------------------------
vavan
в качестве владельца датасета
вот это разве не владелец
woojin
Код: pascal
1.
Field1.DataSet := ClientDataSet2


------------------------------------------------------------------------
vavan
не делаю добавления результата к Fields
т.е. не надо делать так
woojin
Код: pascal
1.
ClientDataSet2.Fields.Add(Field1);

...
Рейтинг: 0 / 0
10.02.2020, 14:29
    #39924679
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
woojin
а зачем?
да у меня там процедура клонирования, соответственно конкретный тип заранее неизвестен
woojin
вот это разве не владелец
не, это задание к какому датасету относится поле
woojin
т.е. не надо делать так
я уже не помню почему у меня так сделано
...
Рейтинг: 0 / 0
10.02.2020, 22:48
    #39924962
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и снова lookup поле в в dbgrid (не отображает выбранные значения)
вот... блин!!!!!!
чуть мозг не расплавился

не надо было КЭШ включать для этого поля
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / и снова lookup поле в в dbgrid (не отображает выбранные значения) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]