Command button

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Beste allemaal

Ik heb een databank bestaande uit meerdere tabellen en formulieren.

Nu zou ik graag instellen dat een bepaalde command button (sluit / vorige) enkel maar verschijnt als ik niet vanuit een bepaald formulier een ander formulier open.
Hierbij een voorbeeld:

Als ik formulier nummer 1 open en van hieruit formulier 2 open, moet er op formulier 2 een cmd zijn om formulier 2 te sluiten. Hetzelfde geldt als ik vanuit formulier 3 het 2de formulier open, hetzelfde voor 4 en 5.
Echter, als ik vanuit formulier 6 het 2de formulier open, mag die cmd er niet zijn...

Hoe kan ik dit doen?

MVG
 
Als je nog geen OpenArgs meegeeft bij het openen van het formulier, is het simpel. Dan geef je namelijk een OpenArgs variabele mee aan het te openen formulier. Dat zou een tekst kunnen zijn, of een getal, boeit eigenlijk niet. Bij het openen van het tweede formulier controleer je namelijk of de OpenArgs variabele leeg is of niet, of een bepaalde waarde heeft of niet. (Dat pleit voor getallen; op basis van een getal kun je dan meerdere instellingen regelen. Bij waarde 1: knop tonen, bij 2: knop verbergen en andere knop tonen etc).
 
Ok. ik heb zo'n beetje gesnuffeld want ik moet de draad weer een beetje oppikken.

Het is zo dat het 2de formulier geopend wordt door te dubbelklikken op een record in het 1ste formulier. Achter dat veld zit volgende code :

Code:
Private Sub Patiënt_DblClick(Cancel As Integer)
DoCmd.OpenForm "F_TonenPatient", , , "[Unieke Code]='" & Me![Unieke code] & "'"
End Sub

Nu zou ik dus in het stukje "bij laden" van de commandbutton van het 2de formulier iets moeten zetten alsvolgt:

Code:
  If Not Nz(Me.OpenArgs, "") = "" Then Me.cmdNaarOverzicht.visible = true

of zit ik er nu helemaal langs?
 
De eerste code zou zoiets kunnenzijn:

Code:
    DoCmd.OpenForm "F_TonenPatient", , , "[Unieke Code]='" & Me![Unieke code] & "'", , , "KnopTonen"

Op het formulier "F_TonenPatient" krijg je dan:

Code:
Private Sub Form_Load()
    If Me.OpenArgs = "KnopTonen" Then
        Me.cmdSluiten.Visible = True
    Else
        Me.cmdSluiten.Visible = False
    End If
End Sub
 
Werkt schitterend! Thnx! Heb zo ook andere toepassingen kunnen doen.
Nu een aansluitend vraagje:

Als ik via een veld op formulier 1 een 2de formulier wil openen met volgende code

Code:
DoCmd.OpenForm "F_TonenPatient", , , "[Unieke Code]='" & Me![Unieke code] & "'", , , "KnopTonen"

opent hij het formulier nummer 2 wel, maar legt hij onmiddellijk focus op het eerste formulier, waardoor ik het 2de niet kan zien.
Ik had al eens geprobeerd met een me.form.visible = false toe te voegen, maar dan krijg ik melding dat ik een form dat focus heeft, niet kan verbergen. Uiteraard moet de focus terug op form 1 liggen als ik form 2 sluit...

Er zal wsl wel een gemakkelijke formule zijn, maar ik zie hem niet zo direct...

alvast bedankt!
 
En toch zou het zo moeten werken:
Code:
    Me.Form.Visible = False
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Ik doe dit regelmatig, en heb er nooit problemen mee. Post anders de code eens?
 
Code:
Private Sub Patiënt_DblClick(Cancel As Integer)
Me.Form.Visible = False
DoCmd.OpenForm "F_TonenPatient", , , "[Unieke Code]='" & Me![Unieke code] & "'", , , "KnopTonen"
End Sub

Meer is het niet

maar ik krijg volgende foutmelding, fout 2165
" U kunt een besturingselement dat de focus heeft, niet verbergen"
 
Ik denk dat je op een tekstvak o.i.d. dubbelklikt; doorgaans gebruik je de code op een knop. Bij een tekstvak heb je bij een Click event of Dubbelklik de focus inderdaad op het tekstvak liggen. En dat kun je dan niet verbergen. Bij een knop speelt dat niet.
 
OK.
Ik ben dan al zover dat ik het met een docmd.Minimize kan doen op volgende wijze:

Code:
Private Sub Patiënt_DblClick(Cancel As Integer)
DoCmd.Minimize
DoCmd.OpenForm "F_TonenPatient", acNormal, , "[Unieke Code]='" & Me![Unieke code] & "'", , , "KnopTonen"
End Sub

Heel simpel. Maar het formulier trg maximizen is niet zo simpel als het lijkt.
kan ik dit niet inbouwen in volgende code?

Code:
Private Sub cmdKnopTerug_Click()
DoCmd.Close
End Sub
 
uiteindelijk kon het nog simpeler..

modaal = ja op het tweede formulier en klaar!

erg bedankt voor alle hulp!
C ya soon!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan