Delphi: отображение подмножества набора данных в элементах управления с учетом данных - PullRequest
2 голосов
/ 05 ноября 2008

У меня есть набор данных в памяти с несколькими полями, одно из которых является первичным ключом, на которое другой набор данных ссылается как на внешний ключ. Дело в том, что основной набор данных может иметь несколько ссылок на подробный набор данных. (Это моделирование объекта, который содержит динамический массив других объектов.)

Если бы был только один из каждого подобъекта, я мог бы установить правильную связь со свойствами KeyFields и LookupKeyFields ссылочного поля в наборе основных данных, но он предназначен только для возврата одного результата. Я хочу загрузить все записи, первичный ключ которых соответствует правильному ключу ID, и отобразить их в списке.

Я думал, что TDBListBox поможет с этим, но оказывается, что это не то, что они делают. Итак, как бы мне заполнить список или подобный элемент управления набором результатов проверки множественного соответствия, подобным этому, для дальнейшего редактирования? Я хочу что-то похожее на результат запроса SQL, как это:

select field1, field2, field3
from client_dataset
where client_dataset.primary_key = master_dataset.id

Единственное, это делается полностью с наборами данных в памяти. Никаких реальных баз данных здесь не используется. Кто-нибудь знает, как это можно сделать?

1 Ответ

3 голосов
/ 05 ноября 2008

Набор данных имеет свойство Filter, которое может быть установлено с условием. Вы также должны установить флаг фильтрации на true. А с помощью элементов управления данными вы можете выбрать, какие поля будут видны.

Итак:

var
  c : TColumn;
begin
  clientdataset.Filter := Format('primary_key = %d', [master_dataset.id]);
  clientdataset.Filtered := True;

  c := DBGrid1.Columns.Add;
  c.FieldName := 'field1';
  c := DBGrid1.Columns.Add;
  c.FieldName := 'field2';
  c := DBGrid1.Columns.Add;
  c.FieldName := 'field3';
end;

Должен сделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...