From: <dav...@us...> - 2010-01-29 04:36:41
|
Revision: 894 http://instantobjects.svn.sourceforge.net/instantobjects/revision/?rev=894&view=rev Author: davidvtaylor Date: 2010-01-29 04:36:35 +0000 (Fri, 29 Jan 2010) Log Message: ----------- * Implement workaround for AnyDAC/MSSQL issue for blobs exceeding 8000 bytes Modified Paths: -------------- trunk/Source/Brokers/AnyDAC/InstantAnyDAC.pas Modified: trunk/Source/Brokers/AnyDAC/InstantAnyDAC.pas =================================================================== --- trunk/Source/Brokers/AnyDAC/InstantAnyDAC.pas 2010-01-29 04:24:56 UTC (rev 893) +++ trunk/Source/Brokers/AnyDAC/InstantAnyDAC.pas 2010-01-29 04:36:35 UTC (rev 894) @@ -681,24 +681,43 @@ SourceParam : TParam; TargetParam : TADParam; i : Integer; + Params : TADParams; begin // Don't call inherited + Params := (DataSet as TADQuery).Params; for i := 0 to Pred(AParams.Count) do begin SourceParam := AParams[i]; - TargetParam := (DataSet as TADQuery).Params.FindParam(SourceParam.Name); + TargetParam := Params.FindParam(SourceParam.Name); if assigned(TargetParam) then AssignParam(SourceParam, TargetParam); end; end; procedure TInstantAnyDACBroker.AssignParam(SourceParam: TParam; TargetParam: TADParam); + +{$IFDEF D12+} +function ConvertBlobData(const Bytes: TBytes): RawByteString; + begin + SetLength(Result, Length(Bytes)); + if length(Result) > 0 then + Move(Bytes[0], Result[1], Length(Bytes)) + end; +{$ENDIF} + begin case SourceParam.DataType of ftBoolean: if UseBooleanFields then TargetParam.Assign(SourceParam) else TargetParam.AsInteger := ord(SourceParam.AsBoolean); + ftBlob: + // Temporary workaround for AnyDAC blob issue with MSSQL + {$IFDEF D12+} + TargetParam.AsBlob := ConvertBlobData(SourceParam.AsBlob); + {$ELSE} + TargetParam.AsBlob := SourceParam.AsBlob; + {$ENDIF} else TargetParam.Assign(SourceParam); end; |