Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Вниз

QuantumGrid: еще вопрос   Найти похожие ветки 

 
koks   (2002-10-29 17:46) [0]

Уважаемые господа, помогите решить проблемку..
Ситуация такая: у меня QG, которую я использую в режиме edgoLoadAllRecords. (у меня группировки и подытоги). Для корректной работы этого режима необходимо установить KeyField - уникальное поле, которое используется для синхрпонизации между компонентом и dataset-ом.
под грид я передавал TQuery, - простой SELECT с условием выборки и сортировки. Там естейственно для каждой возщвращаемой записи возврвщвлся уникальный индекс из таблицы. Все было OK. Теперь я передаю TQuery, в котором исп. аггрегирование. (GROUP BY). Естейственно в таком запросе уникальный индекс базовой таблицы уже не возвращается. Нужно как-то его создать... но КАК!
Вычисляемое поле - ... но как его грамотно вычислить, чтобы было уникальное значение. Специфика моей таблицы такова что на основе значений полей его не подсчитаешь.. получается либо ОЧЧЧЕНЬ большое число, а если строковое значение - почему-то QG его не воспринимает и отказывается с ним работать в режиме edgoLoadAllRecords... просто тихо игнорирует и все...

Подскажите пожалуйста... Заранее спасибо


 
3JIA9I CyKA   (2002-10-29 18:04) [1]

Ку?
YourGrid->OptionsDB->edgoCanNavigation = False


 
ioSan   (2002-10-30 09:22) [2]

"KeyField - уникальное поле" обязательно для "режима edgoLoadAllRecords", т.к. по этому полю грид синхронизирует записи.
Выход - иметь в таблице ID-поле.


 
koks   (2002-10-30 09:28) [3]

2 3...СуKФ: А мне надо навигатить... !!

2 ioSan: я же написал - у меня есть уникальное ID в таблице.. Но у меня передается аггрегирущий запрос, в котором уже этого поля нет...(надеюсь по понятным причинам) Вопрос - как его сделать !!!
Поставлю вопрос еще корректнее - как сделать для TQuery вычисляемое поле, которое было бы уникальным для каждой записи. вариант построения его на основе значений полей у меня не получился (см выше..)


 
3JIA9I CyKA   (2002-10-30 09:31) [4]

2kokЫ
Блин! Ты хелп к этому гриду читал? Почитай - полезно.


 
ioSan   (2002-10-30 09:32) [5]

>> Но у меня передается аггрегирущий запрос, в котором уже этого поля нет...(надеюсь по понятным причинам)

Причина непонятна.

>> как сделать для TQuery вычисляемое поле, которое было бы уникальным для каждой записи. вариант построения его на основе значений полей у меня не получился

QG непоймет что Вы от него хотите


 
koks   (2002-10-30 10:39) [6]

3JIA9I CyKA : читал... и понял, что моя проблема связана скорее не с гридом, а с запросом, который я туда передаю.. вот поэтому я и задал вопрос.

ioSan QG непоймет что Вы от него хотите
Почему ? насколько я понял, этому гриду нужен набор данных с ключевым полем. Если будет ключевое поле - все будет OK. Вопрос в том, как мне это поле получить для моего аггрегирующего запроса. Это уже вопрос не про QuantumGrid а про методологию работы с TQuery вообще.


 
ioSan   (2002-10-30 11:06) [7]

В случае с {как сделать для TQuery вычисляемое поле} непоймет.

Попробуйте "KeyField"= "Главная таблица от которой все завязано".ID


 
ioSan   (2002-10-30 11:12) [8]

Переделка - ioSan © (30.10.02 11:06)

Попробуйте "KeyField"="Главная таблица от которой все завязано".ID
Плюс из всех таблиц которые привязаны, все ID - тоже вставьте запрос.
Должно работать.

Если нет, то опишите код запроса и упращенную структуру таблиц.(мне это интересно, я тоже пользуюсь QG), попробуем потом.


 
koks   (2002-10-30 11:13) [9]

Нет это точно не то - вынесу вопрос в отдельную ветку


 
ioSan   (2002-10-30 11:31) [10]

Ну как нето?

