فهرست منبع

* Implemented TBufDataset.UpdateIndexDefs

git-svn-id: trunk@9515 -
joost 17 سال پیش
والد
کامیت
c7219efd02

+ 18 - 3
packages/fcl-db/src/base/bufdataset.pas

@@ -108,8 +108,10 @@ type
 
   TBufIndex = record
     Name            : String;
-    SortField       : TField;
-    SortFieldName   : String;
+    Fields          : TField;
+    FieldsName      : String;
+    CaseinsFields   : String;
+    DescFields      : String;
 {$IFDEF ARRAYBUF}
     FCurrentRecInd  : integer;
     FRecordArray    : array of Pointer;
@@ -158,6 +160,7 @@ type
     FUpdateBlobBuffers: array of PBlobBuffer;
 
     function GetIndexDefs : TIndexDefs;
+    procedure UpdateIndexDefs; override;
     procedure AddRecordToIndex(var AIndex: TBufIndex; ARecBuf: pchar);
     function  GetCurrentBuffer: PChar;
     procedure CalcRecordSize;
@@ -309,7 +312,6 @@ end;
 destructor TBufDataset.Destroy;
 begin
   FreeAndNil(FIndexDefs);
-
   inherited destroy;
 end;
 
@@ -319,6 +321,19 @@ begin
   Result := FIndexDefs;
 end;
 
+procedure TBufDataset.UpdateIndexDefs;
+var i : integer;
+begin
+  FIndexDefs.Clear;
+  for i := 0 to length(FIndexes) do with FIndexDefs.AddIndexDef do
+    begin
+    Name := FIndexes[i].Name;
+    Fields := FIndexes[i].FieldsName;
+    DescFields:= FIndexes[i].DescFields;
+    CaseInsFields:=FIndexes[i].CaseinsFields;
+    end;
+end;
+
 Function TBufDataset.GetCanModify: Boolean;
 begin
   Result:= False;

+ 0 - 1
packages/fcl-db/src/sqldb/interbase/ibconnection.pp

@@ -1031,7 +1031,6 @@ begin
               'ind.rdb$index_name;');
     open;
     end;
-  IndexDefs.Clear;
   while not qry.eof do with IndexDefs.AddIndexDef do
     begin
     Name := trim(qry.fields[0].asstring);

+ 0 - 1
packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

@@ -843,7 +843,6 @@ begin
     sql.add('show index from ' +  TableName);
     open;
     end;
-  IndexDefs.Clear;
   while not qry.eof do with IndexDefs.AddIndexDef do
     begin
     Name := trim(qry.fieldbyname('Key_name').asstring);

+ 0 - 1
packages/fcl-db/src/sqldb/odbc/odbcconn.pas

@@ -1098,7 +1098,6 @@ begin
       ODBCCheckResult(SQLBindCol(StmtHandle, 10, SQL_C_CHAR  , @AscOrDesc , 1, @AscOrDescIndOrLen ), SQL_HANDLE_STMT, StmtHandle, 'Could not bind index metadata column ASC_OR_DESC.');
 
       // clear index defs
-      IndexDefs.Clear;
       IndexDef:=nil;
 
       // fetch result

+ 0 - 1
packages/fcl-db/src/sqldb/postgres/pqconnection.pp

@@ -803,7 +803,6 @@ begin
               'ic.relname;');
     open;
     end;
-  IndexDefs.Clear;
   while not qry.eof do with IndexDefs.AddIndexDef do
     begin
     Name := trim(qry.fields[0].asstring);