|
Вопрос # 1 911/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
подскажите ,пожалусто , можно ли выполнить следующий запрос, чтобы пр выводе в QR даты разбивались в группы по месяцам .... примерно так:
т.е. например выборка с декабря по февраль:
на выходе:
Декабрь
01.12.гггг
02.12.гггг
....
Январь
01.01.гггг
02.01.гггг
....
Февраль
01.02.гггг
о2.о2.гггг
.....
т.е. при смене месяца писалося название нового месяца как подзаголовак
Запрос на выборку у меня :
tex:='select Zurnal.DataPost as data,Zurnal.fio as fio,Zurnal.Ident,Zurnal.Soderganie,RegistraKartochka.RezRassmObras from Zurnal,RegistraKartochka where (Zurnal.PorNomer = RegistraKartochka.PorNomer) and (Zurnal.DataPost>= '+s1+') and (Zurnal.DataPost<= '+s2+')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=tex;
ADOQuery1.Open;
пробовала использавать функции:
но это не правильно .... а как исправить уже не знаю (чесно говоря запуталась )
Приложение: Переключить в обычный режим- function TForm9.dateconv(aDate: TDate): string;
- {
-
- }
- var
- dtf:TFormatSettings;
- begin
- dtf.DateSeparator:='-';
- dtf.ShortDateFormat:='yyyy-mm-dd';
- Result:=DateToStr(aDate,dtf);
- end;
-
-
-
- function TForm9.GetMonthNameRU(aDate: TDate): string;
- {
-
- }
- var
- monnum:Integer;
- begin
- monnum:=MonthOfTheYear(aDate);
- case monnum of
-
-
-
-
-
-
-
-
-
-
-
-
- end; //of case
- end;
-
 |
Вопрос задала: Танюшка (статус: Посетитель)
Вопрос отправлен: 18 сентября 2008, 11:10
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, Танюшка!
Чтобы получить требуемый Вами вид результата (с подзаголовками), средств только SQL запроса недостаточно, почему - я написал в мини-форуме. Наверное, это надо Вам для формирования отчета, тогда такую группировку надо делать с помощью инструмента, который используется непосредственно для формирования отчета (Rave Report, Fast Report или что-то еще). А для того, чтобы записи были выстроены в нужном порядке, добавьте в свой запрос фразу order by 1 или order by data (второй вариант предпочтительнее).
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 18 сентября 2008, 20:03
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 10; последнее сообщение — 19 сентября 2008, 11:51; участников в обсуждении: 2.
|
Мережников Андрей (статус: Абитуриент), 18 сентября 2008, 18:45 [#1]:
Насколько важно наличие подзаголовков в таблице именно в таком виде, как указано в вопросе? Это порождает сложность в том плане, что наличие такого подзаголовка подразумевает разное число столбцов в строках? Какой SQL сервер используется?
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 06:20 [#2]:
Да, и еще - переменные s1 и s2 у Вас строковые, следовательно надо написать: QuotedStr(s1) и QuotedStr(s2). Иначе будет вылетать ошибка.
|
|
Танюшка (статус: Посетитель), 19 сентября 2008, 09:25 [#3]:
с s1 и s2 все впорядке , ошибок не вылетает... запрос проверен он работает (только выбирает нужный промежуток времени), база данных Access , для выгрузки отчетов использую QR, а где там есть такой компонент для группировки . о котором вы писали в ответе?
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 11:33 [#4]:
компонент для группировки строк отчета в QuickReport - QRGroup
|
|
Танюшка (статус: Посетитель), 19 сентября 2008, 11:38 [#5]:
и в QRGroup добавить компонент QRDBText и связать его с запросом?
а ниже добавить QRSubDetail для отображения данных или как?
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 11:41 [#6]:
у этого компонента есть свойство expression, которое указывает на выражение, которое используется для группировки. Укажите там функцию вычисления названия месяца (двойной щелчок на этом свойстве вызовет построитель выражения для группировки). При смене значения выражения, произойдет смена группы. Для каждой группы можно создать заголовок и подвал. в обоих случаях используется полоса TQRBand. в качестве заголовка группы используется TQRBand со значением свойства BandType, равным rbColumnHeader. фраза order by по полю, по которому производится группировка, в запросе для формирования отчета обязательна
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 11:43 [#7]:
Имя группы размещается на полосе QRGroup, например с помощью TQRDBText
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 11:47 [#8]:
в QRGroup, если для получения названия месяца будет использоваться функция, написанная в Delphi, используйте QRexpr. Если название месяца будет браться непосредственно из запроса, то QRDBText. После полосы заголовка группы помещается QRBand со свойством BandType, равным rbDetail. На ней помещаете колонки для вывода тела отчета.
|
|
Мережников Андрей (статус: Абитуриент), 19 сентября 2008, 11:48 [#9]:
QRSubDetail - в данном случае не нужен.
|
|
Танюшка (статус: Посетитель), 19 сентября 2008, 11:51 [#10]:
спасибо большое буду разбираться...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|