Browse Source

fcl-db: bufdataset: add ftGuid to list of supported field types when building CompareStruct (used in indexing and locating)

git-svn-id: trunk@27609 -
lacak 11 years ago
parent
commit
ee9197c3b2
2 changed files with 30 additions and 15 deletions
  1. 23 14
      packages/fcl-db/src/base/bufdataset.pas
  2. 7 1
      packages/fcl-db/tests/testdbbasics.pas

+ 23 - 14
packages/fcl-db/src/base/bufdataset.pas

@@ -1761,20 +1761,29 @@ begin
     AField := TField(AFields[i]);
     AField := TField(AFields[i]);
 
 
     case AField.DataType of
     case AField.DataType of
-      ftString, ftFixedChar : ACompareRec.CompareFunc := @DBCompareText;
-      ftWideString, ftFixedWideChar: ACompareRec.CompareFunc := @DBCompareWideText;
-      ftSmallint : ACompareRec.CompareFunc := @DBCompareSmallInt;
-      ftInteger, ftBCD, ftAutoInc : ACompareRec.CompareFunc :=
-        @DBCompareInt;
-      ftWord : ACompareRec.CompareFunc := @DBCompareWord;
-      ftBoolean : ACompareRec.CompareFunc := @DBCompareByte;
-      ftFloat, ftCurrency : ACompareRec.CompareFunc := @DBCompareDouble;
-      ftDateTime, ftDate, ftTime : ACompareRec.CompareFunc :=
-        @DBCompareDouble;
-      ftLargeint : ACompareRec.CompareFunc := @DBCompareLargeInt;
-      ftFmtBCD : ACompareRec.CompareFunc := @DBCompareBCD;
-      ftBytes : ACompareRec.CompareFunc := @DBCompareBytes;
-      ftVarBytes : ACompareRec.CompareFunc := @DBCompareVarBytes;
+      ftString, ftFixedChar, ftGuid:
+        ACompareRec.CompareFunc := @DBCompareText;
+      ftWideString, ftFixedWideChar:
+        ACompareRec.CompareFunc := @DBCompareWideText;
+      ftSmallint:
+        ACompareRec.CompareFunc := @DBCompareSmallInt;
+      ftInteger, ftAutoInc, ftBCD:
+        ACompareRec.CompareFunc := @DBCompareInt;
+      ftLargeint:
+        ACompareRec.CompareFunc := @DBCompareLargeInt;
+      ftWord:
+        ACompareRec.CompareFunc := @DBCompareWord;
+      ftBoolean:
+        ACompareRec.CompareFunc := @DBCompareByte;
+      ftDate, ftTime, ftDateTime,
+      ftFloat, ftCurrency:
+        ACompareRec.CompareFunc := @DBCompareDouble;
+      ftFmtBCD:
+        ACompareRec.CompareFunc := @DBCompareBCD;
+      ftVarBytes:
+        ACompareRec.CompareFunc := @DBCompareVarBytes;
+      ftBytes:
+        ACompareRec.CompareFunc := @DBCompareBytes;
     else
     else
       DatabaseErrorFmt(SErrIndexBasedOnInvField, [AField.FieldName,Fieldtypenames[AField.DataType]]);
       DatabaseErrorFmt(SErrIndexBasedOnInvField, [AField.FieldName,Fieldtypenames[AField.DataType]]);
     end;
     end;

+ 7 - 1
packages/fcl-db/tests/testdbbasics.pas

@@ -39,7 +39,7 @@ type
     procedure TestSupportTimeFields;
     procedure TestSupportTimeFields;
     procedure TestSupportCurrencyFields;
     procedure TestSupportCurrencyFields;
     procedure TestSupportBCDFields;
     procedure TestSupportBCDFields;
-    procedure TestSupportfmtBCDFields;
+    procedure TestSupportFmtBCDFields;
     procedure TestSupportFixedStringFields;
     procedure TestSupportFixedStringFields;
     procedure TestSupportBlobFields;
     procedure TestSupportBlobFields;
     procedure TestSupportMemoFields;
     procedure TestSupportMemoFields;
@@ -93,6 +93,7 @@ type
     procedure TestAddIndexDateTime;
     procedure TestAddIndexDateTime;
     procedure TestAddIndexCurrency;
     procedure TestAddIndexCurrency;
     procedure TestAddIndexBCD;
     procedure TestAddIndexBCD;
+    procedure TestAddIndexFmtBCD;
 
 
     procedure TestAddIndex;
     procedure TestAddIndex;
     procedure TestAddDescIndex;
     procedure TestAddDescIndex;
@@ -1843,6 +1844,11 @@ begin
   TestAddIndexFieldType(ftBCD,False);
   TestAddIndexFieldType(ftBCD,False);
 end;
 end;
 
 
+procedure TTestBufDatasetDBBasics.TestAddIndexFmtBCD;
+begin
+  TestAddIndexFieldType(ftFmtBCD,False);
+end;
+
 procedure TTestBufDatasetDBBasics.TestAddIndex;
 procedure TTestBufDatasetDBBasics.TestAddIndex;
 var ds : TCustomBufDataset;
 var ds : TCustomBufDataset;
     AFieldType : TFieldType;
     AFieldType : TFieldType;