Dloopup

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
277
Hoi,

Ik heb een prijzentabel in Access.
De rijen bevatten het gewicht. Nl
0 - 50 kg
51 - 100 kg
101 - 200 kg

En de kolommen bevatten de cijfers 01, 02, 03, 04, ......, 99
Dit zijn de eerste twee cijfers van de Franse postcode.

Dus bij een levering van 75 kg zit kijk je in de rij van 51 - 100 kg en als de postcode van de klant vb 12453 is dan moet je in kolom 12 kijken.
En dan heb je de transportprijs.

De dlookup ivm kg lukt mij.
De prijs opvragen ook als ik '12' hardcoded in de dlookup plaats.
Ik heb een extra veld aangemaakt nl "verkorte_postcode" met de eerste twee cijfers van de postcode.
Maar dan krijg ik 12 als waarde en niet de prijs.

Prijs = DLookup("[12]", "prijstabel", "[tot kg] = " & kg) => dan krijg ik de juiste prijs.
Prijs = DLookup("[verkorte_postcode]", "prijstabel", "[tot kg] = " & kg) ==> geeft 12 als waarde

Dus de vraag is : op welke manier kan ik dit probleem oplossen ?

Thx
 
Doe er eens een voorbeeldje bij; ik sta niet te popelen om deze situatie na te bouwen.
 
Zie bijlage.

Wanneer je een zending hebt van 120 kg voor een levering in Frankrijk met postcode 02746 (eerste twee cijfers = 02) dan is de kostprijs 13 euro.
Voor een zending van 210 kg voor postcode 049383 (04) = 3 euro.
Dus de kruising tussen het gewicht en postcode.
Het zoeken tussen het gewicht lukt mij. Maar zoeken in de juiste kolom niet.
Omdat als je vb verkorte_postcode = left(postcode;2) en je gebruikt verkorte_postcode om te zoeken krijg je in het eerste voorbeeld 02 als waarde en niet 13.

Dus hopelijk dat iemand mij kan verder helpen.
 

Bijlagen

  • Schermafbeelding 2018-11-02 om 10.32.55.png
    Schermafbeelding 2018-11-02 om 10.32.55.png
    15,3 KB · Weergaven: 61
Laatst bewerkt:
Ik snapte uiteraard wel hoe je tabel er uit zou zien; ik ga dit nog steeds niet overtypen :).
 
Euh OctaFish, nu weet ik niet wat je wil zeggen ?

Ik kan enkel zeggen dat ik het record van het gewicht kan selecteren via het commando DLOOKUP in post 1.
Maar de juiste kolom om zo de prijs te weten lukt niet met DLOOKUP.

Als je iets van mij verwacht wil ik dat gerust neerschrijven /meedelen maar meer info kan ik niet geven.
 
Jij wilt iets wat niet standaard in Access zit, zeg maar een soort INDEX functie van Excel. Om daar wat voor te maken, heb ik data nodig. En mij ontbreekt de inspiratie om eerst tabellen te moeten inkloppen. Vandaar de vraag om een voorbeeldje.
 
Hoi,

In bijlage de tabellen en formulier.
Dus in het veld prijs zou de prijs moeten zijn die overeenkomt met record 'gewicht' en kolom 'eerste twee cijfers postcode'.

Alvast bedankt.
 

Bijlagen

Het helpt als je een voorbeeldje post met daarin de acties die je zelf al geprobeerd hebt. Ik mis nu a) de DLookup die volgens jou werkt op postcode 12, en b) klopt het voorbeeld dat je in je vraag gebruikt niet met je database. Dus ben ik nu kostbare tijd aan het verprutsen met het uitzoeken van die DLookup.
 
La maar, ik heb je DLookup gevonden (opo het formulier).
Ik heb een simpele functie gemaakt die de juiste waarde opzoekt in je tabel, en terugplaatst in het veld. Dat tekstveld krijgt dan dit als Besturingselement: =PrijsZoeken([33brtomassa];[zone_code])
En deze functie zoekt 'm dan op:
Code:
Function PrijsZoeken(Gewicht As Double, PC As String) As Double
Dim strSQL As String, Groep As Integer
Dim rs As Recordset
    
    Groep = DLookup("[tot kg]", "prijzen", "[33brtomassa] BETWEEN [van kg] AND [tot kg]")
    strSQL = "SELECT [" & PC & "] FROM [Prijzen] WHERE [tot kg] = " & Groep
    Set rs = CurrentDb.OpenRecordset(strSQL)
    PrijsZoeken = rs.Fields(0).Value
    
End Function
 
Schitterend. Top.
Dat werkt.
Heel hartelijk dank.

Maar nu heb ik nog twee vraagjes :o

1) Ik heb drie tekst velden aangemaakt op het formulier nl prijs, kosten en totaal.
Prijs haal ik op via uw functie. Dat is OK
Dan de kosten is 2% van de prijs. Dat is ook OK.
Totaal is de som van [prijs]+[kosten]. Dat is ook OK.
Maar nu wil ik de waarde van [prijs] en [kosten] ook stockeren in de tabel.
De velden zijn voorzien maar op welke manier kan ik dit doen ?

2) Ik zou graag een eindtotaal hebben op het formulier. Dus de som van de totalen.
Maar wanneer ik een footer aanmaak met tekstveld = som([totaal]) (=tekst49 in voorbeeld) krijg ik een #error waarde.

In bijlage de database.

Hopelijk kan je mij hiermee verder helpen.

Alvast bedankt.
 

Bijlagen

Maar nu wil ik de waarde van [prijs] en [kosten] ook stockeren in de tabel.
Waarom zou je dat doen? Berekende velden sla je in beginsel nooit op, want die bereken je altijd in de query. En dat werkt prima. Niet opslaan dus. Makkelijk antwoord, niet? :)
Vraag 2 moet ik nog bekijken (zit nu in de trein) want je formule zou moeten werken. Dus daar is wat aan de hand.
 
Ivm vraag 1 ben ik akkoord dat je berekende velden niet opslaat in een tabel.
Maar soms kan het voorkomen dat de leverancier een 'lager' gewicht aanrekent op factuur dan wij heb gewogen.
Hiermee bedoel ik dat wij 152 kg wegen en op de factuur van de leverancier staat 148 kg.
Dus de basisprijs is lager. (100-150 kg en 151-200 kg)
En dan willen wij de basisprijs en dus ook de kosten veranderen op het formulier en opslaan in de tabel ivm historische gegevens.
 
Dat verandert toch niets aan het principe? In dat geval zou je een creditnota o.i.d. moeten maken. Of een correctiefactuur. Of hoe je dat ook wilt noemen :).
 
Klopt.
Maar deze tabel wordt ook gebruikt ivm historische gegevens.
Ivm kostprijsberekening is niet enkel de grondstof en productiekost belangrijk.
Maar ook de transportkosten.
Dus als wij willen weten hoeven wij vb in 2018 aan transportkosten hebben gehad dan moeten deze gegevens apart worden bijgehouden.
Want in 2019 is het een andere prijzentabel ed
Ook als je wil weten hoeveel transportkosten per landzone ed
Want basisprijs en kosten zijn, in dit geval, geen berekende velden maar waarden.
 
Alle variabele gegevens sla je op in je tabel, als je geen historie tabellen gebruikt. Wat weinigen doen :). Dus op het moment van aanmaken van het record heb je dan die gegevens vast in je tabel zittten. Zoals grondstof, productiekosten en transportkosten. Elke andere bewerking op basis van die gegevens is overbodig en sla je niet op, want die berekening kun je altijd reproduceren. Dus ik zie het probleem nog steeds niet.
 
Heb je al tijd gehad om te controleren waarom ik een error krijg bij de som van de totalen ?
Indien niet geen probleem. Ik begrijp dat je een druk bezet man bent.
 
Volgens mij had ik ‘m niet :). Maar ik kijk er straks nog wel even naar.
 
Hoi,
Ik krijg onderstaande, totaal op velden, niet opgelost.
Ook op internet geen oplossing gevonden.
 
Ik ben nog aan het puzzelen. Ik krijg nette totalen als ik ze baseer op een veld, maar zodra er een formule is, doet-ie het niet. En dat hoort wel.... Dus ik ben nog aan het zoeken. Oplossingen op internet zijn zwaar overschat :D.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan