[Access] rekenen met uitkomst van een query werkt niet

Pagina: 1
Acties:
  • 209 views sinds 30-01-2008
  • Reageer

  • ErikNL
  • Registratie: April 2004
  • Laatst online: 26-08 15:25
Hoi,

Eerst beetje achtergrond van access bestand:

In het bestand worden orders ingevoerd.
De orders gaan over orders voor beleggingsproducten.

Ik heb een tabel (en formulier) producten waarin de verschillende beleggingsproducten met de huidige koers staan.

In tabel_orders, wordt dmv form_orders de orders ingevoerd.
Bij een order wordt ingevuld o.a.:

- Beleggingsproduct
- Aankoopkoers
- Aantal stukken
- Bedrag investering

Een overzicht van alle orders wil ik weergeven in Form_overzicht_orders. Hierop wil ik een aantal dingen berekenen als percentage (winst/verlies) en de huidige waarde van de investering.

Op het formulier overzicht_orders heb ik nu een veld gemaakt waarin door middel van een keuzelijstvak (en de wizard opzoeken), de huidige koers uit de tabel_producten wordt gehaald. Dit werkt.
Alleen nu wil ik op het formulier weergeven wat de huidige waarde van de investering is. Deze wordt berekend door: Aantal Stukken * huidige koers

Het probleem is echter dat wanneer ik deze berekening als besturingselement invul dat hij dan in plaats van de huidige koers gebruikt om te berekenen hij dan het productID(sleutel) uit de query pakt. Dus de eerste kolom van de query.

Als ik probeer te gebruiken: huidigekoers.column(1) dan geeft hij geen waarde.

Als ik probeer in VBA de code te gebruiken dan krijg ik het wel werkend, maar dan heb ik het probleem dat hij de berekende waarde voor alle achtereenvolgende records gebruikt.
Dus als de huidige waarde van de order in de eerste record 1000 is dan vult hij bij alle andere orders bij huidige waarde ook 1000 in.

Geef ik het tekstvak waarin de huidige waarde moet komen een achterliggende tabel om het in op te slaan, dan berekent hij het alleen weer voor de eerste record. (ik weet het, het is tegen de regels van normalisatie dus geen goede oplossing!)

Ik word hier helemaal gek van... Ik probeer een oplossing eromheen te zoeken maar dat is tot nog toe nog niet gelukt... Dit moet toch mogelijk zijn?

Een onmogelijke oplossing is (maar misschien verduidelijkt dat mijn probleem):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim antstuk
Dim huidk

antstuk = Forms!Form_overzicht_orders.AantalStukken
huidk = DLookup("[huidigekoers]", "tabel_producten", "[Productid] = " & ProductID.Value)
Forms!Form_overzicht_orders.huidigewaarde.Value = antstuk * huidk


DoCmd.GoToRecord , , acNext

Dim antstuk2
Dim huidk2

antstuk2 = Forms!Form_overzicht_orders.AantalStukken
huidk2 = DLookup("[huidigekoers]", "tabel_producten", "[Productid] = " & ProductID.Value)
Forms!Form_overzicht_orders.huidigewaarde.Value = antstuk2 * huidk2

DoCmd.GoToRecord , , acNext


Als ik deze code gebruik dan moet ik dit voor elke order gebruiken en dat is niet mogelijk, want ik weet nooit hoeveel orders er ingevuld gaan worden

Iemand een idee??

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

As said before: neem de noodzakelijke gegevens op in de onderliggende query, dus ook de actuele koers van een stuk. Tip: lees eens een sql-tutorial . :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • ErikNL
  • Registratie: April 2004
  • Laatst online: 26-08 15:25
je hebt helemaal gelijk... Hiervoor gebruikte ik nooit echt veel query's en ze leken me ook niet echt handig, maar ik zie er nu het nut helemaal van in.... Alles wordt nu correct weergegeven in een query en op basis van deze query heb ik een formulier gemaakt.... Sorry voor mijn eigenwijzigheid 8)7
en thx voor de hulp!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

ErikNL schreef op 05 juli 2004 @ 15:06:
je hebt helemaal gelijk... Hiervoor gebruikte ik nooit echt veel query's en ze leken me ook niet echt handig, maar ik zie er nu het nut helemaal van in.... Alles wordt nu correct weergegeven in een query en op basis van deze query heb ik een formulier gemaakt.... Sorry voor mijn eigenwijzigheid 8)7
en thx voor de hulp!
:+

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland