Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

Перпендикулярный грид   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
14-2376
Undert
2004-01-07 17:16
2004.02.02
Может слишком ламерский вопрос - уже крыша едет


1-2225
Opryshok
2004-01-20 11:35
2004.02.02
Ihtmldocumen2


4-2429
Ascan
2003-11-24 14:48
2004.02.02
Perform(EM_CANPASTE, 0, 0) в TMemo


1-2062
Zilog
2004-01-19 12:30
2004.02.02
Как сделать журнал событий, типа того что в w2k?


6-2239
_san_
2003-11-27 15:42
2004.02.02
Перехват сообщения об ошибке открытия сокета.