Focus terug op record na openen formulier

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

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Goedenavond beste Forumleden,

Nadat door mijn vorige post mijn DB al een stuk beter beter werkt, wil ik nog even vervolgvraag stellen hierover:

Ik gebruik momenteel dus de volgende code op een formulier te openen op basis van de geselecteerde record:

DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmVoorbeeld"

stLinkCriteria = "[VoorbeeldID]=" & Me![VoorbeeldID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Wanneer ik op het formulier weer sluit met een DoCmd.Close, hoe krijg ik dan weer de focus op de record die ik eerder geselecteerd had (en op basis waarvan ik het formulier geopend had)?? Want momenteel selecteert die telkens weer de allereerste record (bovenaan), want niet bepaald gebruiksvriendelijk is...

Welke code kan ik dan plaatsen en ik neem aan dat ik deze dan moet plaatsen bij het DoCmd.Close gedeelte, weer met een stLinkCriteria??
 
Een techniek die je kunt gebruiken is om het tweede formulier als een zgn. Modaal formulier te openen. Dan krijg je deze regel bij het openen:

DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog

Wat hierbij gebeurt is het volgende: op het moment dat het tweede formulier wordt geopend, wordt het eerste formulier a.h.w. geparkeerd. Je kunt hier nu niets meer mee doen, tot het tweede formulier is afgesloten. Dan wordt de rest van de code onder de knop uitgevoerd.
Waarschijnlijk wil je gegevens uit het tweede formulier gebruiken op het eerste formulier? Dat kan in deze constructie dus probleemloos, omdat het eerste formulier nog open is, en je dus zonder meer gegevens heen en weer kunt halen.

Michel
 
Nog een optie is om het 1e formulier verbergen en bij het sluiten van het 2e formulier weer zichtbaar maken.

Je gebruikt dan in het 1e formulier:
Code:
DoCmd.RunCommand acCmdWindowHide
ipv:
Code:
DoCmd.Close

Als je dan het 2e formulier sluit:
Code:
stDocName = "Form1"
DoCmd.Close acForm, "Form2"
DoCmd.OpenForm stDocName, acNormal

Ik gebruik overigens expres geen acCmdWindowUnhide ivm irritante pop-up...
Het formulier wordt dus niet gesloten, maar het is ook niet zichtbaar.
Misschien heb je hier iets aan...
 
Gelukt!

Beste Octafish en Greenery,

Bedankt voor beide oplossingen! Ik heb , , acDialog toegevoegd achter de StLinkCriteria en hiermee werkte het meteen al helemaal naar wens!! Greenery jou oplossing kan ik volgens mij nog toepassen in een ander gedeelte van mijn DB.

Geweldig blij!

Bedankt nogmaals!:thumb:
 
Als aanvulling op Greenery:
Ik gebruik zelf ook regelmatig de truc van het verbergen van formulieren, maar dan met
Me.Visible=False en Forms(Formuliernaam).Visible=True.
Leest (vind ik) iets makkelijker....

Michel
 
Thnx voor de aanvulling Octafish.
Ik ga dit denk ik zelf ook maar toepassen...
Leest idd wat makkelijker. :o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan