Главная страница
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.043 c
3-1091690532
RDen
2004-08-05 11:22
2004.08.29
Почему не создаётся поле?


1-1092305065
Time
2004-08-12 14:04
2004.08.29
Опять про ресурс...


3-1091474894
Dimedrol
2004-08-02 23:28
2004.08.29
Delphi -> ADO -> MSSQL


4-1089898778
Cara
2004-07-15 17:39
2004.08.29
Как узнать код символа.


3-1091546536
Ven
2004-08-03 19:22
2004.08.29
Подсчет значений в столбце таблицы