Вопрос по работе в потоках
Win2003, Delphi7, FR4.6, ODAC
Есть такой код
Теперь собственно проблема. Когда запросы выполняются в разные интервалы времени проблем нет вообще, но как только интервалы пересекаются, сразу начинаются приколы
Прочитал вот это
сначала подумал оно, добавил в код.
Но все тоже самое
Вот куски лога
Но прикол в том что файлы DOC_146_14_FSG_20090924.fp3 и DOC_146_14_RUSTRANSUG_20090924.fp3 содержат одинаковую информацию
Это в данном случае. Вчера например было что то типа вот такого
Файл содержал свою информацию DOC_146_14_FSG_20090923.fp3. Файл DOC_146_14_RUSTRANSUG_20090923.fp3 содержал примерно половину информации из файла DOC_146_14_FSG_20090923.fp3.
Вот такая вот проблема.
Какие могут быть идеи?
Мне тут ребята говорят что прикол в том что я вызываю поток вот таким макаром
Есть такой код
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(........));
Но что-то я сомневаюсь что прикол в этом.