Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1228136694
Matveih1
2008-12-01 16:04
2009.01.18
Outlook


2-1228221610
givi
2008-12-02 15:40
2009.01.18
Имя ПК


1-1205931856
IntruderLab
2008-03-19 16:04
2009.01.18
Вопрос по чеклисту


2-1228255215
Te
2008-12-03 01:00
2009.01.18
Работа с классом


8-1189531969
Dmitry_12_08_73
2007-09-11 21:32
2009.01.18
Перекодировка русских букв в URL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский