mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 22:14:25 +02:00
+ Implementation of IndexForFields from Alexandrov Alexandru
This commit is contained in:
parent
fea853245d
commit
bbbcc17171
40
fcl/db/db.pp
40
fcl/db/db.pp
@ -1703,6 +1703,7 @@ destructor TIndexDef.Destroy;
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
//!! To be implemented
|
//!! To be implemented
|
||||||
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1782,8 +1783,35 @@ end;
|
|||||||
function TIndexDefs.GetIndexForFields(const Fields: string;
|
function TIndexDefs.GetIndexForFields(const Fields: string;
|
||||||
CaseInsensitive: Boolean): TIndexDef;
|
CaseInsensitive: Boolean): TIndexDef;
|
||||||
|
|
||||||
|
var
|
||||||
|
i, FieldsLen: integer;
|
||||||
|
Last: TIndexDef;
|
||||||
|
Name: string;
|
||||||
|
Flds: string;
|
||||||
begin
|
begin
|
||||||
//!! To be implemented
|
Last := nil;
|
||||||
|
FieldsLen := Length(Fields);
|
||||||
|
for i := 0 to Count - 1 do
|
||||||
|
begin
|
||||||
|
Result := Items[I];
|
||||||
|
Name := Result.Name;
|
||||||
|
Flds := Result.Fields;
|
||||||
|
if (Result.Options * [ixDescending, ixExpression] = []) and
|
||||||
|
(not CaseInsensitive or (ixCaseInsensitive in Result.Options)) and
|
||||||
|
AnsiSameText(Fields, Result.Fields) then
|
||||||
|
begin
|
||||||
|
Exit;
|
||||||
|
end else
|
||||||
|
if AnsiSameText(Fields, Copy(Result.Fields, 1, FieldsLen)) and
|
||||||
|
((Length(Result.Fields) = FieldsLen) or
|
||||||
|
(Result.Fields[FieldsLen + 1] = ';')) then
|
||||||
|
begin
|
||||||
|
if (Last = nil) or
|
||||||
|
((Last <> nil) And (Length(Last.Fields) > Length(Result.Fields))) then
|
||||||
|
Last := Result;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result := Last;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1793,7 +1821,8 @@ var i: LongInt;
|
|||||||
begin
|
begin
|
||||||
Result := -1;
|
Result := -1;
|
||||||
for i := 0 to Count - 1 do
|
for i := 0 to Count - 1 do
|
||||||
if Items[i].Name = Name then begin
|
if AnsiSameText(Items[i].Name, Name) then
|
||||||
|
begin
|
||||||
Result := i;
|
Result := i;
|
||||||
Break;
|
Break;
|
||||||
end;
|
end;
|
||||||
@ -1866,7 +1895,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.41 2005-03-18 11:54:56 michael
|
Revision 1.42 2005-03-25 11:38:01 michael
|
||||||
|
+ Implementation of IndexForFields from Alexandrov Alexandru
|
||||||
|
|
||||||
|
Revision 1.41 2005/03/18 11:54:56 michael
|
||||||
+ Fixed second typo in provided patch
|
+ Fixed second typo in provided patch
|
||||||
|
|
||||||
Revision 1.39 2005/03/18 10:17:34 michael
|
Revision 1.39 2005/03/18 10:17:34 michael
|
||||||
@ -1894,4 +1926,4 @@ end.
|
|||||||
- implemented TUpdateMode, TProviderFlags
|
- implemented TUpdateMode, TProviderFlags
|
||||||
- implemented TIndexDef, TIndexDefs
|
- implemented TIndexDef, TIndexDefs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user