DLookup functie opslaan

Status
Niet open voor verdere reacties.

maurann

Gebruiker
Lid geworden
22 jul 2007
Berichten
117
In een form bereken ik met de DLookup functie ( op basis van gegevens uit onderliggende tabellen) een bedrag (wordt genoteerd in Euro).
Kan ik deze waarde in een tabel opslaan? Zo ja, Hoe ??

Groeten

Maurann
 
event procedure

je kunt bijvoorbeeld een gebonden veld op het formulier zetten en dan je dlookup uitvoeren in een event script en het resultaat in het veld stoppen.

neem bijvoorbeeld de oncurrent en zet daarin:
Me!veld=DLookup(.....etc
 
Bedankt voor de vlugge reaktie:),
maar probleem lijkt me dat de Dlookup functie niet altijd waarden kan weergeven, simpelweg omdat niet altijd gegevens beschikbaar zijn.:confused:
Daardoor limiteert een gebonden veld de records in de onderliggende query van het formulier dus is dit wellicht op die manier niet bruikbaar.
ZIjn er nog andere mogelijkheden om de waarde van zo'n Dlookupfunctie op te slaan?

Leuk dat je mee wil zoeken.:thumb:

Maurann.
 
los van het feit dat je proces gegevens niet op moet slaan in een genormaliseerde database (tenzij het een datawarehouse betreft)
kan je met een insert of een update statement toch doen wat je wilt of desnoods een recordset?
en als je dan zover bent, dan kan je toch kiezen om gelijk heel de tabel te vullen met die gegevens?
 
Bedankt Guus voor de reactie.
Enkele vragen:
1ste: wat is een datawarehouse?
2de: een klant bestelt orders, die gedetaileerd worden in een tabel orderdetail, waar producten worden opgeslaan. Er kunnen kortingen per klant of per product worden gegeven. Indien kortingen op producten worden gegeven worden die producten wel in de tabel orderdetail opgeslaan, maar niet in de tabel klantenkaart. De bedoeling is nu dat na 10 records van een klant in de tabel klantenkaart een korting wordt gegeven (korting per klant) die bij klants 11 de aankoop wordt afgetrokken van zijn tickettotaal.
Vandaar mijn idee om de database zo te ontwikkelen dat per klant de klantenkaartkorting wordt opgeslaan in een tabel korting.
Of kan dit allemaal in vba geschreven worden?
In bijlage mijn ingekort bestand;
tabellen: Klant (=gewist om het bestand te kunnen toevoegen); Orders; Orderdetail;Product;Klantenkaart:TotaleVerkopen(=eveneens gewist).
Grtz en thx Maurann
 

Bijlagen

  • nk.zip
    nk.zip
    99,9 KB · Weergaven: 35
1e - http://nl.wikipedia.org/wiki/Datawarehouse
2e - Je moet van een klant bepalen of die meer dan 10 records onder één order heeft hangen. Als dat zo is dan krijgt de klant extra korting. Of bedoel je dat de klant 10 orders moet hebben zodat hij de 11e korting krijgt?
 
Laatst bewerkt:
Guus, Bedankt voor je reactie.
De voorziene opzet van de Db is als volgt;
Bij opening van de Db wordt een FormTicket geopend waarin een klant kan worden geselecteerd uit de tabel Klanten. Die klant kan dan orders plaatsen van producten (de orderdetails) die worden opgeslaan in de tabellen Orders en Orderdetails. Per orderdetail kan al dan niet een korting worden verrekend. Via een SQL code wordt de TotaleSom van klants order zonder de eventuele kortingen opgeslaan in de tabel Klantenkaart.
Indien de Klantenkaart 10 records heeft voor een klant wordt bij de 11de aankoop (of 1ste aankoop van een volgende klantenkaart) de korting afgetrokken van de 11de verkoopsom. Het resterende aankoopbedrag (dus verkoopsom (van producten waar geen korting is op gegeven) - klantenkaartkorting) is het bedrag op de nieuwe klantenkaart. Indien nog een kortingbedrag overblijft is dit het bedrag op de nieuwe klantenkaart.
Hopelijk is dit een beetje verduidelijkend.

Grtz.
Maurann
 
Heb je een tabel waarin je het bedrag van je klantenkaart bijhoud?
Je kan met het statement DCount bepalen of een klant 10 orders heeft.
Je kan dan het bedrag van de kortingkaart updaten.
 
Guus,

txtKortingBedr heeft als besturingselementbron:
=(DSum("[Aankoopbedrag]";"Klantenkaart";"[Klantnummer] = " & [Klantnummer])/100)*DLookUp("[Korting]";"Klant";"[Klantnummer] = " & [Klantnummer])
Dus het berekent steeds de actuele korting.
Dit bedrag wil ik graag telkens updaten in tabel Klant die ik met veld
txtKortingBdr heb aangevuld.
Dit doe ik via de gebeurtenisprocedere OnChange die volgende vbacode
activeert:
Private Sub txtKortingBdr_Change()
Dim db As DAO.Database
Dim strSQL As String
Set db = CurrentDb
strSQL = "Update Klant set Klant.txtKortingBdr = " & Me![txtKortingBdr] & " where Klant.Klantnummer = " & Me.Klantnummer
DoCmd.RunSQL strSQL
End Sub
Dit heeft echter geen resultaat in tabel Klant
Hoe pak ik dit aan om een resultaat te hebben?

Txs
Maurann
 
Hallo,

plaatste de code bij Form_Close en dan werkt het wel.

Dus vraag nu opgelost en bouw verder aan de werking van mijn db.

Bedankt voor de ondersteuning:thumb:

Maurann
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan