Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c