Requery/Refresh op subform

Status
Niet open voor verdere reacties.

Visara

Gebruiker
Lid geworden
10 mrt 2019
Berichten
225
Goedemiddag,

Ik heb een access-bestand voor mezelf gemaakt om eten en gewicht bij te houden. (Ja, daar bestaan al sites en apps voor, maar ik het vind het leuk dit zelf in elkaar te knutselen :rolleyes: )

Ik heb een ongebonden Formulier (fMenu). Dit is mijn dashbord/menu.
Op dit ongebonden Formulier heb ik twee formulieren als Sub-form toegevoegd.
Visara.jpg

Ik loop tegen twee dingen aan:
Wanneer ik in het linker formulier een record toevoeg, dan is die niet vanzelf zichtbaar in het formulier bovenin.
Verder wil ik graag dat de twee formulieren uit zichzelf naar "beneden" gescrollt blijven zoals op het screenshot het geval is. Laatste record onderaan in beeld. En nee, ik wil de volgorde niet omdraaien.
Bij het opstarten van het bestand lukt dat met:
Code:
Private Sub Form_Open(Cancel As Integer)
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub
Dezelfde functie laten lopen bij AfterUpdate en/of DataChange(ByVal Reason As Long) heeft geen effect.

Verder:
Je kan als gebruiker het formulier 'Journaal' openen. Deze komt dan fullscreen in beeld (DoCmd.Maximize, popup & modal = Yes)
Als je dit Journaal weer afsluit wil ik graag dat de aanpassingen zichtbaar zijn verwerkt in het Overzicht en dat het overzicht de focus heeft op het laatste record, maar dat lukt me niet.
Dit heb ik als OnClose event bij het formulier 'Journaal':
Code:
Private Sub Form_Close()
DoCmd.RunCommand acCmdSaveRecord
Forms![fMenu]![NaamFormOverzicht].Form.Requery
End Sub
Ik krijg het niet voor elkaar om daar iets met DoCmd.RunCommand acCmdRecordsGoToLast tussen te frummelen.

Ik heb diverse AfterUpdate, OnFocus, OnActivate, Requery, ReCalc, RePaint etc pogingen gedaan, maar krijg het niet werkend.

Kan iemand mij helpen?

Met vriendelijke groet, Visara
 

Bijlagen

Laatst bewerkt:
Als ik naar je plaatje kijk, dan denk ik in eerste instantie: waarom? Was het jezelf al opgevallen dat het onderste subformulier exact dezelfde twee velden laat zien als het bovenste formulier? Dat is toch zonde van de ruimte, en totaal overbodig (dat tweede subformulier)? Gebruik dan in ieder geval dat tweede subformulier in aflopende sortering, dan heeft het tenminste nog enig nut.

Zelf zie ik er totaal geen voordeel in, want ik neem dan ook maar aan dat de twee formulieren gebaseerd zijn op dezelfde gegevensbron. Als je in het overzicht een record wilt toevoegen op basis van datum en gewicht, dan volstaan twee tekstvelden en een knop waarmee je het record toevoegt en het overzicht formulier ververst. Maakt je formulier een stuk overzichtelijker. (Niet fraaier, zolang je de gegevens blad weergave blijft gebruiken, maar dat schijnt smaak te zijn ;)).

Ik wil wel even naar de db kijken, want het moet uiteraard best kunnen, wat je wilt.
 
Bedankt voor uw reactie.
Ja, inderdaad. Eens met u. Ik was er blind voor.
Even snel aangepast en het bestand geplaatst:
Visara2.jpg

De knop 'Invoeren' moet de subform refreshen.
Daar bedoel ik mee: dat het laatste record in de subform zichtbaar is. Verder wil ik graag dat er zoveel mogelijk van de andere records zichtbaar zijn op het subform (dat de lijst niet bijna helemaal is weg-gescrolled dus).

Ik wil ditzelfde ook graag bij het event OnClose bij het formulier fJournaal. Als ik fJournaal sluit kom ik terug in fMenu (screenshot). Het overzicht (subform) moet dan natuurlijk zijn bijgewerkt.

Wordt dat dan zoiets als?
Code:
Forms![fMenu]![fDagOverzicht].Form.Requery
en hoe moet ik de code hier onder toepassen op het subform?
Code:
DoCmd.RunCommand acCmdRecordsGoToLast
Ik ga er vanuit dat ik dat nodig heb om de subform naar de juiste plek te laten scrollen.

Met vriendelijke groet,
Visara
 

Bijlagen

Laatst bewerkt:
Nu je maar één (sub)formulier hebt, zie ik de noodzaak niet van een niet-afhankelijk formulier met een subformulier. Dat maakt de hele handel nodeloos ingewikkeld. Alles kan nu makkelijk op één formulier worden afgehandeld. Sterker nog: óók het formulier fJournaal (wat naar ik aanneem op dezelfde gegevensbron is gebaseerd) kun je makkelijk op hetzelfde formulier afhandelen. Kwestie van dus één formulier maken, en met een tabblad element de verschillende gegevensgroepen die je wilt kunnen zien/muteren op een apart tabblad plaatsen. Dan heb je nergens problemen mee.
 
Als ik toets F5 intik en handmatig het subformulier naar beneden scroll dan heb ik al wat ik wil. Mijn vraag was eigenlijk hoe ik dit effect bereik met Me.Requery oid en bij welk event ik dat dan moet plaatsen.
Als ik dit in tabbladen ga plaatsen zal ik toch ook Repaint/Requery etc op allerlei event plekken moeten plaatsen? Is Access sneller geneigd zichzelf te refreshen bij tabbladen?

Mijn bestand bevat 3 tabellen:
-Producten met hun voedingswaardes
-Journaal: Datum-Tijd-ProductID-GeconsumeerdeHoeveelheid (meerdere producten per datum natuurlijk)
-Datum-Gewicht (1 Gewicht per datum). Inmiddels is fMenu het formulier voor deze tabel.

Met een query tel ik de genuttigde voedingswaardes per dag bij elkaar.
Een query van deze query link ik via Datum aan (Datum-Gewicht), zodat ik kan weergeven wat ik in de subform laat zien.

U veronderstelt dat ik tegen minder moeilijkheden aanloop als ik dit via tabbladen in ga voeren? F5 indrukken en handmatig scrollen levert al op wat er nodig is, vandaar mijn aarzeling.
 
Is Access sneller geneigd zichzelf te refreshen bij tabbladen?
Als je je gegevensbron weergeeft op een formulier met tabbladen, is er geen sprake van/geen noodzaak voor verversen, omdat je altijd naar de actieve gegevensbron kijkt. Het maakt niet uit of je de velden van een tabel of query allemaal op één formulierpagina zet, of dat je die velden verdeelt over een tabbladen object. Het blijft allemaal op dezelfde manier werken. Verversen doe je dus niet. En dat scheelt dus een hoop zaken die je nu extra moet regelen. Ik zal vandaag even naar je database kijken, om te zien of er wat aan te doen is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan