Напиши поподробнее, что за запросы и сколько записей они возвращают. Или запросы возвращают какие-либо агрегирующие характеристики? И пробовал ли ты сделать объединение запросов?
Напиши поподробнее, что за запросы и сколько записей они возвращают. Или запросы возвращают какие-либо агрегирующие характеристики? И пробовал ли ты сделать объединение запросов?
select COUNT(*) from pWorker pw, pWorkerAdd pwAdd where (pw.id=pwAdd.WorkerId and pwAdd.SeniorityBr<=DATEADD(yyyy,-1, 2)) and pwAdd.SeniorityBr>DATEADD(yyyy,-3, 3)
такой вот запрос
Объединение пробовал, и у меня выводило инфу о числе людей с каждой категории, но потом я понял, что с первымстолбцом будет гемор, поэтому я решил просто поставить 16 TfrMemoView и в один столбец забить текст первого столбца, а во второй выводить результаты запросов.
До 1 года - 30
От 1 до 3 лет - 25
От 3 до 5 лет - 31
От 5 до 10 лет - 84
От 10 до 15 лет - 49
От 15 до 20 лет - 47
От 20 до 25 лет - 46
Свыше 25 лет -
Не совсем понял, почему с первым столбцом "гемор"? ) По-моему ты нормально решил проблему.
Хотя можно написать такой скриптик в том frMemoView, в котором планируешь выводить текст типа "от "лет" до "лет"":
if [LINE#]= 1 then
Range:= 'До 1 года';
if [LINE#]= 2 then
Range:= 'От 1 до 3 лет';
if [LINE#]= 3 then
Range:= 'От 3 до 5 лет';
if [LINE#]= 4 then
Range:= 'От 5 до 10 лет';
if [LINE#]= 5 then
Range:= 'От 10 до 15 лет';
if [LINE#]= 6 then
Range:= 'От 15 до 20 лет';
if [LINE#]= 7 then
Range:= 'От 20 до 25 лет';
if [LINE#]= 8 then
Range:= 'Свыше 25 лет';
Ну, или покрасивее:
case [LINE#] of
1: Range:= 'До 1 года';
2: Range:= 'От 1 до 3 лет';
3: Range:= 'От 3 до 5 лет';
4: Range:= 'От 5 до 10 лет;
5: Range:= 'От 10 до 15 лет';
6: Range:= 'От 15 до 20 лет';
7: Range:= 'От 20 до 25 лет';
8: Range:= 'Свыше 25 лет';
end;
Построй свой запрос следующим образом:
select COUNT(*) as result from pWorker pw, pWorkerAdd pwAdd where (pw.id=pwAdd.WorkerId and pwAdd.SeniorityBr<=DATEADD(yyyy,-1,2)) and pwAdd.SeniorityBr>DATEADD(yyyy,-3,3)
Потом создай TDataSet или TQuery, как уж больше нравится и выполняй свои запросы через него один за другим.
А результаты передавай в отчет например таким образом:
Не согласен с такой схемой отчета абсолютно. Аналогичную задачу я решил так: ОДИН запрос, который возвращает возраст. Дальше в МастерДате нулевой высоты считаються люди по возрастам, и в РепортСуммари выводятся В СТРОКУ (зачем колонки?).
Зачем все эти сложности? По моему чем меньше объектов используется тем лучше. При такой схеме отчета 1 запрос, 3 секции и 7 строк кода.
В редакторе (двойной щелчок по объекту или правой кнопкой мыши вызвать меню и выбрать пункт Редактор) ставим галку там где "Скрипт", в появившемся окошечке вписываем текст скрипта (внутри блока begin end). При этом в самом мемо должно быть вписано [Range], так как это параметр, значение которого меняется в скрипте.
Комментарии
такой вот запрос
Объединение пробовал, и у меня выводило инфу о числе людей с каждой категории, но потом я понял, что с первымстолбцом будет гемор, поэтому я решил просто поставить 16 TfrMemoView и в один столбец забить текст первого столбца, а во второй выводить результаты запросов.
До 1 года - 30
От 1 до 3 лет - 25
От 3 до 5 лет - 31
От 5 до 10 лет - 84
От 10 до 15 лет - 49
От 15 до 20 лет - 47
От 20 до 25 лет - 46
Свыше 25 лет -
Хотя можно написать такой скриптик в том frMemoView, в котором планируешь выводить текст типа "от "лет" до "лет"":
Ну, или покрасивее:
Тогда не надо будет лепить 16 frMemoView.
select COUNT(*) as result from pWorker pw, pWorkerAdd pwAdd where (pw.id=pwAdd.WorkerId and pwAdd.SeniorityBr<=DATEADD(yyyy,-1,2)) and pwAdd.SeniorityBr>DATEADD(yyyy,-3,3)
Потом создай TDataSet или TQuery, как уж больше нравится и выполняй свои запросы через него один за другим.
А результаты передавай в отчет например таким образом: где Result1, Result2, ... - переменные в отчете.
Выполнил запрос, сохранил значение, выполнил следующий и т.д. Потом делаешь:
И все:)
Зачем все эти сложности? По моему чем меньше объектов используется тем лучше. При такой схеме отчета 1 запрос, 3 секции и 7 строк кода.