Jump to content
  • 0

calculatie


Bruno

Question

Posted

in een voorraadprogramma doe ik de volgende berekening

Aankopen - verkopen - gearchiveerde verkopen

 

Kan fm beter overweg met

 

een veld archief

een veld verkopen = sum(verkopen)

een veld aankopen = sum (aankopen)

 

en dan totale voorraad= aankopen - verkopen - archief

 

Dan met

 

totale voorraad = sum(aankopen)-sum(verkopen)-archief

 

of maakt dit totaal geen verschil?

6 answers to this question

Recommended Posts

  • 0
Posted

Zolang je geen groot aantal aankopen en verkopen hebt in je systeem, zal dat allemaal wel goed werken.

 

Zodra je echter het ding in gebruik neemt, zal je zien dat zo'n "life" methode weliswaar academisch gezien juist is, maar echter niet werkbaar.

Je zal het gras buiten zien groeien terwijl je zit te wachten op je resultaten.

 

Zorg voor scripts die je huidige stock in je stock records in een gewoon numeriek veld bijhouen, zodra er iets binnen komt of buiten gaat.

  • 0
Posted

Peter,

 

En die berekeningen maken op velden die niet op de layout staan en wanneer de gebruiker het product opvraagt met een set field het layout veld updaten

 

vb. stock = calculatieveld dat niet op de layout staat

stocklayout = numeriek veld dat op de layoyt staat

 

met set field(stocklayout;stock) wordt de stock ge-updatet als je op die layout komt

 

Is dit een goede oplossing?

 

Als je alles moet gaan scripten (nieuwe aankopen,verkopen, deleten, updaten,...) + nog rekening houden met het onvoorspelbare gevaar dat de pc uitvalt bij zo'n procedure dat lijkt me bijna een onmogelijke taak.

(+een andere gebruiker kan het veld nog locken ook)

 

Hoe pakken jullie zoiets aan?

 

groeten

  • 0
Posted

Voor een "set field" moet je veld niet op de layout staan, je moet er alleen maar "bij kunnen", dat wil zeggen dat het in de context van je script moet beschikbaar zijn. Je stock record moet correct gerelateerd zijn met je actieve record selectie ( of portaal lijn ).

 

Voor de rest: welkom in de wondere wereld van stock beheer.

Inderdaad, je moet het doen bij elke actie die je stock beinvloed, en o ja, een andere gebruiker kan op dat ogenblik hetzelfde stock record in je stock tabel willen updaten.

 

Aan een stockbeheer programma is inderdaad veel werk aan, omdat de "life" method niet kan gebruikt worden.

Het bijwerken van je stock doe je best als volgt ( in pseudo code ) :

 

1. ga naar gerelateerd stock record

2. probeer het stock record te openen

3. test of je geen fout terug krijgt

4. indien ja, terug naar 2

5. werk stock record bij ( stock = stock + of - mutatie )

6. werk productlijn record bij ( vlag "stock OK" )

7. commit beide records

 

De beste manier is te proberen beide records tegelijkertijd te openen.

Als je eerst je productlijn record opent en dan vandaaruit een gerelateerd stock record opent, lock je beide records, zelfs als je (nog) niets veranderd hebt aan het productlijn record. Op die manier is de tijd dat je systeem kwetsbaar is, erg geminimaliseerd, omdat je met 1 "commit" instructie beide records wegschrijft.

 

Voorts is het een goed idee om een scriptje te bouwen dat door je stock records loopt en op de academische manier de stock bijwerkt; het checkt of het totaal van alle mutatie records voor dat stock record nog mooi overeenkomt. Een routine die je eigenlijk moet verplichten zodra de database niet correct was afgesloten ( door een stroomuitval of zo ).

  • 0
Posted

Peter,

 

Wat je hier vertelt heb ik eens gelezen in het artikel "Use database transacties in filemaker pro 8 and 7" (en nu 9).

Een hele boterham.

 

Wat ik eigenlijk van plan was is het volgende:

Je hebt een "life" veld met de life calculatie die op geen enkele layout staat en een nummeriek veld dat iedere keer wordt ge-updatet (met set-field) als je op die layout komt.

Met het life-veld bespaar je ingewikkelde scripting en vermits het veld op de layout kan geindexeerd worden kan je ook snel zoeken.

 

Gaat het life-veld de snelheid van de database dan ook beinvloeden?

 

In ieder geval bedankt voor alle moeite die je op dit forum doet.

  • 0
Posted

Die methode zal inderdaad werken, maar het updaten van je stock zal trager en trager worden naarmate je meer records hebt, omdat het "life" veld nog altijd elke keer moet berekend worden als je het gebruikt als bron-veld in een "set field" instructie.

 

Voordeel is dat je inderdaad halfweg bent. In je stock listings wordt alles toch al sneller.

Ander voordeel is dat je je probleem in stukjes kapt. Als je met dit plan doorgaat, heb je al een dedicated gewoon numeriek veldje waar de stock in bijgewerkt wordt.

 

Het scriptje dat je nu voorlopig maakt, dat het dus op deze manier oplost, kan je later nog eens op het forum gooien en door de "boys from Clarify" laten verbeteren. Het is hier zo rustig, ik denk dat iedereen in verlof is.

  • 0
Posted

Hallo beste mensen,

 

 

Juist zo'n scriptje dat door mijn portal regels heen wandelt en voorraden verrekent ( plus of min de basis stock).

Ik kom een heel eind, maar zodra ik met een portal wil werken ( werk met faktuurlayouts) waaraan een database met produkten is gerelateerd, dan gaat het fout. Alleen de eerste regel van de portal wordt netjes verrekend met de voorraad.

Hoe laat ik zo'n scriptje door mijn portal regels heen wandelen ?

Is daar wellicht een voorbeeldje van te zien ergens op dit forum ?

 

- antwoord na even snuffelen min of meer toevallig toch nog gevonden, mocht iemand er iets aan hebben bij deze:

 

Ga naar Portaalrij[selecteren; Eerste]

Loop

Veld instellen[Artikel2::Aantal in Stock; Artikel2::Aantal in Stock-Verkooplijnen::Aantal]

Ga naar Portaalrij[selecteren; Volgende; Afsluiten na laatste]

End Loop

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