I’m interested to know the details of fix #68830 which is in the change logs for the Sep 2014 release of DA.
Is there any more detail on this item or anywhere I can review issue/bug numbers generally?
Thanks.
I’m interested to know the details of fix #68830 which is in the change logs for the Sep 2014 release of DA.
Is there any more detail on this item or anywhere I can review issue/bug numbers generally?
Thanks.
For newer bugs we report the status back in talk (if they were reported in talk in the first place).
This particular issue involved these changes:
diff --git a/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas b/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas
index 29ea7c7..4575eff 100644
--- a/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas
+++ b/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas
@@ -435,13 +435,27 @@ end;
procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection;
AADParams: TFDParams; ASetType: Boolean);
var
- i: integer;
+ i,j: integer;
oDAPar: TDAParam;
oADPar: TFDParam;
begin
for i := 0 to AADParams.Count - 1 do begin
oADPar := AADParams[i];
- oDAPar := ADAParams.ParamByName(oADPar.Name);
+
+ if oADPar.ParamType = ptResult then begin
+ oDAPar := ADAParams.FindParam(oADPar.Name);
+ if oDAPar = nil then begin
+ for j := 0 to ADAParams.Count-1 do begin
+ if ADAParams[j].ParamType = daptResult then begin
+ oDAPar := ADAParams[j];
+ break;
+ end;
+ end;
+ end;
+ if oDAPar = nil then oDAPar := ADAParams.ParamByName(oADPar.Name);
+ end
+ else
+ oDAPar := ADAParams.ParamByName(oADPar.Name);
if oDAPar.ParamType = daptUnknown then
oADPar.ParamType := ptInput
else
@@ -489,7 +503,7 @@ end;
procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TFDParams);
var
- i: integer;
+ i,j: integer;
oDAPar: TDAParam;
oADPar: TFDParam;
begin
@@ -497,7 +511,22 @@ begin
Exit;
for i := 0 to AADParams.Count - 1 do begin
oADPar := AADParams[i];
- oDAPar := Params.ParamByName(oADPar.Name);
+
+ if oADPar.ParamType = ptResult then begin
+ oDAPar := Params.FindParam(oADPar.Name);
+ if oDAPar = nil then begin
+ for j := 0 to Params.Count-1 do begin
+ if Params[j].ParamType = daptResult then begin
+ oDAPar := Params[j];
+ break;
+ end;
+ end;
+ end;
+ if oDAPar = nil then oDAPar := Params.ParamByName(oADPar.Name);
+ end
+ else
+ oDAPar := Params.ParamByName(oADPar.Name);
+
if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then
oDAPar.Value := oADPar.Value;
end;
and:
diff --git a/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas b/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas
index 9b68de6..3984007 100644
--- a/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas
+++ b/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas
@@ -42,9 +42,11 @@ end;
uses
{$IFDEF DELPHIXE2UP}
+ {$IFDEF MSWINDOWS} Winapi.Windows,{$ENDIF}
System.SysUtils, System.Classes, System.Variants,
Data.DB,Data.FmtBCD,
{$ELSE}
+ {$IFDEF MSWINDOWS} Windows,{$ENDIF}
SysUtils, Classes, Variants, DB, FmtBCD,
{$ENDIF}
uADStanIntf, uADStanOption, uADDatSManager, uADPhysIntf, uADCompClient,
@@ -468,13 +470,27 @@ end;
procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection;
AADParams: TADParams; ASetType: Boolean);
var
- i: integer;
+ i,j: integer;
oDAPar: TDAParam;
oADPar: TADParam;
begin
for i := 0 to AADParams.Count - 1 do begin
oADPar := AADParams[i];
- oDAPar := ADAParams.ParamByName(oADPar.Name);
+
+ if oADPar.ParamType = ptResult then begin
+ oDAPar := ADAParams.FindParam(oADPar.Name);
+ if oDAPar = nil then begin
+ for j := 0 to ADAParams.Count-1 do begin
+ if ADAParams[j].ParamType = daptResult then begin
+ oDAPar := ADAParams[j];
+ break;
+ end;
+ end;
+ end;
+ if oDAPar = nil then oDAPar := ADAParams.ParamByName(oADPar.Name);
+ end
+ else
+ oDAPar := ADAParams.ParamByName(oADPar.Name);
if oDAPar.ParamType = daptUnknown then
oADPar.ParamType := ptInput
else
@@ -522,7 +538,7 @@ end;
procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TADParams);
var
- i: integer;
+ i,j: integer;
oDAPar: TDAParam;
oADPar: TADParam;
begin
@@ -530,7 +546,22 @@ begin
Exit;
for i := 0 to AADParams.Count - 1 do begin
oADPar := AADParams[i];
- oDAPar := Params.ParamByName(oADPar.Name);
+
+ if oADPar.ParamType = ptResult then begin
+ oDAPar := Params.FindParam(oADPar.Name);
+ if oDAPar = nil then begin
+ for j := 0 to Params.Count-1 do begin
+ if Params[j].ParamType = daptResult then begin
+ oDAPar := Params[j];
+ break;
+ end;
+ end;
+ end;
+ if oDAPar = nil then oDAPar := Params.ParamByName(oADPar.Name);
+ end
+ else
+ oDAPar := Params.ParamByName(oADPar.Name);
+
if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then
oDAPar.Value := oADPar.Value;
end;
I hope that answers your question.
Thanks for the info. I was actually wondering what the original issue was that this fix corrected so I could determine if it was something that might affect me.
Thank you