Как я могу создавать объекты со ссылкой, используя платформу instantobjects программно в коде Delphi - PullRequest
0 голосов
/ 05 июня 2009

Я экспериментирую с объектами-объектами. У меня есть два простых класса tband и tcountry, оба определены как сохраненные. У tband есть свойства с именем tcountry, ссылающиеся на класс / таблицу tcountry. (страна - справочная таблица). При создании новой группы я хочу, чтобы пользователь мог выбрать страну в форме из списка / комбинации, а затем сохранить объект группы. Я пробовал что-то вроде:

Band.Create(nil);
Country.Create(nil);
Country := CountrySelector.CurrentObject as TCountry; // here I get an exception
Band.Country := Country;
Band.Store;

CountryConnector - это TInstantConnector. Он имеет запрос «select * from TCountry» и отображает значения в DbComboBox.

Ответы [ 2 ]

1 голос
/ 05 июня 2009

Ваш код должен выглядеть примерно так: Обратите внимание, что предполагается, что коннектор подключен к соответствующему брокеру, соединение с базой данных активно, и что схема базы данных была создана (вы можете легко выполнить последний шаг из Model Explorer).

var
  Band : TBand;
begin
  // Query the database for all TCountry instances or descendants
  CountrySelector.Close;
  CountrySelector.Command.Text := 'SELECT * FROM ANY TCountry';
  CountrySelector.Open;

  if ContactSelector.ObjectCount > 0 then
    begin
      Band := TBand.Create(Connector);

      try
        // Take currently selected Country and assign to Band's Country property
        // Reference counting is handled automatically
        Band.Country := CountrySelector.CurrentObject as TCountry;
        Band.Store;
      finally
        Band.Free;  // Free reference to Band so we do not leak an object
      end;
    end;
end;

Я должен также упомянуть, что я не использую Selector очень часто, поскольку он не соответствует моим типичным требованиям приложения. Мои пользователи часто извлекают более 20 000 записей из Firebird, используя решетки DevExpress Quantum, и ожидают, что время отклика не превышает 2 секунд. Чтобы удовлетворить это требование, потребовалось очень тщательное проектирование и настройка с использованием IBExpert (причудливый, но в то же время отличный инструмент), поскольку мои запросы часто охватывают много таблиц и имеют сложные требования к фильтрации.

Что я могу сказать о IO, так это то, что он облегчает моделирование данных, поскольку дизайн сводится к точечному и щелчковому процессу с использованием Model Explorer. IO также является хорошей средой привязки данных, поскольку она позволяет «представлять» даже сложные графы объектов в виде наборов данных и привязывать свойства к визуальным элементам управления. Другая часть, которая мне нравится, заключается в том, что мне больше не нужно суетиться с созданием вручную запросов на вставку или обновление и настройкой значений столбцов для добавления или изменения постоянных объектов. IO делает это и многое другое для вас за кулисами с очень небольшим количеством кода.

David

0 голосов
/ 05 июня 2009

Имеет ли CountrySelector значение, отличное от nil?

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