Piet Stilma Posted October 24, 2004 Share Posted October 24, 2004 (edited) Hallo, In FM6 maak ik veelvuldig gebruik van scripts zoals, als voorbeeld, hieronder is aangegeven: Case( (tabel1::B >= GetRepetition(tabel2::Bv;1) and tabel1::B < GetRepetition(tabel2::Bt;1)) and (tabel1::L >= GetRepetition(tabel2::Lv;1) and tabel1::L < GetRepetition(tabel2::Lt;1)) ; GetRepetition(tabel2::ToeslagKorting;1) ; (tabel1::B >= GetRepetition(tabel2::Bv;2) and tabel1::B < GetRepetition(tabel2::Bt;2)) and (tabel1::L >= GetRepetition(tabel2::Lv;2) and tabel1::L < GetRepetition(tabel2::Lt;2)) ; GetRepetition(tabel2::ToeslagKorting;2) ; (tabel1::B >= GetRepetition(tabel2::Bv;3) and tabel1::B < GetRepetition(tabel2::Bt;3)) and (tabel1::L >= GetRepetition(tabel2::Lv;3) and tabel1::L < GetRepetition(tabel2::Lt;3)) ; GetRepetition(tabel2::ToeslagKorting;3) ; (tabel1::B >= GetRepetition(tabel2::Bv;4) and tabel1::B < GetRepetition(tabel2::Bt;4)) and (tabel1::L >= GetRepetition(tabel2::Lv;4) and tabel1::L < GetRepetition(tabel2::Lt;4)) ; GetRepetition(tabel2::ToeslagKorting;4) ; (tabel1::B >= GetRepetition(tabel2::Bv;5) and tabel1::B < GetRepetition(tabel2::Bt;5)) and (tabel1::L >= GetRepetition(tabel2::Lv;5) and tabel1::L < GetRepetition(tabel2::Lt;5)) ; GetRepetition(tabel2::ToeslagKorting;5) ; 0 ) Dit script werkt goed, alleen neem dit naast het vele typewerk, in de praktijk ook veel rekentijd in totale kalkulatie berekening. In tabel 1 worden 2 waarden ingevuld: L (lengte) en B (breedte) nu moet uit tabel 2 de ToeslagOfKorting worden gehaald die de leverancier hanteerd als dit formaat wordt besteld. Ik heb een voorbeeld meegezonden om de zaak te verduidelijken. Dus mijn vraag is, nu ik overstap op FM7: kan dit anders ..... Piet opzoeken.fp7 Edited October 24, 2004 by Guest Quote Link to comment
0 rmw Posted October 24, 2004 Share Posted October 24, 2004 Ik kan je voorbeeld niet downloaden, want Safari blijft nog steeds op 99.9% hangen. Dus als je je voorbeeld kan zippen heel graag. Enkele suggesties Case-functies hanteren een afvalsysteem, dus je groter dan test kan volgens mij komen te vervallen In FM7 kan je GetRepitition(veld;waarde) vervangen door veld[waarde] FM7 heeft de Let() functie waarmee veel voorkomende berekeningen binnen een berekening vooraf als waarde kunnen worden gedefinieerd. Verder kan je met Extend() een gewoon veld gebruiken in een berekening met een herhalend veld, waarbij het gewone veld op alle herhalingen wordt toegepast. Hierdoor zou je een berekend veld met herhalingen kunnen maken waarin alleen de geldige herhaling een waarde krijgt. Met Last() kan je dan de ingevulde herhaling ophalen. HTH rmw Quote Link to comment
0 Piet Stilma Posted October 24, 2004 Author Share Posted October 24, 2004 Nu als ZIP file. Piet opzoeken.zip Quote Link to comment
0 pjotter Posted October 25, 2004 Share Posted October 25, 2004 Onder 7 kan het in iedergeval wel of het anders kan zul je van de experts wel te horen krijgen. Waarom trouwens via een script en niet meteen in de toeslag als calculatie? Quote Link to comment
0 rmw Posted October 25, 2004 Share Posted October 25, 2004 De rode tekst geeft een aantal uitgewerkte suggesties. rmw opzoeken2.zip Quote Link to comment
0 Piet Stilma Posted October 25, 2004 Author Share Posted October 25, 2004 Hallo Pjotter, Ik gebruik o.a. dit soort scripts om kalkulaties te maken. Bovenstaand voorbeeld is in de praktijk met 20 herhaalvelden i.p.v. 5 Per kalkulatie - 5 prijsstaffels (in FM7 naar 10 staffels) - per staffel wordt de na maatbepaling via scripts; contructie zoeken en controleren, kwaliteit zoeken, materiaal uit voorraad of grondstof leverancier (= m2 prijsstaffel) + toeslag/korting (op L en B) zoeken, machine zoeken en controleren, palletstapeling, vrachtmeters en -prijzen zoeken. Zo is elk item een opzoek en/of vergelijkingsklusje in de bestaande tabellen. Dit, op nu 15.745 actuele kalkulaties en 15 gebruikers, resulteerd bij het bekijken van groepen kalkulaties in zandlopertjes als dit via berekeningsvelden zou gaan en is dus alles behalve snel. Daarom laat ik bij een nieuwe kalkulatie of een repeat order 'even' de scripts doorlopen .... Als er een korter en sneller alternatief is kunnen inderdaad een aantal scripts in een berekeningveld worden opgenomen. Dankjewel rmw, Dit is zeker een mooie oplossing, alleen zijn de beginwaarden in mijn voorbeeld gemakshalve even op 0 gezet, helaas hebben alle leveranciers andere begin-, voorwaarden en prijzen. Dus moet ik in jouw voorbeeld nog 2 berekeningsvelden toevoegen en kom ik op 5 berekeningvelden voor 1 gezochte waarde x nu 5 staffels (elke staffel kan een andere leverancier hebben) = 25 berekeningsvelden voor 1 kalkulatie item: ToeslagOfKorting. Gezien bovenstaand lijkt mij dit niet de oplossing, of zie ik dit verkeerd en kan FM7 al die berekeningsvelden juist allemaal met gemak aan? - Want tentijde van FM3 liep alles al behoorlijk te 'kraken' en heb ik juist toen alles omgezet naar scripts ..... Natuurlijk is snelheid afhankelijk van Servers en PC, maar die zijn in dit geval optimaal. Misschien iets voor een ander onderwerp? Piet Quote Link to comment
Question
Piet Stilma
Hallo,
In FM6 maak ik veelvuldig gebruik van scripts zoals, als voorbeeld, hieronder is aangegeven:
Case(
(tabel1::B >= GetRepetition(tabel2::Bv;1) and tabel1::B < GetRepetition(tabel2::Bt;1)) and
(tabel1::L >= GetRepetition(tabel2::Lv;1) and tabel1::L < GetRepetition(tabel2::Lt;1)) ; GetRepetition(tabel2::ToeslagKorting;1) ;
(tabel1::B >= GetRepetition(tabel2::Bv;2) and tabel1::B < GetRepetition(tabel2::Bt;2)) and
(tabel1::L >= GetRepetition(tabel2::Lv;2) and tabel1::L < GetRepetition(tabel2::Lt;2)) ; GetRepetition(tabel2::ToeslagKorting;2) ;
(tabel1::B >= GetRepetition(tabel2::Bv;3) and tabel1::B < GetRepetition(tabel2::Bt;3)) and
(tabel1::L >= GetRepetition(tabel2::Lv;3) and tabel1::L < GetRepetition(tabel2::Lt;3)) ; GetRepetition(tabel2::ToeslagKorting;3) ;
(tabel1::B >= GetRepetition(tabel2::Bv;4) and tabel1::B < GetRepetition(tabel2::Bt;4)) and
(tabel1::L >= GetRepetition(tabel2::Lv;4) and tabel1::L < GetRepetition(tabel2::Lt;4)) ; GetRepetition(tabel2::ToeslagKorting;4) ;
(tabel1::B >= GetRepetition(tabel2::Bv;5) and tabel1::B < GetRepetition(tabel2::Bt;5)) and
(tabel1::L >= GetRepetition(tabel2::Lv;5) and tabel1::L < GetRepetition(tabel2::Lt;5)) ; GetRepetition(tabel2::ToeslagKorting;5) ;
0 )
Dit script werkt goed, alleen neem dit naast het vele typewerk, in de praktijk ook veel rekentijd in totale kalkulatie berekening.
In tabel 1 worden 2 waarden ingevuld: L (lengte) en B (breedte)
nu moet uit tabel 2 de ToeslagOfKorting worden gehaald die de leverancier hanteerd als dit formaat wordt besteld.
Ik heb een voorbeeld meegezonden om de zaak te verduidelijken.
Dus mijn vraag is, nu ik overstap op FM7: kan dit anders .....
Piet
opzoeken.fp7
Edited by GuestLink to comment
5 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.