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

Вниз

Вывод сведений из запроса в компонент StringGrid   Найти похожие ветки 

 
sniknik ©   (2008-06-09 00:26) [40]

ну раз пошла такая пьянка...

пример нормального (имхо) решения (отобразить таблицы в "развернутом виде", вернее так как показано. совет в [20], два связанных, мне нравиться больше).

ну, так как движок не указан то предположим что это jet, структуру таблиц тоже придумаем сами, простенькую. такую
CREATE TABLE Region (ID INT Identity(1, 1) PRIMARY KEY, Name VarChar(50))
CREATE TABLE Organiz (ID INT Identity(1, 1) PRIMARY KEY, IDReg INT, Name VarChar(50))

связь по ID - IDReg
тогда запрос вида
SELECT ID,0 AS IDReg,Name
FROM Region
UNION
SELECT r.ID,o.IDReg," - " & o.Name
FROM Region r
INNER JOIN Organiz o ON r.ID=o.IDReg

даст структуру (в поле Name) один в один желаемой, для отображения достаточно подключить DBGrid. и не нужно никаких циклов или извратов со стринггридом (кстати ели подумать, я ж его ни разу, сколько работаю, не использовал... вредный компонент, можно выкинуть).


 
Anatoly Podgoretsky ©   (2008-06-09 11:55) [41]

> sniknik  (09.06.2008 0:26:40)  [40]

Вредно использование в качестве молотка.


 
MsGuns ©   (2008-06-09 12:34) [42]

Если автору хочется непременно показывать ДВЕ сетки: одна с организациями, а вторая с некими "операциями" (судя по всему имеются в виду "хозяйственные" операции, т.е. накладные, платежки, договора и т.д.) для КАЖДОЙ организации отдельно, то вполне достаточно два запроса - один "тянет" информацию из таблицы (справочника ?) организаций, а второй - из таблицы операций (по связке через ID организации). Оба датасета "положить" в DBGrid`ы.
При этом возможно два пути реализации выборки:
- Полный. В этом случае оба запроса выполняются только один раз и на клиент вытягивается ВСЯ информация. В этом случае для детального датасета (операции) нужно после каждого перемещения в основном датасете (организации) ставить соответстующий фильтр чтобы во второй сетке отображались только те операции, которые прошли по текущей организации.
- Динамический. Второй запрос переоткрывается всякий раз, когда в основном изменяется текущая запись (организация) и извлекает только те записи, которые относятся к текущей организации (связка по ID) - этот способ можно реализовать через связку "Мастер-детал" чтобы не заморачиваться переоткрывать запрос "вручную".
Какой именно способ выбрать - зависит от объемов данных в таблицах, мощности "клиентского" ПК и ПК сервера, пропускной способности сети и критичности к времени реакции при перемещении по сетке основного датасета на клиенте.

Перебор что первого, что второго датасета выполняется как указано в [8] с выставленным DisableControls сканируемого датасета (во избежание мерцания и вообще "тормозов")

Причем здесь стрингрид или вывод в Эксель вообще непонятно.



Страницы: 1 2 вся ветка

Текущий архив: 2009.01.18;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.016 c
2-1228747542
Lamer6666
2008-12-08 17:45
2009.01.18
Колличество выделенных записей в DBGrid


1-1205913105
Aleksandr
2008-03-19 10:51
2009.01.18
dll, получить события самого приложения


15-1226900583
mml
2008-11-17 08:43
2009.01.18
Вопрос к тем, кто читал книгу Агурова "Практика программирования


2-1228284286
Степа
2008-12-03 09:04
2009.01.18
Процессы Windows


1-1205853001
Ega23
2008-03-18 18:10
2009.01.18
Наследование фреймов - подводные камни