منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

إلى

المشكلة في ترجمة الطلب وإخراجه إلى QReport البحث عن فروع مماثلة


Andrey Pogorelov   (2001-12-02 10:49) [0]

Имеется 3 таблицы
Table1 Реестр животных
id
فيد
الفئة
--------------
id vid categoria
1 ، 1 ، 2
2 ، 1 ، 2
3 ، 2 ، 1
--------------
Table2 Виды животных
id
اسم
--------------
1, Собаки
2, Кошки
--------------
Table3 - Категории животых
id
اسم
--------------
1, Домашнее
2, Бездомное
--------------
Необходимо подсчитать кол-во животных в базе, кол-во домашних и бездомных по видам и результаты поместить в QReport
те получить в виде
Вид Домашнее Бездомное
Собаки 0 2
Кошки 1 0
به: 3
Помогите очень надо, заранее Огромное спасибо.



asafr   (2001-12-03 15:14) [1]

Берешь TQuery, обзываешь, например qr_Work. Пишешь запрос:
SELECT VID, CATHEGORY, COUNT(*) AS SUM_ FROM TABLE1
GROUP BY VID, CATHEGORY
- этот qr_Work объявляешь источником для QReport. Результат запроса:
VID CATHEGORY SUM_
1 2 2
2 1 1

В QReport in DetailBand делаешь так:
----------------------------------------
<--DetailHeader
VID Cathegory Sum_
----------------------------------------
<-- Detail Band
[QRLabel1] [QRLabel2] [QRDBText1]
----------------------------------------
QRDBText1 - связываешь с полем Sum_

В Events QRLabel1 пишешь:
procedure TForm1.QRLabel1Print(sender: TObject; var Value: String);
begin
if qr_Work.FirldByName("vid").AsInteger=1 then QRLabel1.Caption:="Собаки"
else QRLabel1.Caption:="Кошки"
end;


على التوالي
procedure TForm1.QRLabel2Print(sender: TObject; var Value: String);
begin
if qr_Work.FirldByName("cathegory").AsInteger=1
then QRLabel2.Caption:="Домашнее"
else QRLabel2.Caption:="Бездомное"
end;



Ну а ВСЕГО: - можно найти несколькими путями. Либо используй QRExpr, либо на QRDBText1Print приплюсовывай значения Sum_ каждой строчки. Только перед печатью не забывай делать Sum_:=0 - ибо тогда значения каждой распечатки будут приплюсовываться друг к другу.




Dick Gonsales   (2001-12-04 03:14) [2]

تحقيق
/* Тут в зависимости как хочешь чтобы выглядло*/
/* Вариант 1 */
SELECT T3.name, T2.name, count(T1.*)
FROM T3, T2, T1
WHERE T3.id=T1.categoria and T2.id=T1.vid
GROUP BY T3.name, T2.name
UNION
SELECT T3.name, " Итого", count(T1.*)
/* пробел дабы правильно сработал order by*/
FROM T3, T1
WHERE T3.id=T1.categoria
GROUP BY T3.name
ORDER BY T3.name
/* Категория1 Вид1 кол-во */
/* Категория1 Вид2 кол-во */
/* Категория1 Итого кол-во */
/* Категория2 Вид1 кол-во */
/* Категория1 Вид2 кол-во */
/* Категория1 Итого кол-во */

/* Вариант 2 */
SELECT T2.name, T3.name, count(T1.*)
FROM T3, T2, T1
WHERE T3.id=T1.categoria and T2.id=T1.vid
GROUP BY T2.name, T3.name
UNION
SELECT T2.name, " Итого", count(T1.*)
FROM T2, T1
WHERE T2.id=T1.vid
GROUP BY T2.name
ORDER BY T2.name
/* Вид1 Категория1 кол-во */
/* Вид1 Категория2 кол-во */
/* Вид1 Итого кол-во */
/* Вид2 Категория1 кол-во */
/* Вид2 Категория2 кол-во */
/* Вид2 Итого кол-во */



Запрос вешаешь на Report, и расписываешь поля,
а в принципе можешь воспользоваться
дельфийским мастером для генерации Report
используя выше описаный SELECT и он тебе все сделает.

Вариант который предложил asafr можно использовать
если у тебя мало категорий и видов и они не будут изменяться,
т.к. они жестко прописанны в коде. Тут это не важно.



صفحات: 1 فرع كامل

المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي









الذاكرة: 0.57 ميغابايت
الوقت: 0.024 ج
1-22096
ميخائيلوف ديمتري
2001-12-19 15:55
2002.01.08
حول TObject في الأحداث


3-21985
سكالي
2001-12-06 15:26
2002.01.08
تاريخ + الوقت دون ثوان في DBGrid


14-22407
KL
2001-11-03 00:47
2002.01.08
اختبار بيتا !!!


1-22243
Gumbert-Gumbert
2001-12-16 22:22
2002.01.08
كيف تأخذ الجذر من الدرجة الثانية في دلفي؟


1-22059
ليو ^ أحد
2001-12-19 07:24
2002.01.08
الذي عمل ل





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch أنجليزي الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский