C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
отобразить данные в табличном виде, незаню как??? help!!!
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

Вернуться в Работа с базами данных в C++Builder