[Access] help: waarde op formulier uitrekenen werkt niet

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008

  • ErikNL
  • Registratie: April 2004
  • Laatst online: 21-05 17:08
Hoi,

Ik heb het volgende probleem:

Ik heb een tabel orders, waarin alle orders worden geregistreerd.

Om hierin een overzicht te krijgen heb ik een formulier gemaakt dat heet form_overzicht_orders.

In dit form worden de orders in een gegevensblad weergegeven en worden er een aantal dingen berekend zoals bijv. winstpercentage doormiddel van de SOM functie. Nu heb ik echter ook een veld aangemaakt (niet in tabel) waarin het verschil in maanden berekend moet worden. Daarvoor heb ik de volgende code:
code:
1
2
3
4
5
6
7
8
9
huidigedatum = Date

aantalmaanden = DatePart("M", huidigedatum) - DatePart("M", Datuminvestering)

If am < 0 Then aantalmaanden= aantalmaanden+ 12
If DatePart("yyyy", huidigedatum) - DatePart("yyyy", Datuminvestering) > 1 Then
aantalmaanden= aantalmaanden+ (12 * (DatePart("yyyy", huidigedatum) - DatePart("yyyy", Datuminvestering)))

End If


Als ik deze code echter bij de onload van een formulier zet dan rekent hij de correcte maand voor de eerste record uit en toont vervolgens deze waarde ook voor de rest van de records. HIj doet de code dus steeds maar 1 keer, terwijl hij hem voor elke record afzonderlijk moet doen.

Ik heb verder geprobeerd om de datediff functie als besturingselement te gebruiken, maar hij blijft zeggen dat er een komma of operand niet goed is.

code:
1
aantalmaanden = DateDiff("M", [Datuminvestering], [huidigedatum])


Kan iemand mij hiermee helpen, ik heb de help al afgezocht en ook internet. Ik heb het gevoel dat er een simpele oplossing moet zijn, maar ik zit er nu al een tijd aan te werken en ik kom er niet meer uit...

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je tekstvak is een onafhankelijk besturingselement en staat dus los van de onderliggende records. Je code vult het tekstvak en de interface herhaalt idd voor elk record het aangemaakte tekstvakje, met dezelfde waarde.

Twee oplossingen:
a: baseer je form op een query en neem in de query de berekening op.
b: geef een functie op als besturingselementbron, bv
=datediff("M";[datuminvestering];date)

Via code een tekstvak vullen voor elk record in een doorlopend formulier gaat iig nooit lukken.

En als je syntaxfouten krijgt: produceer wat met de wizard functieopbouw en bekijk het resultaat.. :)

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: 21-05 17:08
bedankt voor je reactie,

ik heb nu indd de functie aan het werk gekregen... Ik heb hem als besturingselement gebruikt! Had ik al geprobeerd, maar wat blijkt:

In plaats van de komma's in:

DateDiff("m",[Datum investering],Date())

moet dat zijn:

DateDiff("m";[Datum investering];Date())

Lekker die help van Access die je verkeerd helpt. Ook op internet worden trouwens komma's gebruikt! 8)7

Je hebt gelijk voor wat betreft via code een doorlopend formulier invullen.... Ik heb nog een ander probleem, maar daar zal ik eerst nog even verder naar kijken.... In ieder geval THX voor je hulp....

  • ErikNL
  • Registratie: April 2004
  • Laatst online: 21-05 17:08
Okeej,
toch ook maar het volgende probleem:

Heeft indd te maken het niet kunnen invullen van een tekstvak dmv code op een doorlopend formulier.


Eerst beetje achtergrond van bestand:
De orders gaan over orders voor beleggingsproducten.
Als order wordt ingevuld o.a.:

- Beleggingsproduct
- Aankoopkoers
- Aantal stukken
- Bedrag 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 in besturingselement invul dat hij dan in plaats van de huidige koers gebruikt om te berekenen hij dan het productID(sleutel) uit de query pakt.

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 komt wederom het probleem van het doorlopende formulier weer kijken. Dan rekent hij het voor de eerste record uit in het goede vak, maar zet hij deze waarde iedere keer hetzelfde voor de records. Dus op basis van de eerste record.

Geef ik dan het vak waarin de waarde moet komen een achterliggende tabel om het in op te slaan, dan berekent hij het alleen weer voor de eerste record.

Ik word hier helemaal gek van... Ik probeer een oplossing eromheen te zoeken maar dat is tot nog toe nog niet gelukt... Iemand een idee??

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Niesje schreef op 05 juli 2004 @ 11:02:

Twee oplossingen:
a: baseer je form op een query en neem in de query de berekening op.
b: geef een functie op als besturingselementbron, bv
=datediff("M";[datuminvestering];date)
of huur een officeontwikkelaar in? ;)

[ Voor 8% gewijzigd door Lustucru op 05-07-2004 12:00 ]

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


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Omdat je probleem is opgelost en je een nieuw probleem hebt, welke je ook hebt geopend in Software Algemeen, doe ik deze dicht. :)
Daarbij is je openingspost daar ook iets uitgebreider.

Een zelfde discussie op 2 plaatsen voeren is naar mijn idee niet echt handig. :)

[ Voor 12% gewijzigd door gorgi_19 op 05-07-2004 12:24 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.