Jump to content
  • 0

End Of File met loop


StefanHoste

Question

Posted

Kan me iemand zeggen of er een functie bestaat die het einde van de file aangeeft of met andere woorden een functie die als returnwaarde true geeft wanneer het laatste record getoond wordt?

 

Ik zit met een constructie die er zo uit ziet.

 

Als (gerelateerd-veld-A = veld-A EN gerelateerd veld-B = "constante")
  dan (Setfield; veld-C; gerelateerd-veld-C)
Einde-als-dan

 

Nu moet ik dat in een loop zetten om zo alle records van die gerelateerde file te doorlopen. Ik weet echter niet wat ik moet vermelden in mijn exit loop if. Het resultaat met loop ziet er als volgt uit:

 

Loop
Als (gerelateerd-veld-A = veld-A EN gerelateerd veld-B = "constante")
  dan (Setfield; veld-C; gerelateerd-veld-C
Einde-als-dan
Exit loop if (???)
End loop

 

Kan iemand me helpen :?:

13 answers to this question

Recommended Posts

  • 0
Posted

Als je een loop gebruikt neem ik aan dat je records doorloopt.

Bij het Goto Record[Next] kan je het vinkje 'Exit after last' aanzetten.

 

Dus ipv Exit Loop If (???) gebruik je Goto Record[Next,Exit after last]

 

rmw

  • 0
Posted

Ja, dat heb ik inderdaad gezien maar ik denk dat het probleem bij mij vooral is dat ik de records moet doorlopen van een gerelateerd veld. Wanneer ik dus in het script zeg "Goto Record[Next]" zal hij naar het volgende record gaan in de Current file wat uiteraard niet de bedoeling is.

 

Ik heb dan geprobeerd om in de gerelateerde file een script aan te maken GoToNext met enkel het commande "Goto Record[Next]" in en om dan dit script aan te roepen in de current file maar ik blijf maar een eindeloze lus creëren.

  • 0
Posted
...maar ik denk dat het probleem bij mij vooral is dat ik de records moet doorlopen van een gerelateerd veld. Wanneer ik dus in het script zeg "Goto Record[Next]" zal hij naar het volgende record gaan in de Current file wat uiteraard niet de bedoeling is....

 

Dan moet je loop-scriptje gewoon in dat andere bestand.

  • 0
Posted

Ik heb nu het probleem van de eindeloze lus kunnen oplossen maar zit nu met nog een ander probleem. Het lukt mij niet om via een extern script een waarde aan een veld in de current file te geven. Zelfs als ik dit met een eenvoudige opdracht doe, wil FileMaker dit niet doen. Kan iemand me zeggen wat ik verkeerd doe als ik het volgende doe ???

 

Perform Script ["ExternalSetField"]
Goto Layout ["AddPricing"] // om terug te keren naar het scherm in de current file anders kom je op het scherm van de gerelateerde file

 

De code in dit external script is:

 

SetField ["gerelateerd veld"; 10]

 

Maar hij weigert om dat gerelateerd veld de waarde 10 te geven :( Is er iemand die enig idee heeft waarom hij die waarde niet wil toekennen?

 

Alvast bedankt

  • 0
Posted

als je nu die setfield eens doet vanuit je hoofdscript, ipv via een extern script. (dat extern script oproepen is overbodig)

 

zoiets als

go to related records (relatie, show only related)

setfield (relatie :: veld = 10)

 

dat zou wel moeten lukken.

  • 0
Posted

Ja maar het probleem is dat ik dat extern script moet oproepen om die loop in die externe file te kunnen uitvoeren.

 

Ik schets nog even wat er moet gebeuren.

 

:arrow: Ik geef een waarde in in veld-A en druk op een button

:arrow: via een script doorloopt filemaker alle records in een gerelateerde file door middel van een loop

:arrow: wanneer mijn ingevoerde waarde van veld-A overeenkomt met de waarde van rel-veld-A en de waarde van rel-veld-B overeenkomt met een constante, moet de waarde van veld-C in mijn oorspronkelijke file worden ingevuld met de waarde van nog een ander veld in mijn gerelateerde file: "rel-veld-C"

 

Klinkt allemaal ingewikkeld en is het ook vrees ik :?

  • 0
Posted

In de bijlage 3 van de files in zip formaat. Ik zal nu nog wat concreter uitleggen wat er juist moet gebeuren.

 

In de file Pricing moet je het veld Code invullen. Dit is een keuzelijstje dat gehaald wordt uit de file PriceCode. Vervolgens moet je de PurchasePrice invullen. Door dan op de knoopen onderaan te drukken (voorlopig is dit nog calculate margins en calculate prices) moeten de velden margins EU, A, B, C, D, E automatisch worden ingevuld. Hij moet hiervoor checken of de Code = PriceCodeName uit de file MargePriceCode en voor het veld MarginEU moet Marge = "EU", voor MarginA = "A" enz ... De waarden van deze margin velden moeten opgevuld worden met MargeValue van het gevonden record.

 

Ik hoop dat het wat verstaanbaar is want ik heb ook niet alle files meegegeven.

 

Alvast bedankt

Forum.zip

  • 0
Posted

Die knoppen staan bij AddPricing. Addpricing kan je bereiken door op de knop Add van het browse scherm te klikken van de file Pricing.

 

Achter de knop Calculate Margins schuilt het script Make_Sales_Margins_External dat op zich weer andere scripts aanroept

 

Achter de knop Calculate Prices verschuilt het script Make_Everything dat op zich weer andere scripts aanroept

  • 0
Posted

eerst even een paar opmerkingen :

 

MargePriceCode :

je moet nog een SHOW ALL RECORDS invoegen in je "LoopMargins"-script. Alleen dan ben je zeker dat ie alles doorloopt.

 

MargePriceCode :

waarom moet de relatie MargePriceCode_Pricing records kunnen aanmaken ?

als ik nu een artikel toevoeg via Add dan komen daar onverwacht hier en daar records bij. ik neem aan dat dat niet de bedoeling is.

 

Het probleem

 

Pricing :

jouw relatie PriceCode deugt niet, want er zijn meerdere records die voldoen aan deze relatie. Je kan in jouw systeem perfekt 3 records hebben in je MargePriceCode bestand die voldoen. je setfield gaat niet weten welk record hij moet nemen in je gerelateerd bestand.

 

Oplossing :

wat je doet is goed, je moet alleen andere sleutels kiezen zodanig dat je relatie uniek is, of

stockeer je gevonden waarde in een global en gebruik die in de setfield.

  • 0
Posted

Ik heb het probleem denk ik kunnen oplossen :D , althans hij vult toch de gewenste gegevens in. Wat ik gedaan heb is het volgende.

 

In de file Pricing heb ik zes nieuwe hulpvelden aangemaakt. In deze hulpvelden komt na het invullen van de Code en het drukken van de knop calculate margins de concatenatie van eerst de constante EU, A, B, C, D of E en dan de Code die is ingevoerd. Dit is niets meer dan de unieke waarde die kan voorkomen in elk record van de file MargePriceCode.

 

Nu heb ik daarbij zes nieuwe relaties gemaakt van de file Pricing naar de file MargePriceCode met telkens een van die zes velden naar het veld MagePriceCodeUnique. Aldus bekwam ik zes een-op-veel relatie ipv één veel-op-veel relatie. Bijgevolg werden de marges met een lookup automatisch ingevuld wanneer ik die zes velden een waarde gaf.

 

Nogmaals bedankt aan de mensen die me hebben geholpen :wink:

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