update van gegevens

Status
Niet open voor verdere reacties.

droogers

Gebruiker
Lid geworden
27 jun 2001
Berichten
173
Hallo,

In het formulier "FrmMuterenLeden" heb ik de namen en adressen van personen gezet. Als ik een straat gekozen heb dan vult het systeem automatisch de vakjes wijk en wijkverjaardagsfonds in. Deze gegevens staan in de tabel "TblInvoerlijst". Nu komt het probleem. Als ik in de tabel "TblInvoerlijst" bij Straat een andere "wijk" invul dan worden deze gegevens niet automatisch geupdate naar het formulier "FrmMuterenLeden" (=TblGegevensLeden) . Ik heb wel relaties gemaakt tussen de verschillende tabellen. In het bijgevoegde bestand kun je de database vinden.

Wie kan mij helpen ?

Johan
 
In het eigenschappenscherm van het formulier open je de vba-editor door bij de gebeurtenis 'na bijwerken' op de puntjes erachter te klikken. Typ het woord 'refresh' en sla het forlmulier op.
 
Bedankt voor je reactie. Jouw truuc werkt goed maar doet nog niet precies wat ik wil. De gegevens worden nu pas ververst op het moment dat je het record opent in het formulier. Ik zou graag zien dat de records allemaal gelijk ververst worden.

Johan
 
Op de site http://www.mvps.org/access/forms/frm0056.htm heb ik een truuk gevonden waarmee je de gegevens zou kunnen updaten. Ik begrijp alleen niet helemaal goed wat ik met de code moet doen. Ik heb de code in een module gezet. Vanuit het formulier frminvoer verwijs ik naar de code. Ik krijg alleen in de code een foutmeling.

Johan
 
Wat daar gebeurt is het volgende:
Er wordt een lijst gemaakt van alle openstaande formulieren in access.
Van elk formulier wordt bepaald wat het sleutelattribuut is en welk record op dit moment op het formulier getoond wordt.
Vervolgens worden alle formulieren gesloten.
Daarna worden alle formulieren weer geopend en wordt op elk formulier weer het record getoond wat erop stond.
Jawel, dit is een zeer omslachtige manier om de gegevens op een formulier te verversen.

Als het je om één formulier gaat dan kun je ook op het moment dat je dat wilt (en dat is afhankelijk van de functionaliteit van je toepassing) in je code een regel opnemen:

forms![frmJouwFormulier].Requery

Uit je beschrijving blijkt dat je het wijzigen van de gegevens middels een ander formulier doet. Dit betekent dat je de requery kunt uitvoeren bij het On Activate event van het formulier waarvan je de gegevens wilt bijwerken.
 
Laatst bewerkt:
Bedankt voor je reactie. Ik heb je code in het formulier gezet. Het probleem is echter dat dan alleen de record word vernieuwd die dan op het scherm verschijnt. Wat ik wil is dat alle records al zijn vernieuwd op het moment dat ik het formulier open. Ik dacht dat dat mogelijk was met de code op de site die ik genoemd heb in mijn vorige bericht. Ik begrijp alleen niet helemaal goed hoe ik die code moet implememteren in mijn database.

Johan
 
Dat is alleen noodzakelijk als je met meerdere gebruikers tegelijkertijd op één gegevensset aan het muteren bent.

Daarvoor heb je de Refresh-methode tot je beschikking. Deze kun je toepassen op formulieren.

Ook deze kun je aanroepen bij het on activate event van het formulier:

Me.Refresh

Nog even ter informatie uit de Access help:

Microsoft Access refreshes records automatically, based on the Refresh Interval setting on the Advanced tab of the Options dialog box, available by clicking Options on the Tools menu. ODBC data sources are refreshed based on the ODBC Refresh Interval setting on the Advanced tab of the Options dialog box. You can use the Refresh method to view changes that have been made to the current set of records in a form or datasheet since the record source underlying the form or datasheet was last refreshed.

The Refresh method shows only changes made to records in the current set. Since the Refresh method doesn't actually requery the database, the current set won't include records that have been added or exclude records that have been deleted since the database was last requeried. Nor will it exclude records that no longer satisfy the criteria of the query or filter. To requery the database, use the Requery method. When the record source for a form is requeried, the current set of records will accurately reflect all data in the record source.
 
Bedankt voor je reactie. Het probleem blijft echter dat alleen de record word vernieuwd die dan op het scherm verschijnt.

Johan
 
Nee, dat is niet waar!
The Refresh method shows only changes made to records in the current set.

Met de current set wordt het SQL statement bedoeld waarop het formulier gebaseerd is (inclusief eventuele filters). Dat is de set waar je op dat moment naar kijkt!

Het is ook niet echt zinvol om meer gegevens te verversen, want die zie je toch niet!
 
Ik wil niet vervelend zijn maar bij mij wordt toch echt alleen het record vernieuwd wat op het schermp staat en niet de andere records uit hetzelfde formulier.

Johan
 
Dat betekent dus dat het SQL-statement waarop je formulier gebaseerd is op het moment van de refresh alleen dat ene record retour geeft.

Wat je dan moet doen is voor de refresh de rowsource van je formulier opnieuw samenstellen, eventuele filters verwijderen en daarna een refresh en een repaint van je formulier doen.

Je bent dan wel alle selecties die je op je formulier hebt gedaan kwijt (die bepalen namelijk het filter).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan