Форум: "Базы";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];
ВнизВывод сведений из запроса в компонент 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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c