admin_007 |
Отправлено: 11.08.2006, 13:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 1
|
У меня есть в БД список объектов (номер объекта, наименование) допустим штук 200-300...
Мне нужно отобразить на экране только номера объектов в таличном виде:
вот так:
001 007 013
002 008 014 ....
003 009 015 ....
004 010 ....
005 011
006 012
(неважно сколько их)
если я использую DBGrid он мне сделает все одним столбцом, а мне надо в тfбличном (в матричном виде)
С помощью какого компонента мне это сделать?
p.s.
Конечно можно с помощью TStringGrid, но тогда пропадает связь с БД (InterBase)
Присоединить изображение
|
|
avc* |
Отправлено: 11.08.2006, 14:49 |
|
Не зарегистрирован
|
Вариант1: запросом преобразовать к тексту и показывать одну больщую клетку
Вариант2: таки заюзать StringGrid. Связь останется на месте, просто придется поработать руками.
Вариант3: изменить постановку задачи (самое разумное)
Да, еще
Вариант4: Написать запрос, котрый в поле 1 соберет коды от 1 до 6, в поле 2 от 7 до 12 ... и тогда использовать DBGrid
В любом случае набор данных и средство его отображения — grid привыкли иметь дело с бесконечным числом строк и заранее известным числом столбцов. Делайте выводы |
|
** admin_007 |
Отправлено: 11.08.2006, 18:19 |
|
Не зарегистрирован
|
Меня устраивает 4 Вариант.
Вопрос теперь как мне это сдлеать, если можно по подробнее:)
Спасибо! |
|
AVC |
Отправлено: 14.08.2006, 16:43 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Типа так (синтаксис зависит от сервера)
CODE |
Select t1.X, t2.X, t3.X, t4.X
From
(Select mod(X, 6) as nr, X From pivot Where X between 1 and 6) t1
,(Select mod(X, 6) as nr, X From pivot Where X between 7 and 12) t2
,(Select mod(X, 6) as nr, X From pivot Where X between 13 and 18) t3
,(Select mod(X, 6) as nr, X From pivot Where X between 19 and 20) t4
Where 1 = 1
and t2.nr = t1.nr
and t3.nr = t1.nr
and t4.nr (+) = t1.nr
Order by t1.X
|
Результат
CODE |
X X_1 X_2 X_3
1 7 13 19
2 8 14 20
3 9 15
4 10 16
5 11 17
6 12 18
|
Отредактировано AVC — 14/08/2006, 15:46 |
|
|