Форум: "Базы";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизПерпендикулярный грид Найти похожие ветки
← →
uw (2004-01-08 14:31) [0]Посоветуйте компонент типа TDBGrid, который разворачивал бы запрос не сверху вниз, а слева направо. Т.е. изначально количество строк в гриде известно, а количество столбцов определяется запросом.
← →
Danilka (2004-01-08 14:33) [1]если только грид, то, например, TStringGrid :))
← →
MV (2004-01-08 14:34) [2]А какой запрос так делать может? Что-то мне ничего, кроме select * from... в голову не приходит. Просвятите...
← →
uw (2004-01-08 14:34) [3]>Danilka © (08.01.04 14:33) [1]
Нет, руками-то - это понятно.
← →
uw (2004-01-08 14:36) [4]>MV (08.01.04 14:34) [2]
Запрос такой и будет, а вот выбранные строки я хотел бы располагать не сверху вниз, а слева направо.
← →
Danilka (2004-01-08 14:37) [5][3] uw © (08.01.04 14:34)
готовых незнаю.
даже не могу представить, что в строке поиска по торри.нет надо написать, чтобы найти такое.
:)
← →
Ильш (2004-01-08 14:51) [6]InfoPower кажется такое умеет.
← →
Alex_Bredin (2004-01-08 15:05) [7]что-то подобное можно получить, используя компоненты Decision Cube(в простейшей форме), в частности,можно менять местами строки и столбцы выборки
посмотрите примеры, может подойдет
← →
Alex_Bredin (2004-01-08 15:07) [8]а еще лучше- не мучаться и использовать сводные таблицы в екселе-вот где мощь! ;)
← →
Fareader (2004-01-08 15:34) [9]ИМХО - от лукавого это все. А не проще ли строки (кол-во коих заранее) известно назначить столбцами? А сделать такой "переворот" используя хранимую процедуру.
← →
rootim (2004-01-08 15:38) [10]DBCtrlGrid вполне рабочий вариант.. 1-строка 2,3.. столбца..
раньше видел такой NXDBGrid... если не найдеш... могу вскрыть свои архивы.. под 7-ку подойти должен...
← →
Polevi (2004-01-08 15:45) [11]TDrawGrid
← →
MV (2004-01-08 16:22) [12]У серверов БД часто имеется ограничение на число столбцов.
Предложение: создай хранимую процедуру, которая будет выполнять необходимое "транспонирование" и возвращать результат, например, в виде двух полей:
- первое - (целое) - число колонок
- второе - строка - значения колонок, (со специальными разделителями, например)
Потом, после отрытия набора данных, динамически формируешь нужное количество Calculate fields, и всем им назначаешь одну и ту же процедуру обработки события OnCalculate. Этот обработчик по имени поля будет извлекать нужное значение из длинной строки.
Все.
Возможны варианты.
← →
uw (2004-01-08 16:28) [13]>rootim (08.01.04 15:38) [10]
Спасибо за NXDBGrid, попробую.
>All
Тоже спасибо!
← →
kaif (2004-01-09 02:47) [14]Я бы все же использовал обычный TStringGrid или написал своего потомка от TDrawGrid. Скорее всего тебе нужно иметь динамический набор столбцов (переменное число). Поэтому транспонирование в хранимой процедуре делать не стоит. Проще всего перемещать данные на клиент обычным SQL-запросом с "вертикальным" набором. А потом разворачивать его в событии AfterOpen в TStringGrid. Разумеется, если не требуется редактирование набора.
Если же требуется редактирование, то я бы не решился вообще отклоняться от классики. Обычно юзеру проще работать с вертикальным скроллингом, чем с горизонтальным. Особенно надо учитывать, что есть юзеры с разрешением экрана 600x800 да еще любители "крупного" системного шрифта (120 dpi).
Для небольших наборов, если мне нужно бывает решать такую задачу я действую еще проще - использую дополнительную таблицу в памяти. В палитре RX DB Aware есть такая неплохая таблица. Перекачиваешь набор в эту таблицу, транспонируя, как тебе угодно. Потом данные можно редактировать и как угодно отсылать обратно в базу. Это самый простой способ и наиболее надежный. Плюс можно вообще закрыть транзакцию и разорвать связь с сервером, если хочется. Данные в таблице в памяти никуда не денутся... А потом опять оживить транзакции и запомнить изменения, когда нужно. И работают таблицы в памяти очень "гладко".
Вообще чисто методологически, пожалуй правильнее всего именно применять таблицы в памяти. Открыл запрос, перекачал в таблицу в памяти, закрыл запрос. А органы управления (сетки и т.п.) пусть будут классическими. Преобразование формы представления данных должно происходить на уровне DataSet-ов, а не на уровне DataAware контролов. Но это ИМХО, конечно.
← →
uw (2004-01-09 16:29) [15]>kaif © (09.01.04 02:47) [14]
>Если же требуется редактирование
Да, редактирование как раз и нужно. Пришлось написать довольно пространную SP, т.к. грид хоть и небольшой (в среднем - 4 * 6), но работает с пятью таблицами. NXDBGrids очень хорошо подошел. Несколько диковато, правда, сверху грида выглядит указатель на курсор, но после того, как я его прикрыл панелью, все стало красиво. А главное – выглядит так, как к этому привык пользователь, работая с бумажными документами.
← →
jack128 (2004-01-09 17:18) [16]
> Преобразование формы представления данных должно происходить
> на уровне DataSet-ов, а не на уровне DataAware контролов
ЭЭЭ. А можно прояснить? Я всегда думал, что Dataset это - универсальный способ ДОСТУПА к данным, а уж визуальным представлением как раз таки data controls и должны заниматься?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c