Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to re-sequence all the records in a table
Message
From
07/10/1997 10:47:20
Shihchau Tai
Apic Systems Pte Ltd
Singapore, Singapore
 
 
To
07/10/1997 09:14:41
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00053490
Message ID:
00053521
Views:
23
>>I am trying to implement a simple 'multiple select mover grid' and I find the re-sequencing of the record slow. I am sure there is a way to re-order the records in a shorter time. Can somebody help?
>>
>>I keep a sequence number in the table to order the table. First, the user selects a few records by clicking on the checkbox (flag). Then the user selects the new position for the selected records. When the 'Move' button is click, I tried to sequence it using the following codes
>>
>>nrecno = recno()
>>nseq = sequence
>>replace all sequence with sequence*1000
>>replace all sequence with sequence/1000+nseq*1000 for flag=.T.
>>i=0
>>scan
>> i=i+1
>> replace sequence with i
>>endscan
>>
>>The scan is slow. Is it possible to do it in one replace statement?
>>
>>Can anyone suggest other ways of re-sequencing of records?
>
>Your algorithm is slow because you scan/replace all records in table. I would advise to change sequence value just for records you want to move:
>Select table1 && this is Grid.Recordsource
>Set order to tag sequence
>Calculate min(sequence) to nMinsequence
>nCounter=0
>Scan For flag=.t. && have tag on flag for better performance
> nCounter=nCounter+1
> Replace table1.Sequence with nMinsequence-nCounter
>Endscan
>Thisform.Grid1.Refresh

Sorry, I think there is a misunderstanding. I didn't phrase my question clear enough.

My user can select any records on the grid. Then he can move all the selected records to a specific location he choose. For example, I have,

seq desc Flag
1 Rec1 .F.
2 Rec2 .T.
3 Rec3 .F.
4 Rec4 .T.
5 Rec5 .F.
6 Rec6 .F.

The users selected Rec2 & Rec4 as shown. He choose position Rec5 to move to. On 'move', I would get

seq desc Flag
1 Rec1 .F.
2 Rec3 .F.
3 Rec5 .F.
4 Rec2 .T.
5 Rec4 .T.
6 Rec6 .F.

He can also choose to move records up and ideally, he can do the kind of thing like select Rec1 & Rec5 and move them to Rec3 too.

Is there a way to replace all with a running number in a faster way?
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform