Win 2003, Fr47, зависает сервер при экспорте БОЛЬШОГО ОТЧЕТА (прайс лист) на 33 тысячи позиций
win 2003, fr47, зависает сервер при экспорте БОЛЬШОГО ОТЧЕТА (прайс лист) на 33 тысячи позиций
(ИДЕТ НАГРУЗКА НА ХДД, ПИНГ не отвечает, терминал серверы недоступны, непосредственно с консоли в систему зайти можно но EXPLORER не стартут (экраны чёрные))
перегружается только под RESETOM
Этот же самый отчёт на 10-12 тысяч позиций работает нормально.
Отчёт представляет собой
1 бонд МАСТЕР ДАТА
1 квери ( все 33 тычячи строк)
для каждой строки выполняется следующие скрипты (общая задача отформатировать строчки от нежелательных символов)
function Replace(Str, X, Y: string): string;
var
buf1, buf2, buffer: string;
i: Integer;
begin
buf1 := '';
buf2 := Str;
Buffer := Str;
while Pos(X, buf2) > 0 do
begin
buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + 1);
buf1 := Copy(Buffer, 1, Length(Buffer) - Length(buf2)) + Y;
Delete(buf2, Pos(X, buf2), Length(X));
Buffer := buf1 + buf2;
end;
Result := Buffer;
end;
function EraseNoneedChars(str:string):string;
begin
Result:=str;
Result:=Replace(Result,'>','');
Result:=Replace(Result,'<','');
end;
function GetPictUrl(str:string): string;
begin
if trim(str)<>'' then Result:='http://www.shopv.ru/images/'+str else Result:='';
end;
Настройки репортера в дефолте
fstr.frxReport.ShowProgress:=false;
fstr.frxMailExport.ShowProgress:=false;
fstr.frxXLSExport.ShowDialog:=false;
fstr.frxXLSExport.OpenExcelAfterExport:=false;
fstr.frxXLSExport.ShowProgress:=false;
(ИДЕТ НАГРУЗКА НА ХДД, ПИНГ не отвечает, терминал серверы недоступны, непосредственно с консоли в систему зайти можно но EXPLORER не стартут (экраны чёрные))
перегружается только под RESETOM
Этот же самый отчёт на 10-12 тысяч позиций работает нормально.
Отчёт представляет собой
1 бонд МАСТЕР ДАТА
1 квери ( все 33 тычячи строк)
для каждой строки выполняется следующие скрипты (общая задача отформатировать строчки от нежелательных символов)
function Replace(Str, X, Y: string): string;
var
buf1, buf2, buffer: string;
i: Integer;
begin
buf1 := '';
buf2 := Str;
Buffer := Str;
while Pos(X, buf2) > 0 do
begin
buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + 1);
buf1 := Copy(Buffer, 1, Length(Buffer) - Length(buf2)) + Y;
Delete(buf2, Pos(X, buf2), Length(X));
Buffer := buf1 + buf2;
end;
Result := Buffer;
end;
function EraseNoneedChars(str:string):string;
begin
Result:=str;
Result:=Replace(Result,'>','');
Result:=Replace(Result,'<','');
end;
function GetPictUrl(str:string): string;
begin
if trim(str)<>'' then Result:='http://www.shopv.ru/images/'+str else Result:='';
end;
Настройки репортера в дефолте
fstr.frxReport.ShowProgress:=false;
fstr.frxMailExport.ShowProgress:=false;
fstr.frxXLSExport.ShowDialog:=false;
fstr.frxXLSExport.OpenExcelAfterExport:=false;
fstr.frxXLSExport.ShowProgress:=false;
Комментарии
где утекает память? я что то не могу понять почему 33 тысячи строк, так перегружают память
не такой уж и большой датасет то...
или перегрузка памяти идёт непосредственно при экспорте?
отчёт отъезжает только на сервере!
т.е. на другой машине с более простыми ресурсами отчёт работает нормально, это может быть связано со bpl файлами фастрипорта? (давным давно я помоему эти файлы кудал куда то в системную диру, как было написано в инструкции)
но а т.к. проект я делаю на своём локальном компьютере, я недавно обновил фр , теперь я использую ещё с версию 47, но на сервер я ставил какие то файлы от версии 30.
это может быть как то связано? может на сервере тоже что-то надо обновить?
это наверное вопрос к суппорту больше.
Так же попробуйте включить кэширование в файл TfrxReport.EngineOptions.UseFileCache := true.
Если приложение собрано с использование bpl (динамическая линковка пакетов), то проблема может быть в этом (хотя по большему счету, приложение бы просто упало, т.к. большинство интерфейсов изменились).
А вы попробуйте запротоколировать все подозрительные Pascal-модули. Например с помощью библиотеки SmartInspect http://www.gurock.com/smartinspect/ или CodeSite http://www.raize.com/DevTools/CodeSite/Default.asp. Обе библиотеки в редактор дельфи добавляют функцию, с помощью которой можно быстро по всему Pascal-исходнику расстаивть запись в лог. Обе библиотеки содержат средства для наблюдения в живую за процессами записывающими лог на удаленном компьютере.
По протоколам быстро поймете на чем происходит запинка.
Но если мне как покупателю, дали прайс-лист на 33 тыс.позиций, врятли я бы там что-то купил, ну если очень бы только приперло.
К стати. В некоторых организациях, есть правило делать твердую копию всех данных из БД. Для этого все документы все справочники и прочие данные распечатывают на бумаге. Прошивают в огромные томы, опечатывают и хранят определенное количество лет в хранилищах.
Задача печати огромных отчетов, для генератора отчета абсолютно реальная.
Ну может быть я не правильно донес идею.
Для печати огромных отчетов FR самое то, и с утечкой памяти, были у него проблемы, но насколько я знаю, они устранены. Сейчас, для интереса, сам создал отчет на 65т. строк и экспортировал в Microsoft Office Excel 2003, без проблем. Наверное, нужно смотреть железо и софт.
Речь шала о ПРАЙС-Листе, как я понимаю, он нужен покупателю или монагеру по продажам. Не тому не другому не удобен такой прайс-лист. Может быть, нужно создать 10 прайс-листов, но тематически разбитых.
Ну или этот «прайс-лист» назовите Каталогом, тогда я могу понять почему в нем 33 т.записей.
Насчет, перевода базы данных в бумажный эквивалент, IHMO идея не умная. Нам, например, хватает места только для хранения в бумажном виде только отчетности, и то в притык.
PS: Uninstall FastReport - спаси лес.