Конференция "Базы" » Виртуальный DataSet [D6, D7]
 
  • DmitryAC (21.01.13 15:51) [0]
    Порекомендуйте пожалуйста виртуальный DataSet для D6/D7 (если такие существуют).

    Виртуальный DataSet не хранит данные, но предоставляет callback-и для получения данных извне (списка объектов или другой табличной структуры)
  • Ega23 © (21.01.13 16:22) [1]
    А запрос сделать - не судьба?
  • DmitryAC (21.01.13 16:32) [2]
    Отвечать вопросом на вопрос в стиле "ты что дебил?" невежливо.

    Поиск по этому форуму ничего не дал, поиск по гуглу выдал кучу мусора по слову virtual т.к. это ключевое слово Pascal. Из этого мусора я вычленил пару приличных InMemory DataSets (например, от DevArt), но это немного не то, что мне нужно. Поэтому я и выступил с просьбой тому, кто понял, что мне нужно, порекомендовать знакомый и опробованный компонент.
  • RWolf © (21.01.13 16:51) [3]
    TClientDataSet + TCustomProvider, не?
  • Ega23 © (21.01.13 16:55) [4]

    > Отвечать вопросом на вопрос в стиле "ты что дебил?" невежливо.

    Невежливо задавать вопрос в стиле известной "саги об XYZ".
    http://www.gunsmoker.ru/2008/10/x-y-z.html


    > Поэтому я и выступил с просьбой тому, кто понял, что мне
    > нужно, порекомендовать знакомый и опробованный компонент.

    Я как бы 8 лет только и делал, что связкой Delphi-БД занимался. Но я не понял, что тебе нужно. Опиши конкретную проблему.
  • DmitryAC (21.01.13 16:59) [5]
    RWolf © спасибо но тоже немного не то. В смысле - то, но свой провайдер писать я не в силах ) и DataSet тоже
  • DmitryAC (21.01.13 17:03) [6]
    Ega23 ©   (21.01.13 16:55) [4]

    ОК. Существуют визуальные компоненты типа VirtualTreeView, VirtualListView и т.д. которые сами не содержат источник данных, а выставляют события типа "получить количество записей в списке", "получить значение поля элемента списка по индексу элемента и имени поля" и пр. Вот я хочу такой же DataSet, который сам внутри себя данные не содержит.
  • Ega23 © (21.01.13 17:06) [7]
    Уже более понятно.
    Почему именно TDataSet? Если ты используешь DBAware, то у них внутри уже есть TDataLink. Также можно завязаться на TDataSource.
  • Ega23 © (21.01.13 17:08) [8]

    > а выставляют события типа "получить количество записей в
    > списке", "получить значение поля элемента списка по индексу
    > элемента и имени поля" и пр

    Это возможно только для snapshot-транзакции. Ну либо при монопольном доступе к хранилищу данных. Сейчас запись с таким-то id есть. Через 5 минут её другой клиент изменил. Ещё через 5 минут третий - удалил.
  • DmitryAC (21.01.13 17:10) [9]
    у меня нет хранилища данных )

    У меня "оторванная модель" - коллекция объектов, которую я хочу вывести в список. Можно конечно взять StringGrid и заполнить руками, но это некрасиво.
    Кстати вроде бы нашёл то что надо - http://digilander.libero.it/snapobject/

    Потратил всего час и потрачу ещё полдня чтобы убедиться в том, что этот компонент можно использовать в продкашне )
  • sniknik © (21.01.13 17:22) [10]
    > Кстати вроде бы нашёл то что надо
    это тоже самое, что -
    RWolf ©   (21.01.13 16:51) [3]
    TClientDataSet

    +
    TADODataSet
    TSimpleDataset
    TIBClientDataSet

    все из поставки D7
  • Ega23 © (21.01.13 17:23) [11]

    > У меня "оторванная модель" - коллекция объектов, которую
    > я хочу вывести в список.

    ну и держи свои объекты в виде TObjectList<T>. DataSet-то зачем? Он же медленный.
  • DmitryAC (21.01.13 17:29) [12]
    у меня д7, в ней нет дженериковых коллекций объектов и биндинга к ним.
  • Ega23 © (21.01.13 19:13) [13]

    > у меня д7, в ней нет дженериковых коллекций объектов и биндинга к ним.


    TMyObject = class

    end;

    TMyObjectList = class (TObjectList)
    private
     function GetItem(Index: Integer): TMyObject;
    public
     property Items[Index: Integer]: TMyObject read GetItem; default;
    end;

    function TMyObjectList.GetItem(Index: Integer): TMyObject;
    begin
     Result := TMyObject(inherited Items[Index]);
    end;



    Не понимаю, в чём проблема.
    Тебе быстро? Ну используй TClientDataSet, только midas.dll тащить с собой придётся. Я бы через ORM сделал, мне так проще.
  • DmitryAC (21.01.13 19:21) [14]
    да блин) у меня задача-всего лишь отобразить список объектов в гриде. как я этот tmyobjectlist гриду подсуну?
  • Ega23 © (21.01.13 20:26) [15]

    > да блин) у меня задача-всего лишь отобразить список объектов
    > в гриде. как я этот tmyobjectlist гриду подсуну?


    Если именно в DBGrid-e - ну возьми обычный TQuery, добавь к нему поля в рантайме, наполни его данными и всё.
    Но я бы не стал TDBGrid брать, разонравился он мне.
  • sniknik © (22.01.13 01:22) [16]
    > как я этот tmyobjectlist гриду подсуну?
    в D7 есть пример "как"  типа simple дадасет реализован "оберткой" над текстом... если решил идти по этому пути. но не советую, есть куча готового.
  • Виталий Панасенко (22.01.13 17:05) [17]
    MemTable из EhLib.. Или JEDI
  • Медвежонок Пятачок © (22.01.13 17:26) [18]
    ВиртуалСтрингТри в режиме грида.
    И грид и виртуальность и все что хочешь.
  • Ega23 © (22.01.13 17:29) [19]

    > ВиртуалСтрингТри в режиме грида.
    > И грид и виртуальность и все что хочешь.

    +100500. уже ничего другого и не использую, настолько он кошерен.
 
Конференция "Базы" » Виртуальный DataSet [D6, D7]
Есть новые Нет новых   [134430   +2][b:0][p:0.001]