From: <na...@us...> - 2010-01-27 08:34:46
|
Revision: 892 http://instantobjects.svn.sourceforge.net/instantobjects/revision/?rev=892&view=rev Author: nandod Date: 2010-01-27 08:34:40 +0000 (Wed, 27 Jan 2010) Log Message: ----------- * Fixed bug #1503475. Modified Paths: -------------- trunk/Source/Core/InstantBrokers.pas Modified: trunk/Source/Core/InstantBrokers.pas =================================================================== --- trunk/Source/Core/InstantBrokers.pas 2010-01-27 08:33:07 UTC (rev 891) +++ trunk/Source/Core/InstantBrokers.pas 2010-01-27 08:34:40 UTC (rev 892) @@ -801,7 +801,7 @@ FStatement: TInstantIQLObject; FTablePathList: TStringList; FParentContext: TInstantTranslationContext; - + FIdDataType: TInstantDataType; procedure AddJoin(const FromPath, FromField, ToPath, ToField: string); function GetClassTablePath: string; function GetChildContext(const AIndex: Integer): TInstantTranslationContext; @@ -840,7 +840,8 @@ property TablePathList: TStringList read GetTablePathList; public constructor Create(const AStatement: TInstantIQLObject; const AQuote: Char; - const ADelimiters: string; const AParentContext: TInstantTranslationContext = nil); + const ADelimiters: string; const AIdDataType: TInstantDataType; + const AParentContext: TInstantTranslationContext = nil); destructor Destroy; override; procedure AfterConstruction; override; @@ -866,6 +867,7 @@ property CriteriaCount: Integer read GetCriteriaCount; property Criterias[Index: Integer]: string read GetCriterias; property Delimiters: string read FDelimiters; + property IdDataType: TInstantDataType read FIdDataType; property ObjectClassName: string read FObjectClassName write SetObjectClassName; property ObjectClassMetadata: TInstantClassMetadata read GetObjectClassMetadata; property ParentContext: TInstantTranslationContext read FParentContext; @@ -932,7 +934,7 @@ public property Context: TInstantTranslationContext read FContext; destructor Destroy; override; - function QuoteString(const Str: string): string; // funzione non membro + function QuoteString(const Str: string): string; property Query: TInstantCustomRelationalQuery read GetQuery; end; @@ -5165,7 +5167,8 @@ if not Assigned(Command.ClassRef) then Exit; - FContext := TInstantTranslationContext.Create(Command, Quote, Delimiters); + FContext := TInstantTranslationContext.Create(Command, Quote, + Delimiters, Connector.IdDataType); end; procedure TInstantRelationalTranslator.Clear; @@ -6139,7 +6142,8 @@ constructor TInstantTranslationContext.Create( const AStatement: TInstantIQLObject; const AQuote: Char; - const ADelimiters: string; const AParentContext: TInstantTranslationContext = nil); + const ADelimiters: string; const AIdDataType: TInstantDataType; + const AParentContext: TInstantTranslationContext = nil); begin inherited Create; FParentContext := AParentContext; @@ -6157,7 +6161,8 @@ function TInstantTranslationContext.CreateChildContext( const AStatement: TInstantIQLObject): TInstantTranslationContext; begin - Result := TInstantTranslationContext.Create(AStatement, Quote, Delimiters, Self); + Result := TInstantTranslationContext.Create(AStatement, Quote, Delimiters, + IdDataType, Self); end; destructor TInstantTranslationContext.Destroy; @@ -6383,9 +6388,15 @@ [Qualify(ClassTablePath, InstantClassFieldName), QuoteString(ClassRef.ObjectClassName)])); if Specifier.IsPath then - AddCriteria(Format('%s <> %s%s', - [QualifyPath(ConcatPath(Specifier.Text, InstantIdFieldName)), - Quote, Quote])); + begin + if IdDataType in [dtString, dtMemo, dtBlob] then + AddCriteria(Format('%s <> %s%s', + [QualifyPath(ConcatPath(Specifier.Text, InstantIdFieldName)), + Quote, Quote])) + else + AddCriteria(Format('%s <> 0', + [QualifyPath(ConcatPath(Specifier.Text, InstantIdFieldName))])); + end; end; var @@ -6403,8 +6414,6 @@ Specifier := TInstantIQLSubquery(FStatement).Specifier; end; - // da TInstantIQLRelationalTranslator.BeforeTranslate - PathList := TList.Create; try CollectPaths(FStatement, PathList); |