Таблица T1
Поля T1.ID1, T1.ID2, T1.NAME1
Таблица T2
Поля T2.ID2, T2.ID3
Таблица T3
Поля T3.ID3, T3.NAME3

SELECT T1.ID1, T1.NAME1, T2.ID2, T3.ID3, T3.NAME3
FROM T1, T2, T3
WHERE T1.ID2=T2.ID2 AND T2.ID3=T3.ID3
GROUP BY T3.NAME3
ORDER BY T1.NAME1

"KeyField"=T1.ID1
Если это нето то Off.


 
koks   (2002-10-30 13:28) [11]

у меня так (упрощенно):
Таблица T1
поля: T1.ID1 T1.CH1 T1.CH2 T1.CH3 T1.MASSA T1.PRICE

Запрос:
SELECT T1.CH1, T1.CH2, T.CH3, SUM(T1.MASSA) AS SMASSA,
SUM(T1.PRICE) AS SPRICE
FROM T1
WHERE (.... большое условие ....)
GROUP BY T.CH1, T.CH2, T.CH3
ORDER BY T.CH1, T.CH2, T.CH3;

всунуть сюда T1.ID никак низя...


 
ioSan   (2002-10-30 14:18) [12]

koks © (30.10.02 13:28)
В этом варианте - Нельзя.

>> Теперь я передаю TQuery, в котором исп. аггрегирование. (GROUP BY).
С самого начала предполажил, что аггрегирование произойдет в "прицепной" таблице, в мастер-таблице будет ID. Разные подходы.

У меня бы это выгледело вот так:
Таблица T1
поля: T1.ID1 T1.CH1_1 T1.CH1_2 T1.CH1_3
Таблица T2
поля: T2.ID2 T2.ID1 T2.MASSA T2.PRICE

Запрос:
SELECT T1.ID1, T1.CH1_1, T1.CH1_2, T1.CH1_3,
SUM(T2.MASSA) AS SMASSA,
SUM(T2.PRICE) AS SPRICE
FROM T1, T2
WHERE T1.ID1=T2.ID1 AND (.... большое условие ....)
GROUP BY T2.ID1
ORDER BY T2.ID1;

Сдаюсь!
Еслиб сразу наглядный пример...

С уважением.


 
mvg_first   (2002-10-30 15:09) [13]

А если через временную таблицу? Которую заполнять из запроса с агрегированием. А уже временную таблицу отрисовывать в гриде. Ведь редактирование данных не подразумевается, иначе у тебя был бы уникальный идентификатор. Можно ведь даже хранимую процедуру написать которая будет выполнять все работу и возвращать Select * from #groupTemp.


 
ioSan   (2002-10-30 15:12) [14]

Если так:
SELECT T1.CH1, T1.CH2, T.CH3, SUM(T1.MASSA) AS SMASSA,
SUM(T1.PRICE) AS SPRICE,
MAX(T1.ID1) AS SID1
FROM T1
WHERE (.... большое условие ....)
GROUP BY T.CH1, T.CH2, T.CH3
ORDER BY T.CH1, T.CH2, T.CH3;

SID1 = ID одной записи из группы


 
koks   (2002-10-30 15:58) [15]

2: mvg_first: спасибо, да, это выход, но мне хотелось этого избежать... А хранимые процедуры нихт т.к у меня BDE -> Dbase

2 ioSan: ОГРОМНОЕ СПАСИБО - попробую, и мне кажется это есть выход
Мне такая мысль в голову не приходила.... наверно мал еще..
Попробую и доложу результаты..


 
koks   (2002-10-31 11:00) [16]

2 ioSan: ОГРОМНОЕ спасибо - все заработало.



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

Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-69359
Ciber SLasH
2002-11-13 03:30
2002.11.21
Heeeeeeeeeeeeeeeeeelp!!!!!!!


3-69214
Дмитрий
2002-10-30 08:00
2002.11.21
Blob-поле


4-69619
progger
2002-10-10 12:19
2002.11.21
Помогите с хуками...


14-69563
kingdom
2002-11-01 13:52
2002.11.21
Ищу человека! Shamsudin


3-69154
MetalFan
2002-10-31 12:40
2002.11.21
D&D из DBGrid в DBGrid





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