|
Tip 120 - Een reeks records dupliceren 
Weer een vaak
gestelde vraag. Iemand heeft een aantal records
gecreëerd of geselecteerd in een databank en wil die
reeks nu dupliceren. Hier zijn verschillende
mogelijkheden. Een gemakkelijke manier is deze: een
loop waarbij niet van de eerste record vertrokken
wordt, maar van de laatste.
go to LAST
record
loop
          exit
loop if Status(CurrentFoundCount)=0
          duplicate
          omit
record
          omit
record
end loop
Show all records
Even uitleggen hoe
het werkt: stel dat we uit een databank vier records
geselecteerd hebben, bijvoorbeeld alle klanten uit
Sint-Pieters-Eernegem-over-Wachtberg-Lombeek.
We gaan eerst naar
de laatste record. We staan dus op de laatste van
vier.
We starten nu de loop. Dat betekent dat al
hetgeen nu volgt zo vaak uitgevoerd wordt als nodig. In
dit geval: tot wanneer er geen records meer (over) zijn:
exit loop if
Status(CurrentFoundCount) = 0.
Vervolgens dupliceren we die laatste record. We hebben
er nu dus 5 in onze groep, en we staan op de laatste.
Nu doen we een omit. Hierdoor wordt de pas
gecreëerde record uit de reeks gehaald (maar niet
gedelete). We staan dus opnieuw op de vierde,
maar die hadden we al gedupliceerd. We doen dus nog een
omit, zodat we op de derde record staan. De
loop start terug en we dupliceren dus deze
derde. We hebben nu dus vier records. We doen weer
een omit zodat onze pas gedupliceerde opzij gezet
wordt en we terug op onze originele staan; die is al
gedupliceerd en we hebben die dus niet meer nodig: we doen
weer een omit. Nu houden we er nog twee
over. Zo gaan we verder tot alle records "op"
zijn. Uiteraard eindigen we nu wel met een "lege"
record zodat we een Show all records moeten
toepassen. De laatste vier van die reeks zijn de pas
door ons aangemaakte duplicaten.
Het script loopt
sneller indien we het laten beginnen met Freeze
window.
Nota: uiteraard
kunnen we nog van alles gaan doen met zo'n gedupliceerde
record: de nodige scriptstappen zetten we dan vlak voor de
eerste omit
record.
|