Bruno Posted July 13, 2007 Posted July 13, 2007 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? Quote
0 Peter Wagemans Posted July 13, 2007 Posted July 13, 2007 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. Quote
0 Bruno Posted July 13, 2007 Author Posted July 13, 2007 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 Quote
0 Peter Wagemans Posted July 15, 2007 Posted July 15, 2007 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 ). Quote
0 Bruno Posted July 15, 2007 Author Posted July 15, 2007 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. Quote
0 Peter Wagemans Posted July 15, 2007 Posted July 15, 2007 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. Quote
0 FMjunk Posted August 9, 2007 Posted August 9, 2007 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 Quote
Question
Bruno
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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.