Jump to content
  • 0

[opgelost] Exit loop if


Dick Verschuur

Question

Posted (edited)

Allerbeste allemaal

 

ik ben er bijna uit

(uit m'n simpele planningprobleem)

 

Om het niet al te ingewikkeld te maken stel ik m'n vraag in een nieuw topic

 

Exit Loop If

 

hoe werkt dat?

 

In een gevonden reeks wil ik een kopieer/plak routine uitvoeren

(ga naar volgend record, kopieer inhoud veld, ga naar vorig record, plak veld...

ga naar volgend record)

en zo verder

 

Aan het eind van de records moet de loop stoppen en het script verder gaan.

Maar... hoe gaat dat?

 

Is er iemand met een klein voorbeeldje?

 

Dick

 

(die hier echt drie dagen aan heeft zitten knutselen)

Edited by Guest

16 answers to this question

Recommended Posts

  • 0
Posted

Een gevonden reeks is een found set, dus een beperkte reeks. De loop stop je dus met GotoNext + optie Exit after last.

Je leven zou drie dagen aangenamer geweest zijn met één klik (plus een blik) op de online help onder bijvoorbeeld het trefwoord loop. :wink:

  • 0
Posted
In een gevonden reeks wil ik een kopieer/plak routine uitvoeren

(ga naar volgend record, kopieer inhoud veld, ga naar vorig record, plak veld...

ga naar volgend record)

en zo verder

(die hier echt drie dagen aan heeft zitten knutselen)

 

Je gaat nooit aan het einde van je reeks geraken:

 

Je vertrekt bv op record 5 uit een set van 12 record.

ga naar volgend record: is record 6,

kopieer inhoud veld: van record 6,

ga naar vorig record: is record 5,

plak veld... : is in record 5,

ga naar volgend record:is record 6,

en zo verder: wat verder ?

 

Je blijft tot in het oneindige kopieren en plakken tussen record 6 en 5....

 

De tweede go to record zou een dubbele sprong moeten zijn, waarbij je terugkeert naar het vorige.

Maar wat doe je dan met het laatste record ?

De Go to Next exit after last, stopt daar (indien jer ooit geraakt) en je zit met twee identieke records (of zoiets).

 

Maar als concept (cycle en copy/paste) zou ik het volledig afraden.

 

Wat dan wel ?

Bekijk de normalisatieregels eerst en daarna de Command Query Separation regels.

  • 0
Posted
Je gaat nooit aan het einde van je reeks geraken:

 

Je vertrekt bv op record 5

ga naar volgend record: is record 6,

kopieer inhoud veld: van record 6,

ga naar vorig record: is record 5,

plak veld... : is in record 5,

ga naar volgend record:is record 6,

en zo verder: wat verder ?

 

Je blijft tot in het oneindige kopieren en plakken tussen record 6 en 5....

 

Je ziet wat over het hoofd, Jean.

Mijn loop begint als volgt:

 

ik vertrek bv op record 5

ga naar volgend record: is record 6,

kopieer inhoud veld: van record 6,

ga naar vorig record: is record 5,

plak veld... : in record 5,

ga naar volgend record:is record 6

en zo verder

 

Ik sta dus, bij het begin van de volgende loop, inderdaad op 6 (en niet op 5). Daar begint de loop weer:

 

ga naar volgend record: is record 7,

kopieer inhoud veld: van record 7,

ga naar vorig record: is record 6,

plak veld... : in record 6,

ga naar volgend record:is record 7

en zo verder

 

Of zie ik dat verkeerd?

 

Dick

  • 0
Posted

Ik sta dus, bij het begin van de volgende loop,

 

Welke volgende loop ?

 

Je zit nog altijd binnen dezelfde loop vermits er geen exit loop geweest is.

 

Maar probeer het.

Bij het bereiken van het laatste record zal je loop blijven lopen op die plaats.

Ik vermoed zelfs dat de loop niet zal eindigen en zal blijven cyclen tussen het laatste en het voorlaatste record tot je een exit forceert.

 

Bekijk de normalisatieregels en de CQS regels voor de opzet van zoiets.

  • 0
Posted

Allerbeste Jean,

 

Stel:

 

ik heb een gevonden reeks van 11 records

 

Nu wil ik van die records gegevens naar elkaar kopiëren

(wat ik kan doen met iets als:

'ga naar volgend record'

'knip'

'ga naar vorig record'

'plak'

'ga naar volgend record')

 

Welke functie gebruik ik dan om de loop 11 keer te laten lopen voordat de loop eindigt?

 

Of... hoe doe ik dat?

 

 

Dick

  • 0
Posted

Met een set van 11 records ga je nooit 11 loopings gaan doen.

 

Welke functie gebruik ik dan om de loop 11 keer te laten lopen

 

De allmighty counter. (is geen functie)

Deze kun je lokaal globaal maken (eerst zorgen dat die leeg is vóór je het script laat lopen) of als $variabele gebruiken in je script, waar n = aantal records waar doorheen moet gecycled moet worden.

 

De counter of Var = (n-1) kun je laten mee aflopen met de loop.

Set field (of $variable) counter = (n-1)-1

Exit loop if Var of counter = 0

 

Of je laat de counter mee oplopen.

Set field (of $variable) counter +1

Exit loop if Var of counter = (n-1)

 

Je moet wel op voorhand ergens vastleggen wat er met de gegevens van het laatste record moet gebeuren.

  • 0
Posted
Nou breekt m'n klomp!

Dat is toch precies wat ik je meteen na je vraag geantwoord heb! :evil::cry::cry::evil:

 

Allerbeste AvD

 

Ik begrijp wat u bedoelt

Maar kunt u misschien begrijpen dat ik dat een paar dagen geleden nog niet begreep?

Kunt u zich inleven in het niveau van mensen die zojuist in Filemaker instappen, een stapel boeken kopen (30cm), nog niet weten waar ze precies moeten beginnen, hoe ze precies een vraag moeten omschrijven wanneer ze die willen stellen?

 

U zou blij moeten zijn dat ik, met hulp van uw antwoord (want ja, zo is het), mijn probleem heb opgelost en dat ik er fier op ben.

 

Ik heb bewondering voor uw kennis van zaken, maar had toch wel op een andere toon in uw antwoord verwacht.

 

@Yves:

Het heeft niet zoveel met het dialect te maken hoor: het ligt meer aan mijn niveau. Veel van de antwoorden in dit forum gaan uit van een bepaald niveau. En wanneer je dat niveau (nog) niet hebt dan is ook het antwoord soms niet te begrijpen.

 

Tip: Probeer eens een aantal jaren terug te denken... aan de dagen waarin u uw eerste database maakte.

En het zou ook prettige zijn wanneer er niet zo lacherig gedaan zou worden wanneer vragenstellers iets niet meteen snappen. Alleen maar om te voorkomen dat die het idee krijgen het domste jongetje van de klas te zijn.

 

Dick

  • 0
Posted

Geen paniek! Ik heb inderdaad herinneringen aan vervlogen tijden.

 

De dialect-opmerking is trouwens voor AvD bestemd.

(Ik vermoed dat dialecten een hobby van hem zijn. Snuffel hier maar eens rond op dit forum)

  • 0
Posted
Maar kunt u misschien begrijpen dat ik dat een paar dagen geleden nog niet begreep?

Ja, dat kan ik begrijpen.

Wat ik niet begrijp, is dat je dan geen uitleg vraagt.

  • 0
Posted

Wat ik niet begrijp, is dat je dan geen uitleg vraagt.

 

Ik heb u bedankt voor uw tip en ben er vervolgens mee aan de gang gegaan.

Een dag later heb ik, op basis van uw tip, de oplossing in elkaar geknutseld

Eén dag later dus.

Daar maak ik melding van, dat het opgelost is, en ook dat ik er blij mee ben...

 

Het is uw reactie daarop die mij vreemd overkomt.

Dat geeft te denken:

Zou ik nog wel eens wat vragen?

 

Dick

  • 0
Posted

Laten we het maar houden op een misverstand en... "Vragen staat vrij".

Toch nuttig van altijd eerst eens in de online help te kijken:

 

Loop

Description

 

Repeats a set of script steps. The Loop script step and End Loop script step mark the beginning and end of a repeating structure of script steps. ScriptMaker™ performs the script steps that are enclosed within the loop structure until it encounters one of the following:

 

- an Exit Loop If script step

 

- a Go to Record/Request/Page script step or Go to Portal Row script step when the Exit Loop After First/Last option is selected

 

 

Dan hadden we Jean ook niet laten ingrijpen waardoor voor jou de verwarring nog groter werd en je helemaal op een ander spoor werd gezet, namelijk dat van de database design-fase. Ik vermoed trouwens dat daarover ook al een misverstand is geweest toen Jean je schreef "Je design laat het niet toe". Het ging daar wel degelijkl om database design, niet over je lay-outs.

 

Ik blijf dus bij mijn oude ervaring die samenvat hoe je een computeropleiding in één zin kunt samenvatten:

 

"Klik, lees en blijf rustig".

 

Succes met je verdere exploraties.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...