Formuliergegevens verversen

Status
Niet open voor verdere reacties.

joger

Nieuwe gebruiker
Lid geworden
18 dec 2009
Berichten
4
ik gebruik office 2003 EN en heb een formulier gemaakt met tabbladen. Daarop staat bv een subformulier in tabelvorm met leden. Het subform queried de leden uit de ledentabel.
wanneer er nieuwe leden zich aanmelden haal ik die op vanaf de website in excel. Op het formulier staat een commandbutton met een macro die de nieuwe leden append aan de ledentabel. Het subform laat echter dan de nieuwe leden niet zien. Kennelijk omdat het subform statisch is en de ledenquery niet opnieuw uitvoert .
Ook bij andere functies die gemaakt zijn blijven de formulier gegevens onveranderd. Alleen afsluiten en opnieuw openen van het tabbladformulier laat de mutaties zien.

Mijn vraag is: hoe kan je een subformulier zich laten rereshen. Of is mijn opzet soms verkeerd (kan zijn want ik ben nog niet zo ervaren).

alvast bedankt voor een reactie.

Ger
 
Eerst maar even een perceptie om zeep helpen: alle formulieren zijn statisch.. Op het moment dat je een formulier opent, verandert er helemaal niks meer aan. Tenzij je acties instelt, die bijvoorbeeld na een druk op de knop worden uitgevoerd, of door de actie Timer.
Dus, als je een formulier opent, en je klikt op een knop die gegevens toevoegt aan een tabel die je gebruikt voor een subformulier, dan zul je die gegevens inderdaad niet zien. Zodra je het formulier sluit, en opnieuw opent, kijkt het formulier weer naar de gegevens die op dat moment beschikbaar zijn, en hé presto, daar zijn de nieuwe gegevens!
Je moet dus een actie toevoegen aan de Import macro, of aan de knop op het formulier. In de macro zou je misschien een actie ÒpdrachtUitvoeren kunnen toevoegen met de opdracht Vernieuwen. Maar omdat zelden iets doe met macro's (veel te beperkt en lastig...) zou ik het eerder oplossen in de VBA achter de knop. Na het uitvoeren van de import macro zet je dan iets als:

Me[Hoofdformulier].Form.[Subformulier].Form.Requery
Het kan ook zijn dat dit: [Subformulier].Form.Requery al genoeg is.
 
Het werkt (bijna helemaal)

Ik heb deze VBA gemaakt(weliswaar voor een ander tabblad maar het idee blijft hetzelfde).
Op 1 tabblad heb ik een invulformulier wat kinderen indeelt in lesgroepen. Een 2e formulier telt de aantallen per groep. Nadat ik op de commandbutton "Ververs" klik wijzigen de aantallen. Dus dat gaat goed.
echter komt VBA wel met een foutmelding."The command or action isn't available now"
(zie bijlage)

-----------------------------------------------------------------------------------------------------------------
Private Sub CmdVervers_Click()
On Error GoTo Err_CmdVervers_Click
fsubAantalPerGroep.Form.Requery

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

Exit_CmdVervers_Click:
Exit Sub

Err_CmdVervers_Click:
MsgBox Err.Description
Resume Exit_CmdVervers_Click

End Sub
-----------------------------------------------------------------------------------------------------------------
 

Bijlagen

  • naamloos.JPG
    naamloos.JPG
    8,4 KB · Weergaven: 75
Kun je aangeven op welke regel hij de fout genenereert?
Moet één van deze twee zijn.

fsubAantalPerGroep.Form.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

Wat doet overigens de Docmd?
 
Kun je aangeven op welke regel hij de fout genenereert?
Moet één van deze twee zijn.

fsubAantalPerGroep.Form.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

Wat doet overigens de Docmd?
Geen idee wat Docmd doet( autom gegenereerd via de wizard). Zal hem eens uitzetten
 
Nu OK

CMD weggehaald en de foutmelding verschijnt niet meer.

Nu kan ik andere subformulieren met een query aan VBA toevoegen en alles ververst netjes.

Bedankt..
Ger
 
Als de knop gemaakt is met de actie Opslaan, dan kun je de code als volgt aanpassen:

if Me.Dirty Then Me.Dirty=False
fsubAantalPerGroep.Form.Requery

En die andere regel weghalen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan