Таблицы из разных источников данных

Тема в разделе ".NET", создана пользователем prog_new, 4 авг 2007.

Статус темы:
Закрыта.
  1. prog_new

    prog_new Гость

    Пишу на С# (точнее только начал) и столкнулся с проблемой ...
    Есть два источника данных - SQL и Access. Создал DataSet, затащил одну таблицу из одного источника данных, другую таблицу - из другого. Создал связь между таблицами ...
    Как отобразить поля из одной и другой таблицы одновременно в одном DataGrid.
    Типа создать запрос
    Select tab1.*, tab2.*
    From tab1 INNER JOIN tab2 ON ... и отобразить в ОДНОМ DataGrid ?????????????
     
  2. prog_new

    prog_new Гость

    Есть следуюшие варианты:
    1) В виде обычной необработанной таблицы, которая берет данные из той и другой таблицы используя связи (связь установлена один ко многим)
    2) Тоже в виде таблицы, только уже используя группировку и функции агрегирования, например sum ...

    В любом случае данные не обновляемые, т.е. в чистом виде SELECT ...
    Кроме того, DataGrid будет в простейшем виде, БЕЗ замены типа колонок на другой тип (например ComboBox или ему подобные)

    Я ответил на поставленный вопрос или есть еще неясности? :D
     
  3. prog_new

    prog_new Гость

    Спасибо ...
    А на С# есть что либо похожее?
     
  4. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Для: prog_new
    По-простому, кажется, не получится.
    Вариант 1: создать некий класс, который будет включать поля для всех требуемых колонок. Далее вручную формируешь коллекцию объектов этого класса, заполняя его данными из двух таблиц. После этого назначаешь эту коллекцию в качестве датасорса гриду
    Вариант 2: придумать, как по-другому отобразить данные :) Например, в двух гридах, так чтоб при перемещении по строкам "главного" сообразно обновлялись данные в "подчиненном"
    Вариант 3: сделать грид для дочерней таблицы, добавить вручную колонки, соответствующие полям главной. Для этих колонок написать обработчик события CellFormatting, который будет дергать данные из другого источника данных и подставлять в ячейки. Производительность будет не ахти, правда. Для ускорения данные родительской таблицы можно предварительно отобрать в DataView и искать в нем с помощью метода Select.
     
  5. prog_new

    prog_new Гость

    При подробном рассмотрении примера, обратил внимание, что таблицы берутся из одного источника ...
    А у меня источники данных разные - и SQL и Access ... Получиться ли?
     
  6. prog_new

    prog_new Гость

    А такой вариант "гибрибный" из перечисленных выше ...
    Создать вручную таблицу, которая включает все нужные поля из обеих таблиц...
    Затем заполнить второстепенную таблицу (она маленькая и SQL - ная)
    После этого пробежаться по полям второстепенной таблицы в цикле, одновременно заполняя в новой таблице поля, соответствующие второстепенной таблицы и вызывать метод FillBy, который будет грузить данные главной таблицы но не все, а только те, которые считали из второстепенной ... и тоже заполнять соответствующие поля новой таблицы ...
    А потом подключить эту новую таблицу в гриду...
    Как тебе такой вариант?
     
  7. mms

    mms Гость

    Без разницы.

    Суть моей ссылки проста как божий мир :)

    1. Наследуемся от колонки отображающей текст.
    2. Переписываем основные методы, отвечающией за отображение и поведение колонки.
    2.1 Перекрываем GetColumnValueAtRow - тут возвращаем значение которые можно брать откуда угодно (хотите из дата тэйбла, хотите из файла, хотите из памяти) - вот тут оснавная суть того, что будет отображено в гриде.

    Собственно всё, если надо добавить колонки, которые будут брать данные из других источников, добавляем наши самописанные колонки, которые будут показывать, то что нам надо.

    В ссылке которую я приводил даже в виде примера всё расписано, правда на ВБ, но на сишарпе в точности тоже самое.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей