diff --git a/baseconnection.pas b/baseconnection.pas index a2557d5..6fb85e8 100644 --- a/baseconnection.pas +++ b/baseconnection.pas @@ -87,10 +87,12 @@ constructor TBaseConnection.Create(AOwner: TComponent; ATimeOut: integer; aLogger: TLogger); begin inherited Create(true); + fConnectionID:=newID; fTimeout:=ATimeOut; fOwner := AOwner; flogger := ALogger; fProcessor:=TNIDBDM.Create(nil); + fProcessor.Name := 'NIDB_'+fConnectionID; fProcessor.logger:=aLogger; Commands:=TStringList.Create; DoneCommands:=TList.Create; @@ -101,7 +103,7 @@ begin nCommandReceived:=0; nCommandReady:=0; nErrors:=0; - fConnectionID:=newID; + end; diff --git a/cgireport.pas b/cgireport.pas index 3e1c6f8..bb6b45b 100644 --- a/cgireport.pas +++ b/cgireport.pas @@ -192,6 +192,7 @@ constructor TReportCommand.Create(ID: string; aProcesor: TNIDBDM; begin inherited Create(ID,aProcesor, aSubClass, aLogger,AUser,IDUser); fReportProcessor:=TReportDM.Create(nil); + fReportProcessor.Name := 'Report'+fProcessor.Name; fReportProcessor.NidbData := fProcessor; end; diff --git a/commandcol.pas b/commandcol.pas index 2d2bf46..8601c50 100644 --- a/commandcol.pas +++ b/commandcol.pas @@ -24,6 +24,7 @@ type fUser: integer; fUserName: string; fLogger: TLogger; + fErrors: TStrings; function getInt(keyName: string;defaultValue: integer=0): integer; function getString(keyName: string): string; public @@ -53,6 +54,7 @@ type procedure Log(ALevel:TLogLevel; msg: string); procedure logError(e:Exception; Command: string); function ProcessOptionValues(ParamName: string; out Answer: string; out RetValue: QWORD; out OptionValues: TStrings): boolean; virtual; abstract; + property Journal: TStrings read fErrors; end; TCommandClass=class of TCommand; @@ -134,12 +136,14 @@ begin fCommandID:=ID; fResult := nil; fData := nil; + fErrors := TSTringList.Create; end; destructor TCommand.Destroy; begin if assigned(fData) then fData.Free; if assigned(fResult) then fResult.free; + fErrors.Free; inherited Destroy; end; @@ -188,6 +192,7 @@ end; procedure TCommand.Log(ALevel: TLogLevel; msg: string); begin + fErrors.add(msg); if assigned(flogger) then fLogger(ALevel,self, self.CommandID+#09+msg) end; diff --git a/connectionsdmunit.pas b/connectionsdmunit.pas index f0fd2bf..cd8fb77 100644 --- a/connectionsdmunit.pas +++ b/connectionsdmunit.pas @@ -344,7 +344,12 @@ begin begin Answer := cmd.currentStage; if assigned(cmd.Results) then - cmd.Results.AssignTo(Code,RetValue,Answer,rValues); + cmd.Results.AssignTo(Code,RetValue,Answer,rValues) + else + begin + rValues := TSTringList.Create; + rValues.Assign(cmd.Journal); + end; code := cmd.Status; if (code=StatusComplete) and assigned(cmd.Results.Data) then RetValue:=cmd.Results.Data.Size diff --git a/reportdmunit.lfm b/reportdmunit.lfm index d726dc9..4a69773 100644 --- a/reportdmunit.lfm +++ b/reportdmunit.lfm @@ -5,11 +5,11 @@ object ReportDM: TReportDM VerticalOffset = 317 Width = 330 object frxReport: TfrxReport - Version = '2023.3.0' + Version = '2023.3.3' DotMatrixReport = False EngineOptions.SilentMode = True EngineOptions.NewSilentMode = simSilent - IniFile = 'tmp/fr6.ini' + IniFile = '\Software\Fast Reports' PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick, pbCopy, pbSelection] PreviewOptions.Zoom = 1 PrintOptions.Printer = 'Default' @@ -22,7 +22,6 @@ object ReportDM: TReportDM '' 'end.' ) - OnEndDoc = frxReportEndDoc OnLoadTemplate = frxReportLoadTemplate OnLoadDetailTemplate = frxReportLoadDetailTemplate Left = 176 diff --git a/reportdmunit.pas b/reportdmunit.pas index d7d37af..ed09b9f 100644 --- a/reportdmunit.pas +++ b/reportdmunit.pas @@ -47,7 +47,6 @@ type frxODTExport1: TfrxODTExport; frxPDFExport1: TfrxPDFExport; frxReport: TfrxReport; - procedure frxReportEndDoc(Sender: TObject); function frxReportLoadDetailTemplate(Report: TfrxReport; const TemplateName: String; const AHyperlink: TfrxHyperlink): Boolean; procedure frxReportLoadTemplate(Report: TfrxReport; @@ -192,10 +191,6 @@ begin NidbData.log(mtDebug,self,'LoadDetailTemplate '+TemplateName); end; -procedure TReportDM.frxReportEndDoc(Sender: TObject); -begin -end; - procedure TReportDM.CreateDBDataSet(Query: TReportQuery; EditReport: Boolean); var i: integer; @@ -422,6 +417,7 @@ begin try while not eof do begin + NidbData.log(mtDebug,self,format('Variables[%s]=(%s)',[fieldbyname('name').asString,fieldbyname('value').asString])); AVariables[fieldbyname('name').asString] := fieldbyname('value').asString; next; end; @@ -436,6 +432,7 @@ begin begin OptionName := fieldByName('name').AsString; OptionValue := AnsiString(FieldByName('Value').AsString); + NidbData.log(mtDebug,self,format('Variables[%s]=(%s)',[OptionName,OptionValue])); AVariables[OptionName] := trim(OptionValue); Next; end; @@ -494,12 +491,12 @@ begin AVariables[fieldbyname('name').AsString] := fieldbyname('value_string').AsString else if not fieldbyname('value_int').IsNull then AVariables[fieldbyname('name').AsString] := fieldbyname('value_int').AsInteger; + NidbData.log(mtDebug,self,format('Variables[%s]=(%s,%d)',[fieldbyname('name').asString,fieldbyname('value_string').asString,fieldbyname('value_int').asInteger])); Next; end; finally free; end; - NidbData.log(mtDebug,self,'LoadParams'); sql := 'select name,value_string, value_int from tmp_report_variables where var_type=1'; with NidbData.GetData(sql) do try @@ -510,6 +507,7 @@ begin AParam[fieldbyname('name').AsString] := fieldbyname('value_string').AsString else if not fieldbyname('value_int').IsNull then AParam[fieldbyname('name').AsString] := fieldbyname('value_int').AsInteger; + NidbData.log(mtDebug,self,format('Params[%s]=(%s,%d)',[fieldbyname('name').asString,fieldbyname('value_string').asString,fieldbyname('value_int').asInteger])); Next; end; finally diff --git a/tcpclient.pas b/tcpclient.pas index 325550a..bde57cd 100644 --- a/tcpclient.pas +++ b/tcpclient.pas @@ -45,7 +45,6 @@ type end; implementation - procedure TClientMainThread.SynchAnswer; begin log(mtExtra,self,'SynchAnswer'); @@ -65,6 +64,7 @@ begin if assigned(AFields) then fFields.assign(AFields); fHost := AHost; + fResult := nil; end; destructor TClientMainThread.Destroy; @@ -72,6 +72,8 @@ begin log(mtExtra, self,'destroy'); Connect.Disconnect(); fFields.Free; + if assigned(fResult) then + FreeAndNil(fResult); inherited Destroy; end;