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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.062 c
4-1090235844
Geoji
2004-07-19 15:17
2004.08.29
Оповещатель


9-1083916006
MsShtaer
2004-05-07 11:46
2004.08.29
Помогите с выбором стиле к стратегической игре


1-1092286713
46_55_41_44
2004-08-12 08:58
2004.08.29
Кто-нибудь знает, как сохранить отчет FastReport в PDF формате?


14-1092119052
Slider007
2004-08-10 10:24
2004.08.29
Обжимка витой пары


1-1092372743
CRACKISH
2004-08-13 08:52
2004.08.29
Проверка на заполненость нескольких эдитов





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