Вопрос по работе в потоках

отредактировано 06:35 Раздел: FastReport 4.0
Win2003, Delphi7, FR4.6, ODAC

Есть такой код
  TUnLoadThread = class(TThread)
  ......
procedure TUnLoadThread.Execute;
var
  FSession: TOraSession;
  FQuery_exe: TOraQuery;//для выполнения запросов на выборку
  FQuery1: TOraQuery;//вспомогательный запрос
  FQuery_SQL: TOraQuery;//для выполнения отчета
  FDataSet: TOraDataset;//для выполнения процедур

begin
... подготовка запроса
    Log(Log, LogFileName, 'Процедура выгрузки в файл FR.'+' Шаблон -'+FPatternName);
    MakeFastReport(FFileName, FPatternName, FQuery_SQL);
    Log(Log, LogFileName, 'Процедура выгрузки в файл FR закончена');
end;


///сама выгрузка
procedure TUnLoadThread.MakeFastReport(FileName: string; PatternName:string; Query: TOraQuery);
var
  frxDS: TfrxDBDataset;
  frxRep: TfrxReport;
begin
  frxDS:=TfrxDBDataset.create(nil);
  frxDS.Name:='frxDS';
  frxDS.DataSet:=Query;
  frxRep:=TfrxReport.create(nil);
  frxRep.EngineOptions.EnableThreadSafe := True;
  frxRep.EngineOptions.ReportThread := Self;
  frxRep.EngineOptions.SilentMode := True;
  frxRep.DataSet:=frxDS;
  frxRep.DataSetName:='frxDS';
  frxRep.OnGetValue:=frxGetValue;
  frxRep.Report.DataSet:=frxDS;
  try
    if frxRep.LoadFromFile(PatternName) then
      begin
        try
          if frxRep.PrepareReport then
            begin
              frxRep.PreviewPages.SaveToFile(FileName);
              Log(log,LogFileName, 'Запрос сохранен в файл - '+FileName);
            end
          else
            begin
              Log(log,LogFileName, 'Ошибка при построении отчета в FR. Шаблон -'+PatternName);
            end;
        except
          on E:Exception do
            begin
              Log(log,LogFileName, 'Ошибка - '+E.Message);
            end;
        end;
      end
    else
      begin
        LogUnload(log,LogFileName, 'Не найден шаблон - '+PatternName);
      end;
  finally
    FreeAndNil(frxRep);
    FreeAndNil(frxDS);
  end;
end;

Теперь собственно проблема. Когда запросы выполняются в разные интервалы времени проблем нет вообще, но как только интервалы пересекаются, сразу начинаются приколы
Прочитал вот это
сначала подумал оно, добавил в код.
Но все тоже самое
Вот куски лога
написал:
Запрос выполнен -- 25/09/2009 05:02:17
Процедура выгрузки в файл FR. Шаблон -S:\apps\cnprogs\armUnload\pattern\DOC_146_14.fr3 -- 25/09/2009 05:02:17
Запрос сохранен в файл - S:\apps\cnprogs\armUnload\SEND\71\DOC_146_14_RUSTRANSUG_20090924.fp3 -- 25/09/2009 05:02:18
Процедура выгрузки в файл FR закончена -- 25/09/2009 05:02:18
написал:
Запрос выполнен -- 25/09/2009 05:02:17
Процедура выгрузки в файл FR. Шаблон -S:\apps\cnprogs\armUnload\pattern\DOC_146_14.fr3 -- 25/09/2009 05:02:17
Запрос сохранен в файл - S:\apps\cnprogs\armUnload\SEND\71\DOC_146_14_FSG_20090924.fp3 -- 25/09/2009 05:02:18
Процедура выгрузки в файл FR закончена -- 25/09/2009 05:02:18

Но прикол в том что файлы DOC_146_14_FSG_20090924.fp3 и DOC_146_14_RUSTRANSUG_20090924.fp3 содержат одинаковую информацию
Это в данном случае. Вчера например было что то типа вот такого
написал:
Запрос выполнен -- 24/09/2009 05:02:17
Процедура выгрузки в файл FR. Шаблон -S:\apps\cnprogs\armUnload\pattern\DOC_146_14.fr3 -- 24/09/2009 05:02:17
Запрос сохранен в файл - S:\apps\cnprogs\armUnload\SEND\71\DOC_146_14_RUSTRANSUG_20090923.fp3 -- 24/09/2009 05:02:19
Процедура выгрузки в файл FR закончена -- 24/09/2009 05:02:19
написал:
Запрос выполнен -- 24/09/2009 05:02:10
Процедура выгрузки в файл FR. Шаблон -S:\apps\cnprogs\armUnload\pattern\DOC_146_14.fr3 -- 24/09/2009 05:02:11
Запрос сохранен в файл - S:\apps\cnprogs\armUnload\SEND\71\DOC_146_14_FSG_20090923.fp3 -- 24/09/2009 05:02:27
Процедура выгрузки в файл FR закончена -- 24/09/2009 05:02:27

Файл содержал свою информацию DOC_146_14_FSG_20090923.fp3. Файл DOC_146_14_RUSTRANSUG_20090923.fp3 содержал примерно половину информации из файла DOC_146_14_FSG_20090923.fp3.

Вот такая вот проблема.
Какие могут быть идеи?
Мне тут ребята говорят что прикол в том что я вызываю поток вот таким макаром
TUnLoadThread.Create(params(........));
а не вот так
var
 T1: TUnLoadThread;
......
  T1:=TUnLoadThread.Create(params(........));
Но что-то я сомневаюсь что прикол в этом.



Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.