Information générale
Catégorie:
Codage, syntaxe et commandes
>>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?
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement