Gem waarde uit subformulier overnemen in hoofdformulier

  • Onderwerp starter Onderwerp starter Jors
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jors

Gebruiker
Lid geworden
1 okt 2006
Berichten
142
Goedendag,

het volgende is het geval:
mijn database bestaat uit records met gegevens van producten. Hier heb ik een mooi formuliertje voor gemaakt.
Op dit formulier heb ik een subformulier toegevoegd met de historische prijsgegevens per artikel. Deze prijsgegevens worden dus ingevoerd in een andere tabel.

Nou wil ik artikelen kunnen zoeken op basis van hun prijs. Dit was me in eerste instantie gelukt, maar omdat een artikel soms meerdere prijsgegevens had kwam hetzelfde artikel in het zoekresultaat meerdere keren voor.

Om dit te voorkomen had ik het volgende bedacht: stel dat ik een apart veld in de hoofdtabel kan opnemen waar de gemiddelde prijs uit het subformuler (-tabel) overgenomen wordt. Als dit kan, kan ik daarna relatief gemakkelijk zoeken op gem. prijs.
Het is me wel gelukt om de gemiddelde prijs uit het subformulier op het hoofdformulier te krijgen, maar om het daarna over te nemen in de hoofdtabel lukte helaas niet.

Mijn zoekformuliertje is overigens heel simpel op basis van een query. Ik zal hier vooralsnog niet verder over uitwijden, want wellicht is de oplossing vrij simpel. Mocht het nodig zijn dan kan dit altijd nodig.

Bvd voor de hulp!
 
Vermoedelijk gebruik je de besturingselementbron van het tekstveld om de gemiddelde prijs te berekenen. Als dat zo is, kun je het tekstvak niet meer koppelen aan een veld in de tabel. En als je het tekstvak aan een veld koppelt, heb je geen plek meer voor je formule.
A bit of a conumdrum....
Ik neem aan, dat je de gemiddelde prijs per scherm (record) op je formulier uitrekent? Als dat zo is, kun je de formule laten uitvoeren bij de gebeurtenis <Bij aanwijzen> van het formulier, en de uitkomst daarna toewijzen aan het tekstvak. Daarmee hou je de besturingselementbron vrij voor het tabelveld, en heb je toch een berekening in het tekstveld staan.
 
Vermoedelijk gebruik je de besturingselementbron van het tekstveld om de gemiddelde prijs te berekenen. Als dat zo is, kun je het tekstvak niet meer koppelen aan een veld in de tabel. En als je het tekstvak aan een veld koppelt, heb je geen plek meer voor je formule.
A bit of a conumdrum....

Dit was inderdaad exact het geval. Het werkt nu!

Eén klein schoonheidsfoutje: zodra ik nu in het subformulier een nieuwe waarde invoer update het gemiddelde pas als ik óf het formulier sluit óf van record wissel. Is er wellicht een manier om dit gemakkelijk op te lossen? :)
 
Je kunt kijken of je de code kunt laten uitvoeren bij de acties <Bij gewijzigd> of <Na bijwerken>. Daar moet je een beetje mee spelen. Je hebt ook nog bijvoorbeeld <Bij Gegevenswijzigen> en <Bij selectiewijzigen>.
 
Ok bedankt! Ik zal eens wat proberen.

Dan nog iets :) Doordat Access nu automatisch het gemiddelde invult geeft ie voor een leeg record logischerwijs 0,00. Dit is op zich totaal geen probleem maar nou wil het wel eens het geval zijn dat als je door de records heen bladert je per ongeluk een keer te veel klikt en daarom automatisch bij het aanmaken van een nieuw record belandt.

Is het mogelijk om een knop te maken die stop bij de laatste record en niet doorgaat naar het aanmaken van een nieuw record?
 
Je kunt een Docmd.Undo actie koppelen aan een bladerknop bijvoorbeeld. Of, veel beter, de eigenschap <Toevoegen toestaan> op Nee zetten. En met een knop een nieuw record toevoegen, waarbij je uiteraard met VBA de eigenschap op Ja zet.
 
Of, veel beter, de eigenschap <Toevoegen toestaan> op Nee zetten. En met een knop een nieuw record toevoegen, waarbij je uiteraard met VBA de eigenschap op Ja zet.

Het formulier op <toevoegen toestaan> Nee zetten is gelukt. De knop is wat lastiger.. Ik heb er een om een nieuwe record toe te voegen, maar hoe zorg ik dat het hierbij wel toegestaan is?
 
Laatst bewerkt:
Dan moet je de eigenschap AllowAdditions op True zetten. Bijvoorbeeld zo:

Code:
Private Sub cmdNieuwRecord_Click()
[B]    Me.AllowAdditions = True
[/B]    DoCmd.GoToRecord , , acNewRec
End Sub
En op de bladerknoppen:
Code:
Private Sub cmdVolgende_Click()
On Error GoTo Err_cmdVolgende_Click
[B]    Me.AllowAdditions = False
[/B]    DoCmd.GoToRecord , , acNext
    Exit Sub
Err_cmdVolgende_Click:
    DoCmd.GoToRecord , , acFirst
End Sub
En dat uiteraard voor alle bladerknoppen, want je wilt voorkomen dat je met bladeren op een nieuw record terecht komt.
 
Top! Het werkt als een trein.

Is er een manier om makkelijk achter die codes te komen? (Dan hoef ik er niet telkens om te vragen) De help functie in Access werkt mijns inziens niet al te best en ook googlen is lastig als je niet exact weet waar je naar zoekt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan