Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.005 c
1-35258
Kran
2002-07-31 11:15
2002.08.12
Посимвольное присваивание Строк


1-35357
prorok2
2002-07-30 14:24
2002.08.12
Кодировка в Database Desktop


1-35282
TAN_K
2002-07-31 15:46
2002.08.12
Помогите начинающему в Delphi


1-35354
Sour
2002-07-30 14:22
2002.08.12
SWAP


7-35482
[ KGB ] GENERAL
2002-05-26 23:22
2002.08.12
Интересный вопрос!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский