Ga naar inhoud
  • 0

calculatie


Bruno

Vraag

Geplaatst:

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 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Geplaatst:

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
Geplaatst:

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
Geplaatst:

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
Geplaatst:

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
Geplaatst:

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
Geplaatst:

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

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