Ga naar inhoud
  • 0

Functie met voorwaarde


Gerard Exis

Vraag

Ik ben bezig met de puntjes op de i te zetten in mijn database en stuitert op het volgende probleem;

 

ik heb een layout gemaakt om een vergelijk te maken van inkoopprijzen per produkt tussen 3 leveranciers.

Vele produkten worden door meerdere leveranciers geleverd ivm merk artikelen, dus ik ben het zat om ieder jaar aan het begin uit te zoeken wie de laagste inkoopprijs voor produkt A heeft, jaja ik word steeds luier.

 

Ik heb 3 velden met inkoopprijs 1, inkoopprijs 2 en inkoopprijs 3. Natuurlijk is er aan ieder veld een veld voor leverancier etc.. gekoppeld, echter het gaat mij om het volgende: Ik wil een layout maken met daarin alle artikelen en daarachter staat dan inkoopprijs 1 (dit is eigenlijk de huidige leverancier omdat deze afgelopen jaar de laagste inkoopprijs had), dus ik hou dit veld als uitgangspunt. Vervolgens daarnaast de andere 2 inkoopprijzen icm leveranciers maken.

Nu wil ik aan het eind van de regel (jaja ik wil steeds meer :mrgreen: ) een tekstveld waarin het volgende verschijnt onder de volgende voorwaarde:

 

" Wissel leverancier" indien inkoopprijs 1 hoger is als inkoopprijs 2 en inkoopprijs 3 leeg is, of indien inkoopprijs 1 hoger is als inkoopprijs 2 en inkoopprijs 3. Indien niet waar "Leverancier okay"

Maar ook de volgende melding wil ik zien:

"Geen vergelijk mogelijk" indien inkoopprijs 2 en inkoopprijs 3 leeg is.

 

Zoals vele wel weten hier ben ik een super beginner met FM, een normale "als functie" krijg wel in elkaar gespijkerd, echter deze weet ik niet exact hoe dit aangepakt dient te worden.

 

Alvast mijn dank voor jullie moeite,

Gerard

Link naar reactie

9 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Om te beginnen ben je niet lui, maar energie efficiënt.

 

Ik ga er van uit dat "Leverancier okay" wil zeggen dat je niet wilt wisselen ook al is de prijs van een ander lager.

 

voor je script begin je met het laatste (script is niet helemaal volgens de syntax)

 

if

inkoop 2 = "" and inkoop 3 = ""

veld instellen: Wissel leverancier "geen vergelijking mogelijk"

else if

Leverancier ≠ okay and ((inkoop 1 > inkoop 2 and inkoop 2 ≠ "") or (inkoop 1 > inkoop 3 and inkoop 3 ≠ ""))

veld instellen: Wissel leverancier "Wissel leverancier"

else

veld instellen: Wissel leverancier "Leverancier is goedkoopste"

end if

 

Natuurlijk zijn er andere oplossingen mogelijk, dit is er eentje. Waarschijnlijk ga ik nog verbeterd worden.

Ik heb bij leverancier 2

and inkoop 2 ≠ ""

toegevoegd om op te vangen dat leverancier 2 leeg is, maar leverancier 3 niet, wat normaal gezien niet zou voorkomen als je eerst leverancier 2 en dan leverancier 3 hebt ingevuld. Dus dat stukje kan je weglaten indien die kans zich niet kan voordoen.

Link naar reactie
  • 0

Beste Vitruvius,

 

dat ziet er heel goed uit, dank je.

 

als eerste:

jouw opmerking: "Ik ga er van uit dat "Leverancier okay" wil zeggen dat je niet wilt wisselen ook al is de prijs van een ander lager."

Voor mij is dat een signaal dat de huidige leverancier (inkoop1) de goedkoopste is, dus is wisselen niet nodig, anders juist wel.

 

Wat is de bedoeling van deze opzet:

aan ieder produkt koppel ik eenmalig drie leveranciers, elk jaar krijg ik de nieuwe prijslijsten (in excel), deze wil ik dus importeren in FM en zo zie ik direct welke artikelen ik eventueel de leverancier moet veranderen, ik werk momenteel met zo'n 6000 artikelen, dus je begrijpt hoeveel tijd ik win op deze manier.

 

Ik werk nog niet zo lang met FM, echter gaat het echt met de dag leuker vinden, juist omdat ik door heel veel tips en hulp van mensen op dit forum het sneller en makkelijker gaat begrijpen.

 

