mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 13:19:12 +02:00
* Allow searching and filtering on ftFixedWidth fields
* Improved error message for fieldtypes for which searching and filtering are not available git-svn-id: trunk@14787 -
This commit is contained in:
parent
52e803112b
commit
00f42cbdf1
@ -1323,7 +1323,7 @@ end;
|
|||||||
procedure TBufDataset.ProcessFieldCompareStruct(AField: TField; var ACompareRec : TDBCompareRec);
|
procedure TBufDataset.ProcessFieldCompareStruct(AField: TField; var ACompareRec : TDBCompareRec);
|
||||||
begin
|
begin
|
||||||
case AField.DataType of
|
case AField.DataType of
|
||||||
ftString : ACompareRec.Comparefunc := @DBCompareText;
|
ftString, ftFixedChar : ACompareRec.Comparefunc := @DBCompareText;
|
||||||
ftSmallint : ACompareRec.Comparefunc := @DBCompareSmallInt;
|
ftSmallint : ACompareRec.Comparefunc := @DBCompareSmallInt;
|
||||||
ftInteger, ftBCD : ACompareRec.Comparefunc :=
|
ftInteger, ftBCD : ACompareRec.Comparefunc :=
|
||||||
@DBCompareInt;
|
@DBCompareInt;
|
||||||
@ -1334,7 +1334,7 @@ begin
|
|||||||
@DBCompareDouble;
|
@DBCompareDouble;
|
||||||
ftLargeint : ACompareRec.Comparefunc := @DBCompareLargeInt;
|
ftLargeint : ACompareRec.Comparefunc := @DBCompareLargeInt;
|
||||||
else
|
else
|
||||||
DatabaseErrorFmt(SErrIndexBasedOnInvField, [Fieldtypenames[AField.DataType]]);
|
DatabaseErrorFmt(SErrIndexBasedOnInvField, [AField.FieldName,Fieldtypenames[AField.DataType]]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ACompareRec.Off1:=sizeof(TBufRecLinkItem)*FMaxIndexesCount+
|
ACompareRec.Off1:=sizeof(TBufRecLinkItem)*FMaxIndexesCount+
|
||||||
|
@ -373,7 +373,7 @@ begin
|
|||||||
|
|
||||||
// define field in parser
|
// define field in parser
|
||||||
case FieldInfo.DataType of
|
case FieldInfo.DataType of
|
||||||
ftString:
|
ftString, ftFixedChar:
|
||||||
begin
|
begin
|
||||||
TempFieldVar := TStringFieldVar.Create(FieldInfo);
|
TempFieldVar := TStringFieldVar.Create(FieldInfo);
|
||||||
TempFieldVar.FExprWord := DefineStringVariable(VarName, TempFieldVar.FieldVal);
|
TempFieldVar.FExprWord := DefineStringVariable(VarName, TempFieldVar.FieldVal);
|
||||||
@ -405,7 +405,7 @@ begin
|
|||||||
TempFieldVar.FExprWord := DefineDateTimeVariable(VarName, TempFieldVar.FieldVal);
|
TempFieldVar.FExprWord := DefineDateTimeVariable(VarName, TempFieldVar.FieldVal);
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
raise EDatabaseError.CreateFmt(SErrIndexBasedOnInvField, [VarName]);
|
raise EDatabaseError.CreateFmt(SErrIndexBasedOnInvField, [VarName,Fieldtypenames[FieldInfo.DataType]]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// add to our own list
|
// add to our own list
|
||||||
|
@ -36,7 +36,7 @@ Resourcestring
|
|||||||
SErrTransAlreadyActive = 'Transaction already active';
|
SErrTransAlreadyActive = 'Transaction already active';
|
||||||
SErrTransactionnSet = 'Transaction not set';
|
SErrTransactionnSet = 'Transaction not set';
|
||||||
SErrIndexResultTooLong = 'Index result for "%s" too long, >100 characters (%d).';
|
SErrIndexResultTooLong = 'Index result for "%s" too long, >100 characters (%d).';
|
||||||
SErrIndexBasedOnInvField = 'Field "%s" is an invalid field type to base index on.';
|
SErrIndexBasedOnInvField = 'Field "%s" has an invalid field type (%s) to base index on.';
|
||||||
SErrIndexBasedOnUnkField = 'Index based on unknown field "%s".';
|
SErrIndexBasedOnUnkField = 'Index based on unknown field "%s".';
|
||||||
SErrConnTransactionnSet = 'Transaction of connection not set';
|
SErrConnTransactionnSet = 'Transaction of connection not set';
|
||||||
SErrNotASQLConnection = '"%s" is not a TSQLConnection';
|
SErrNotASQLConnection = '"%s" is not a TSQLConnection';
|
||||||
|
Loading…
Reference in New Issue
Block a user