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

Вниз

Группировка. Найти сумму вычисляемых полей.   Найти похожие ветки 

 
Vic111   (2006-05-16 10:57) [0]

Уважаемые Мастера, юпомогите советом.

Есть запрос из нескольких таблиц, на основании данных выборки рассчитываются данные вычисляемых полей. Как мне можно получить сумму значений, полученных в выч. поле, как если бы была сделана группировка по одному из полей запроса (CIKL_P).

Текст запроса:
SELECT Izdelia.masa_zag, Izdelia.cena_zag, Izdelia.masa_ot, Izdelia.cena_mat, [2Sotrudniki].FIO, [1Profesii].Oplata, Tehnologii.t, Oborudovanie.Amortizacia, Oborudovanie.rashod_exp, Izdelia.proch_rash
FROM Tehnologii INNER JOIN (Oborudovanie INNER JOIN (Izdelia INNER JOIN ((1Profesii INNER JOIN 2Sotrudniki ON [1Profesii].N = [2Sotrudniki].Doljnost) INNER JOIN CIKL_Proizv ON [2Sotrudniki].N = CIKL_Proizv.Rabotn) ON Izdelia.N = CIKL_Proizv.CIKL_P) ON Oborudovanie.N = CIKL_Proizv.Oborud) ON Tehnologii.N = CIKL_Proizv.Tehnolog

Заранее спасибо.


 
Sergey13 ©   (2006-05-16 11:03) [1]

2Vic111   (16.05.06 10:57)
1.Циклом пробегись по набору и просуммируй вычисляемые поля.
2.Переделай запрос и введи вычисления в него.


 
Vic111   (2006-05-16 11:36) [2]

Высмыкнул такой кусочек кода

function TSebest_Form.SumField(const fieldName: String): real;
var
fld: TField;
bm: TBookmark;
begin
result := 0;
ADODataSet_Sebest.DisableControls;
bm := ADODataSet_Sebest.GetBookmark;
fld := ADODataSet_Sebest.FieldByName(fieldName);
ADODataSet_Sebest.first;
while not ADODataSet_Sebest.eof do
begin
 result := result + fld.AsFloat;
 ADODataSet_Sebest.next;
end;
ADODataSet_Sebest.GotoBookmark(bm);
ADODataSet_Sebest.EnableControls;
label1.Caption:=FloatToStr(result);
end;

но если ставлю его в AfterScroll (чтобы отслеживать данные конкретной детали) то вылетает переполнение стека. Куда его можно запихнуть?


 
Sergey13 ©   (2006-05-16 11:45) [3]

>Куда его можно запихнуть?
Гусары, молчать!!!! 8-)

2 [2] Vic111   (16.05.06 11:36)
>но если ставлю его в AfterScroll
В AfterScroll чего?


 
ANB ©   (2006-05-16 12:21) [4]


> Vic111   (16.05.06 10:57)

Аксесс подзапросы в селектовой части кушает ?


 
MsGuns ©   (2006-05-16 12:33) [5]

Чей-то не узрел в сабже вычисляемых полей.

А проблемка решается так:

Основной запрос, возвращающий вычисляемые поля:

SELECT P.skladid, P.prodid, P.prodname, P.cost, P.quont, P.cost*P.quont AS summ
 FROM Production P

Для получения общей суммы надо выполнить другой запрос, получамый из первого:

SELECT A.skladid, SUM(A.summ) FROM
   (SELECT P.prodid, P.prodname, P.cost, P.quont, P.cost*P.quont AS summ
      FROM Production P) A
  GROUP BY A.skladid

Первый НД отображается в сетке (типа просмотр картотек складов), из второго данные забираются в отображаемые контролы-итоги.

Для достоверности результатов оба запроса надо выполнять в контексте одной транзакции.


 
Vic111   (2006-05-16 12:53) [6]

В  AfterScroll DataSet-а, в нем же создаю вычисляемые поля.

Спасибо, ВСЕМ за подсказки, сейчас проверю.


 
Sergey13 ©   (2006-05-16 12:55) [7]

2[6] Vic111   (16.05.06 12:53)
А подумать? На переход на следующую строку вешать переход по всем строкам.


 
Vic111   (2006-05-16 16:43) [8]

Торможу!
Бывает!
Частенько!
;-)

Запрос перестроить не получается :-(, там данные из 6 табл.

А насколько неправильно будет создать 2-й DS и сделать:
ADODataSet1.Recordset:=ADODataSet_Sebest.Recordset;

и затем в зависимости от положения в 1-м - бегать по 2-му и искать сумму?



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

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

Наверх





Память: 0.46 MB
Время: 0.01 c
3-1147454543
skichyp
2006-05-12 21:22
2006.07.16
не могу законнектиться с локального


15-1150290399
Piter
2006-06-14 17:06
2006.07.16
Чертежи теплообменных аппаратов


15-1150356104
Yeg
2006-06-15 11:21
2006.07.16
Хостинг


2-1151675590
Mr tray
2006-06-30 17:53
2006.07.16
ожидание консольным приложением нажатия символьной клавиши


3-1147780912
novill
2006-05-16 16:01
2006.07.16
Как очистить строку от лидирующих/завершающих непечатных символов





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