Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

FastReport: нужен ваш совет   Найти похожие ветки 

 
Explorer ©   (2002-07-30 07:31) [0]

Здравствуйте!

Сделал документ: ReportTitle и MasterData.
Проблемка в том, что мне надо в ReportTitle вывести не повторяющиеся даты, которым соответствуют записи в MasterData.

Например, в MasterData выводятся такие строки:

1. | 15456,00 | 6523,56 | Приход | 27.07.2002
2. | 56565,00 | 456,56 | Приход | 26.07.2002
3. | 58985,00 | 4444,56 | Приход | 26.07.2002
4. | 78748,00 | 4484,56 | Приход | 26.07.2002
5. | 98292,00 | 6523,56 | Приход | 28.07.2002

A, в ReportTitle что вроде этого:

Данные за 26.07.2002, 27.07.2002, 28.07.2002

Подскажите, как мне можно это реализовать?


 
Eugene Lachinov ©   (2002-07-30 08:26) [1]

Сделать двухпроходный отчет, накапливать даты в строковой переменной.


 
Explorer ©   (2002-07-30 08:31) [2]

А можно по подробней?(не давно стал пользоваться FastReport!)


 
Eugene Lachinov ©   (2002-07-30 09:45) [3]

В Дизайнере - Файл - Параметры отчета - Делать два прохода
Свойства ReportTitle, свойство
OnBeforePrint
if not FinalPass then S := "";
Свойства MasterData, свойство
OnBeforePrint
if not FinalPass then begin
if Pos([Имя поля], S) = 0 then
S := S + [Имя поля] + ", ";
end
Там где нужно вывести даты [S]


 
Explorer ©   (2002-07-30 10:05) [4]

>Eugene Lachinov ©
Спасибо! Сейчас попробую.


 
Explorer ©   (2002-07-30 10:38) [5]

>Eugene Lachinov ©

А если, сделать тоже самое ( в ReportTitle вывести не повторяющиеся даты), только не используя MasterData?


 
Eugene Lachinov ©   (2002-07-30 10:45) [6]

У TfrReport есть полезные события, например OnBeforePrint, требуемую строку можно подготовить программно, заранее, или все хотелось бы в Дизайнере ?


 
Explorer ©   (2002-07-30 10:58) [7]

программно я сделал.

Думал, что это можно сделать в дизайнере (еще не изучил возможностей FastReport).

Еще раз, большое спасибо.


 
Explorer ©   (2002-07-30 11:34) [8]

Что-то я поспешил...
Пытался программно сделать, но... не получилось.




 
Eugene Lachinov ©   (2002-07-30 11:53) [9]

А что написал в программе ?


 
Explorer ©   (2002-07-30 12:01) [10]

Вот:

procedure TFormReports.frReportSprRoubGetValue(const ParName: String;
var ParValue: Variant);
var
s: string;
begin
S := S + QuerySpr.FieldByName("Date").AsString + ",";
if ParName = "S" then
ParValue := S;
end;


Я понимаю, что он берет только первую дату.
А вот, как сделать, чтобы перебрать все неповторяющиеся даты (а то мозгов не хватает!)?


 
Eugene Lachinov ©   (2002-07-30 12:26) [11]

procedure TFRCoreDialog.frReportBeforePrint(Memo: TStringList;
View: TfrView);
var
B, S : string;
begin
if View.Name = "MyName" then begin
with Memo do begin
BeginUpdate;
try
with Имя источника данных (от TDataSet) do begin
B := Bookmark;
try
First;
while not EOF do begin
S := FieldByName("Имя поля").DisplayText;
if Memo.IndexOf(S) = -1 then
Memo.Add(S);
Next
end
finally
if B <> "" then Bookmark := B
end
end;
Memo.Text := Memo.CommaText
finally
EndUpdate
end
end
end
end;


 
Explorer ©   (2002-07-30 13:31) [12]

Получилось!
Только, я не понял, а как расставляются запятые и кавычки?


 
Eugene Lachinov ©   (2002-07-30 13:35) [13]

Memo.Text := Memo.CommaText


 
Explorer ©   (2002-07-30 13:50) [14]

Просто, данные выводятся в таком виде:

,"24.07.2002","25.07.2002", "29.07.2002

Можно ли это справить (убрать запятую в начале и добавить кавычку в конце!) или привести к такому виду
24.07.2002, 25.07.2002, 29.07.2002 ?


 
Eugene Lachinov ©   (2002-07-30 14:09) [15]

Попробуй так:

if (S <> "") and (Memo.IndexOf(S) = -1) then
Memo.Add(S);

...
Memo.Delimiter := ",";
Memo.QuoteChar := " ";
Memo.Text := Memo.DelimitedText




 
Explorer ©   (2002-07-30 14:16) [16]

Запятые перед первой датой и последней остаются.


 
Eugene Lachinov ©   (2002-07-30 14:38) [17]

Не тогда напиши преобразование списка строк (Memo) к требуемой строке (S) и Memo.Text := S



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

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
3-35142
Loco
2002-07-21 16:02
2002.08.12
SQL


1-35307
Alibaba
2002-07-29 17:21
2002.08.12
StringGrid


7-35479
Apocalypsys
2002-04-24 18:07
2002.08.12
BIOS&Timer


4-35506
Maximus II
2002-06-06 16:55
2002.08.12
Аналог TBitMap.LoadFromFile( xxxxx )


1-35251
V.Turecky
2002-07-30 16:11
2002.08.12
ТCheckListBox