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

если создать два 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
и снова lookup поле в в dbgrid (не отображает выбранные значения)
    #39924646
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,
Код: pascal
1.
Field4.DataSet := TClientDataSet(DataSet);

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

а это что?


тут ошибся, на самом деле
Код: pascal
1.
Field4.DataSet := ClientDataSet1;
...
Рейтинг: 0 / 0
и снова lookup поле в в dbgrid (не отображает выбранные значения)
    #39924662
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin, когда создаю поля (лукапные в частности) то отчего-то (не помню) делаю это через FieldClass с указанием в качестве владельца датасета и не делаю добавления результата к Fields
...
Рейтинг: 0 / 0
и снова lookup поле в в dbgrid (не отображает выбранные значения)
    #39924672
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
и снова lookup поле в в dbgrid (не отображает выбранные значения)
    #39924679
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin
а зачем?
да у меня там процедура клонирования, соответственно конкретный тип заранее неизвестен
woojin
вот это разве не владелец
не, это задание к какому датасету относится поле
woojin
т.е. не надо делать так
я уже не помню почему у меня так сделано
...
Рейтинг: 0 / 0
и снова lookup поле в в dbgrid (не отображает выбранные значения)
    #39924962
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот... блин!!!!!!
чуть мозг не расплавился

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


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