Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-2340
Nomolos
2004-01-10 23:18
2004.02.02
Какой принтер выбрать?


6-2262
crazycyborg
2003-11-24 11:41
2004.02.02
Получение имени пользователя по имени компьютера


7-2391
XHunter
2003-11-14 20:59
2004.02.02
Проблемы с Service


3-1959
KIR
2004-01-09 13:41
2004.02.02
Можно ли сложить строки в ХП IB


1-2097
scorpi
2004-01-20 08:26
2004.02.02
Версия программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский