Ga naar inhoud
  • 0

[opgelost] Exit loop if


Dick Verschuur

Vraag

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)

aangepast door Gast
Link naar reactie

16 antwoorden op deze vraag

Aanbevolen berichten

  • 0
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.

Link naar reactie
  • 0
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

Link naar reactie
  • 0

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.

Link naar reactie
  • 0

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

Link naar reactie
  • 0

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.

Link naar reactie
  • 0
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

Link naar reactie
  • 0

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

Link naar reactie
  • 0

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.

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...