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

Вниз

ADOQuery + compute   Найти похожие ветки 

 
vic ©   (2004-08-06 13:39) [0]

Вопрос следущий:
В QA и Profiler проверяю следующий запрос:

select raion,sum_kredit
from plats
where zachis_data between "12.07.2004" and "29.07.2004"
order by raion
compute sum(sum_kredit) by raion
compute sum(sum_kredit)

Выдает то, что надо, т.е. например в QA:

raion                                    sum_kredit                                            
---------------------------------------- -------------
a1                                       NULL
a1           45.0

                                        sum
                                        ==============
                                        45.0

raion                                    sum_kredit                                            
---------------------------------------- ---------------
a2                                       NULL
a2                                       360.0
a2                                       720.0

                                        sum
                                        ===============
                                        1080.0

...
                                        sum
                                        ================
                                        52912.3199999999

т.е. итоги по каждому району, и итог в целом.
В Profiler то же самое.
Но если этот запрос занести в ADOQuery, то в DBGrid отображается только:

raion                                    sum_kredit                                            
---------------------------------------- -------------
a1                                       NULL
a1           45.0

Если занести:

select raion,sum_kredit
from plats
where zachis_data between "12.07.2004" and "29.07.2004"
order by raion
compute sum(sum_kredit) by raion

то, результат тот же, т.е. для 1 района (?) и без итогов.
Если занести:

select raion,sum_kredit
from plats
where zachis_data between "12.07.2004" and "29.07.2004"
order by raion
compute sum(sum_kredit)

то результат:

raion                                    sum_kredit                                            
---------------------------------------- -------------
a1                                       NULL
a1           45.0
a2                                       NULL
a2                                       360.0
a2                                       720.0

В чем дело? Почему не отображаются итоговые суммы?

Кстати в MSSQL VIEW с таким запросом именно на compute
ругается. Может синтаксис там другой?
Повторюсь - в QA и Profiler все нормально.


 
Ega23 ©   (2004-08-06 13:42) [1]

А чего же ты хотел?

The summary values generated by COMPUTE appear as separate result sets in the query results.


 
vic ©   (2004-08-06 13:54) [2]

>Ega23 ©  (06.08.04 13:42) [1]

А чего же ты хотел?

The summary values generated by COMPUTE appear as separate result sets in the query results.

А откуда их взять? И есть ли возможность отобразить их в гриде?


 
Ega23 ©   (2004-08-06 14:02) [3]

Compute из запроса убери. Считай его после открытия запроса.


 
vic ©   (2004-08-06 14:10) [4]

>Ega23 ©  (06.08.04 14:02) [3]

>Compute из запроса убери.

Допустим

>Считай его после открытия запроса.

Откуда считать?


 
Ega23 ©   (2004-08-06 14:14) [5]

ну вот ты открыл запрос, ты же можешь по всем полям пробежать и посчитать сумму.

With SomeDataSet do
 begin
  DisableControls;
  Sum:=0.0;
  First;
  While not Eof do Sum:=Sum+FieldByName(Твоё_Поле).asFloat;
  EnableControls;
 end;


 
vic ©   (2004-08-06 14:22) [6]

>Ega23 ©  (06.08.04 14:14) [5]

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

зы

>А чего же ты хотел?
>ну вот ты открыл запрос ...
Я женского рода вообще-то.


 
sniknik ©   (2004-08-06 14:23) [7]

там будет дополнительный рекордсет,
Recordset:= Recordset.NextRecordset(RecordsAffected);
в нем и смотри.

> Кстати в MSSQL VIEW с таким запросом именно на compute
> ругается. Может синтаксис там другой?
как? он тебе наверное и говорит что не предназначен просматривать мультирекордсеты.


 
Johnmen ©   (2004-08-06 14:24) [8]

>Ega23 ©   (06.08.04 14:14) [5]

Как сказал АП, это тренировка нажимания Alt-Ctrl-Del
:)


 
Ega23 ©   (2004-08-06 14:38) [9]

Johnmen ©   (06.08.04 14:24) [8]

:о)
Блин, каждый божий раз Next забываю. Постоянно!  :о)


 
vic ©   (2004-08-06 15:02) [10]

>sniknik ©  (06.08.04 14:23) [7]

там будет дополнительный рекордсет,
Recordset:= Recordset.NextRecordset(RecordsAffected);
в нем и смотри.

где - там?
не могу найти, честно говоря.
ADOQuery1.Recordset.RecordCount
выдает 50, а не 78, если считать все строки с итогами
(78 row(s) affected) - в QA


 
sniknik ©   (2004-08-06 15:06) [11]

> где - там?
в текущем (если он мульти), т.е.
ADOQuery1.Recordset:= ADOQuery1.Recordset.NextRecordset(RecordsAffected);
даст следующий, или ощибку если он один/последний.


 
vic ©   (2004-08-06 15:31) [12]

>sniknik ©  (06.08.04 15:06) [11]

>ADOQuery1.Recordset:= ADOQuery1.Recordset.NextRecordset(RecordsAffected);

что за RecordsAffected, имеешь в виду ADOQuery1.RowsAffected?

пишет - несоответсвие типов.


 
sniknik ©   (2004-08-06 15:44) [13]

а..., савсем забыл
NextRecordset + F1 ;о))

> что за RecordsAffected,
переменная
RecordsAffected is the number of rows in the returned recordset.

> имеешь в виду ADOQuery1.RowsAffected?
с чего взял?

там два варианта, если так как у меня показано делать то это вариант (тип такой :), по другому интеджер.



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

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

Наверх




Память: 0.51 MB
Время: 0.041 c
14-1091797886
Kerk
2004-08-06 17:11
2004.08.29
Виртуальное око старшего брата.


14-1092037841
Grinder
2004-08-09 11:50
2004.08.29
Кладовка


1-1092283960
Fynjy
2004-08-12 08:12
2004.08.29
Изменение высоты Combobox а


1-1092389307
Strimer
2004-08-13 13:28
2004.08.29
Пустая дата в DateTimePicker


1-1092222808
Боян Георгиев
2004-08-11 15:13
2004.08.29
Вопрос о TJPEGImage