het feit dat je leverancier 2 is leeg maar leverancier 3 is ingevuld hebt opgevangen ben ik je dankbaar voor, omdat ik de gegevens importeer vanuit excel kan het nogal eens voorkomen dat een artikelnummer veranderd is, dus dan zou in dit geval de kans groot zijn dat juist leverancier 2 leeg blijft.

 

Ik heb het gemaakt zoals jij geschreven hebt, geweldig !!

 

alleen ik heb drie vragen:

 

1. nu moet ik de script per record activeren, hoe kan ik deze automatisch laten werken, zodat er iedere keer als er een mutatie plaats vindt alles direct bijgewerkt wordt ?

2. is het mogelijk om de tekst "wissel leverancier" rood te kleuren, zodat in een lijst van 6000 records dit juist opvalt?

3. ik heb 3 velden met inkoopprijzen, 1= inkoopprijs, 2 = inkoop alternatief 1 en 3 = inkoop alternatief 2.

de laatste twee heb ik gemaakt door middel van kopie van de orginele inkoopprijs (veld).

Nu zie ik als ik een prijs invult in "inkoop alternatief 1" wordt deze ook direct ingevuld in "inkoop alternatief 2" , exact hetzelfde bedrag, ik kan wel het bedrag verwijderen en dan blijft het bedrag wel gewoon in "inkoop alternatief 1" staan.

Wat heb ik verkeerd gedaan ? bij automatisch import is dit vervelend, deze velden moeten echt gescheiden blijven.

Opgelost ! door het kopieren stond de verwijzing naar veld "inkoop alternatief 1" :oops:

 

ga direct de rest ook goed checken

 

Met vriendelijke groet,

Gerard

Link naar reactie
  • 0

Ik zit met een foutje:

 

zie script:

 

eerst gedaan zoals aangegeven:

 

((Voorraad::Inkoopprijs > Voorraad::Kostprijs alt. 1 and Voorraad::Kostprijs alt. 2 ="") or

(Voorraad::Inkoopprijs> Voorraad::Kostprijs alt. 2 and Voorraad::Kostprijs alt. 1="") or

(Voorraad::Inkoopprijs> Voorraad::Kostprijs alt. 1 and Voorraad::Inkoopprijs>Voorraad::Kostprijs alt. 2))

 

in dit geval komt de melding "leverancier okay" ondanks dat 1 van de andere kostprijs lager is dan de standaard kostprijs.

dus als in veld kostprijs alt.1 de prijs hoger is en in veld kostprijs alt.2 de prijs lager is als in veld "inkoopprijs" dan komt toch de melding "leverancier okay"

 

dus ik heb daarop de script gewijzigd naar:

((Voorraad::Inkoopprijs > Voorraad::Kostprijs alt. 1 and Voorraad::Kostprijs alt. 2 ="") or

(Voorraad::Inkoopprijs> Voorraad::Kostprijs alt. 2 and Voorraad::Kostprijs alt. 1="") or

(Voorraad::Inkoopprijs> Voorraad::Kostprijs alt. 1 and Voorraad::Inkoopprijs>Voorraad::Kostprijs alt. 2)or

(Voorraad::Inkoopprijs> Voorraad::Kostprijs alt. 1 and Voorraad::Inkoopprijs

(Voorraad::Inkoopprijs< Voorraad::Kostprijs alt. 1 and Voorraad::Inkoopprijs>Voorraad::Kostprijs alt. 2))

 

echter in dit geval gaat de script een leeg veld als 0 zien, dus dat betekent dat een leeg veld lager is dan de "inkoopprijs" en dus komt de meldig "wissel leverancier"

 

hoe kan ik zorgen dat de script in de laatste 2 regels een leeg veld negeer of als gelijke waarde ziet als de inhoud in veld "inkoopprijs" ?

Link naar reactie
  • 0

1) los je op door alles in een loop te plaatsen

 

alle records tonen

ga naar record: eesrte

loop

script uitvoeren

ga naar record: volgende (sluit af bij laatste)

end loop

 

2) los je op door vb op het einde te sorteren op het veld wissel leverancier, en dan komt alles bij elkaar.

je kan bijkomend ook werken met voorwaardelijke opmaak. bij je veld kan je in beheermodus kiezen voor voorwaardelijke opmaak.

if veld wissel levernacier = "Wissel" kleur rood

 

3) heb je zelf opgelost blijkbaar

 

Het opvangen van een leeg veld kan je doen door eerst te controleren of er überhaupt iets instaat.

vandaar de code if (veld = "") dan doe je dit of iets anders.

dus je vergelijkt 1 met 2 en 3.

if 2 en 3 leeg => geen vergelijking

else if 2 leeg en drie niet => vergelijk 1 met 3

else if 2 niet leeg en 3 wel => vergelijk 1 met 2

else vergelijk 1 met 2 en 3

 

je mag dus niet werken met "or" maar je moet werken met "else if" of je werkt met "case", doet het zelfde, maar visueel minder duidelijk, maar vraagt wel minder code en gaat dus sneller. Maar dan spreek je over enkele seconden max. Het verschil is nu haast verwaarloosbaar omdat de computers nu eenmaal krachtiger zijn. maar met een 7mhz computer scheelt dat wel wat.

Link naar reactie
  • 0

Hier kom ik niet uit:

 

 

else if 2 leeg en drie niet => vergelijk 1 met 3

else if 2 niet leeg en 3 wel => vergelijk 1 met 2

else vergelijk 1 met 2 en 3

 

ik kan de juiste formules niet vinden, grotendeels weet ik niet wat ze betekenen, ben ik nu een beetje proberen te ontcijferen. :oops:

 

Maar ik wil eerst checken of ik begrijp wat je bedoel, ik wil hier namelijk ook direct wat van proberen te leren,

zoals ik de script eerst heb gemaakt is in de verkeerde volgorde ?

ik heb eerst de vergelijking gemaakt op voorwaarde dat .......

 

ik had de voorwaarde voorop moeten stellen en daaruit volgt de vergelijking,

hoe moet ik de script maken voor deze regel bv.

else if 2 leeg en drie niet => vergelijk 1 met 3

IsEmpty (Voorraad::Kostprijs alt.1) and ........................... :roll:

 

Moet ik tussen elke regel "else if" gebruiken en zodoende ook iedere keer een veld instellen doen?

Link naar reactie
  • 0

Is het misschien een idee om dit met een calculatieveld te lijf te gaan?

Wat ik uit je post opmaak is het een controle.

 

Prijs1 t/m Prijs3 zijn jouw 3 velden en zal je nog wel moeten aanpassen naar jouw veldnamen. Ik ben er van uit gegaan dat deze velden allemaal in 1 layout staan.

 

Even een vraag. Zodra je voor een bepaald artikel van leverancier gaat wisselen. Hoe ga je dat dan registreren/bijhouden?

Ik vraag dat omdat begreep dat je leverancier 1 als referentie hebt gesteld.

 

Let ( [
Check1 = "Geen vergelijk mogelijk" ;
Check2 = "Wissel naar B" ;
Check3 = "Wissel naar C" ;
Check4 = "Leverancier is okay" ;
a = Prijs1 ;
b = Prijs2 ;
c = Prijs3 ;
x = a - b ;
y = a - c ;
z = b - c ;
Check =	Case ( isempty ( b ) and isempty ( c ) ; Check1 ;
			isempty ( b ) ; If ( y < 0 ; Check4 ; Check3 ) ;
			isempty ( c ) ; If ( x < 0 ; Check4 ; Check2 ) ;
			x < 0 and y < 0 ; Check4 ;				// a				x > 0 and y < 0 ; Check2 ;				// a>b & a				x < 0 and y > 0 ; Check3 ;				// ac
			x > 0 and y > 0 and z < 0 ; Check3 ; Check2 )
] ;
Check
)

Link naar reactie
  • 0

Goedemorgen heren,

 

sorry voor mijn late reactie, ik heb sinds enkele dagen 2 puppy's om het terrein hier te bewaken en zij hebben geen interesse in FM ....... :mrgreen:

 

Yamas, ik heb jouw formule toegepast, dank je wel, exact wat ik nodig heb doet het :D

Nog even terugkomen op jouw vraag wat registratie betreft, ik wil de registratie (dus bepalen welke leverancier 1 is) handmatig doen, dit omdat niet altijd de goedkoopste leverancier dat produkt aan mij levert, ik probeer namelijk ieder jaar bij al mijn leveranciers te groeien met mijn afname. Dit betekent dat je soms (tijdelijk) iets meer betaal als nodig is, echter genereer ik voor een jaar later een hoger % inkoopkorting pfft.... lijkt wel politiek, een beetje geven en een hoop nemen :mrgreen:

 

Pjotter, ik heb ook jouw bestandje geladen en bekeken, echter zoals je zelf al aangaf had ik het idee dat de oplossing van Yamas iets meer past in mijn situatie. Toch wil ik je ook bij deze bedanken voor de moeite die je neemt om te helpen, waardeer ik ten zeerste.

 

