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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
3-69219
bkv
2002-11-01 16:41
2002.11.21
Навигация по отфильтрованной таблице большого размера


3-69107
kandid
2002-11-02 14:12
2002.11.21
Откат MsSql server


1-69277
neXt
2002-11-11 14:50
2002.11.21
Справка html -> chm


7-69606
DMdeveloper
2002-09-14 18:57
2002.11.21
Работа с USB устройством.


4-69615
vidiv
2002-10-02 09:46
2002.11.21
Как сделать