Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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;
пробовала использавать функции:
но это не правильно .... а как исправить уже не знаю (чесно говоря запуталась )

Приложение:
  1. function TForm9.dateconv(aDate: TDate): string;
  2. {
  3.  
  4. }
  5. var
  6. dtf:TFormatSettings;
  7. begin
  8. dtf.DateSeparator:='-';
  9. dtf.ShortDateFormat:='yyyy-mm-dd';
  10. Result:=DateToStr(aDate,dtf);
  11. end;
  12.  
  13.  
  14.  
  15. function TForm9.GetMonthNameRU(aDate: TDate): string;
  16. {
  17.  
  18. }
  19. var
  20. monnum:Integer;
  21. begin
  22. monnum:=MonthOfTheYear(aDate);
  23. case monnum of
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. end; //of case
  37. end;
  38.  


Танюшка Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Танюшка (статус: Посетитель)
Вопрос отправлен: 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]:

спасибо большое буду разбираться...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.02 сек.