Piet Stilma Geplaatst: 24 oktober 2004 Geplaatst: 24 oktober 2004 (aangepast) 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 24 oktober 2004 aangepast door Gast Quote
0 rmw Geplaatst: 24 oktober 2004 Geplaatst: 24 oktober 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
0 Piet Stilma Geplaatst: 24 oktober 2004 Auteur Geplaatst: 24 oktober 2004 Nu als ZIP file. Piet opzoeken.zip Quote
0 pjotter Geplaatst: 25 oktober 2004 Geplaatst: 25 oktober 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
0 rmw Geplaatst: 25 oktober 2004 Geplaatst: 25 oktober 2004 De rode tekst geeft een aantal uitgewerkte suggesties. rmw opzoeken2.zip Quote
0 Piet Stilma Geplaatst: 25 oktober 2004 Auteur Geplaatst: 25 oktober 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
Vraag
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
aangepast door Gast5 antwoorden op deze vraag
Aanbevolen berichten
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.