[DUG] Bookmark

Marshland Engineering marshland at marshland.co.nz
Wed Dec 17 09:17:24 NZDT 2008


I have a strange problem. I have a dbgrid and am moving records up and down with buttons. (Delphi4)

The routine works 

If I uncomment the bookmark, it displays wrong figures in the seq and seq2 columns on the record I was moving.

If I move a line and close the application, reopen it,  the figures are correct. It seem that only the display is incorrect when moving.


SEQ   SEQ2   Desc
20      20        Tool Select
25      25        Coolant on
30      30        Feed Rate

If I move "Coolant on" down I get 

20      20        Tool Select
30      30        Coolant on
25      25        Feed Rate
30      30       Coolant on

Close the application and reopen

20      20        Tool Select
25      25        Feed Rate
30      30        Coolant on

If I comment out the Bookmark, it works correctly but leaves me at the bottom of the list. 

procedure OperSort(sBM: String);
var
   iSeq : Integer;
begin
   with dm.tblOper do begin
      IndexName := 'OPERSEQ2';           // Swop to this new sort order
      Open;
      First;                               // go to the top
      iSeq:=5;                           // first record is 5
      while not Eof do begin
         edit;
         dm.tblOper['SEQ']:= iSeq;       // increase each recod by 5
         iSeq:=iSeq+5;
         dm.tblOper.post;
         dm.tblOper.next;
      end;
      close;
      IndexName := 'OPERSEQ';            // set back to the original order
      Open;
      First;
      while not Eof do begin
         edit;
         dm.tblOper['SEQ2']:= dm.tblOper['SEQ'];  // Update secondary index. 
         Post;
         Next;
      end;
      //  BookMark:=sBM;
   end;
end;

procedure TfMain.bMainDownClick(Sender: TObject);
var
  iSeq: Integer;
  sBookMark :String;
begin
   iSeq:=dm.tblOper.FieldByName('SEQ').AsInteger;  //get the current sequence number
   with dm.tblOper do begin
      iSeq:=iSeq+6;                             // Increase by 6
      edit;                                            // tbl seq numbers are multiple of 5's
      dm.tblOper['SEQ2']:= iSeq;
      Post;
      sBookMark:= BookMark;             // Position Cursor at current record.
      Close;
      OperSort(sBookMark);
   end;
end;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20081217/ba2408e6/attachment.html 


More information about the Delphi mailing list