Vitruvius, met jouw script ben ik aan de slag gegaan, echter er zijn mij nog een aantal dingen onbekend, hetgeen zorgt dat ik totaal niet meer begrijpt waar ik mee bezig ben, en dat is nu juist niet mijn bedoeling, toch ga ik er verder mee aan de slag. Het is natuurlijk niet de bedoeling dat ik een database gaat opbouwen met knip en plak werk van andere mensen, ik probeer vooruit te komen (anders kan ik wel een specialist inschakelen en laten maken wat ik hebben wil). Dus ook voor jou geld dat ik blij ben met je input in deze en en wil bedanken,gezien ik er zeker op verder wil borduren omdat ik "scripts" steeds leuker gaat vinden.

 

Algemeen,

Ik heb absoluut geen verstand van computers etc... echter toen ik zag wat er zoal mogelijk is met FM, was ik verkocht, dus ruim een half jaar geleden FM aangeschaft en aan de slag gegaan. Echter het zorgdragen voor een bedrijf in Roemenie (waar ik dus ook woon) en een bedrijf in Hongarije vergt veel tijd en aandacht, zodoende is het leren werken met dit soort programma's moeilijk. Maar nog moeilijker is het om hier (in Roemenie dus) mensen te vinden die begrijpen wat ik bedoel en wil, daarom wil ik zo vrij zijn mijn plan en idee van aanpak hier te vermelden, ik hoop dat er mensen zijn die het leuk vinden, om met een ondernemer die vooruit wil en de kreet "dat is niks voor mij" niet kent, mee te denken en feedback willen geven.

 

Opzet en aard van bedrijf: verkoop van kampeerartikelen, caravan-camper accessoires en reparatie caravan-campers (het laatste alleen in Roemenie).

 

Inkoop wordt gedaan in Nederland. Verkoop via website in Roemenie en in Hongarije (derde land is in planning). Ieder land momenteel zelfstandige website, echter toekomstplan is 1 website meertalig.

Wat wil ik ?

1. Controle of de bestelde artikelen geladen zijn of niet

2. Controle of in de bestellingen naar de klanten de juiste artikelen zitten en de juiste aantallen

3. Registratie zoveel mogelijk eenmalig (voorraad, verkoop, vertaling voor boekhouder, intrastat aangifte etc..)

4. Administratie dubbel (dus geen dubbele boekhouding :mrgreen: ) maar voorraad aantallen in de administratie van de website en in FM bijhouden

 

Stand van zaken en oplossing;

1. Is momenteel zo goed als klaar, beetje aanpakken van layouts, gebruiksvriendelijk maken.

Vanuit de website (waar de klanten dus bestellen en zo een lijst wordt gegenereerd met artikelen die niet op voorraad zijn en dus besteld moeten worden bij een leverancier) kan ik de bestellijst exporteren , dus import in FM heel eenvoudig.

Registratie vind plaats door het gebruik van een handscanner (inmiddels aangeschaft; OPN2002). Alle mutaties binnen FM zal gebeuren met gebruik van artikelnummer of barcode. Artikelnummers zijn uniek barcodes niet, verschillende leveranciers werken met de barcode van de fabrikant. Echter tijdens het laden heb ik alleen de mogelijkheid om barcodes te scannen.

2. Totaal niets klaar, ben met plan van aanpak bezig:

mijn gedachte is: bestelorder import in FM vanuit de website, het gereed maken van de bestelling door gebruik van een scanner, indien bestelling correspondeert met bestelorder wordt er een akkoord aangemaakt waardoor mogelijk is om het factuur en verzenddocumenten uit te printen.

3. Deel is klaar, omdat vele zaken worden geregeld vanuit FM in de toekomst wil ik het aanmaken van nieuwe artikelen ook in FM doen, en vervolgens vanuit FM exporteren naar de website. Het verschil met huidige situatie is dat nu alles geregeld wordt in de administratie van de website, in de toekomst zal dit grotendeels een controle zijn en grotendeels geregeld worden vanuit FM.

4. Is automatisch gerealiseerd als bovenstaande punten geregeld zijn.

 

Waarom deze info ?

Momenteel heb ik een groot deel klaar, zoals eerder aangegeven ga ik nu aan de slag met de layout's.

Daarna wil ik proberen punt 2 te gaan aanpakken en ik ben van mening dat men mij veel makkelijker kan helpen als men ook een beetje de achterliggende gedachte weten. Daarbij heb ik nog niet een echt serieus plan hoe ik dit exact kan doen, misschien zijn er mensen die dit al hebben gedaan, of een goed idee hebben.

 

Met vriendelijk groet,

Gerard

Link naar reactie

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