VBA Code IF then subform

Status
Niet open voor verdere reacties.

allard1977

Gebruiker
Lid geworden
7 feb 2011
Berichten
215
Hallo,

IK ben bezig met een code te maken, maar de criteria die ik vraag lukt niet.

Code:
If Forms![FormClassEnteryConf]![SubFormClassEntery]!NR = 7 Then
Me!SUBfrom_NonRegClass.LinkChildFields = "ColoriID"
Me!SUBfrom_NonRegClass.LinkMasterFields = "ColoriID"

If Me.SexID = 17 Then
Me.SUBfrom_NonRegClass.SexID_txt = 18
End If
End If

Linkchild en master field gaat goed.
maar de tweede IF gaat goed tot de THEN.
ik zou graag als SexID in form 17 is dat in de subform SexID_txt alleen 18 laat zien.

wat schrijf ik fout?

Alvast heel erg bedankt.
 
Ik snap even niet wat de bedoeling is van de eerste IF constructie; een hoofdformulier koppelen aan een subformulier als het veld NR de waarde 7 heeft? En wat dan? Als je de code daarna nóg een keer draait, en NR heeft de waarde 8, dan blijft de koppeling dus gewoon bestaan op het hoofdformulier, want je haalt hem niet weg verder. Verder snap ik "uberhaupt niet waarom je met VBA een koppeling wilt maken, als je dat ook gewoon met Eigenschappen kan doen. Ik zie de meerwaarde niet.

Maar dat heeft verder niks met je vraag te maken. Die ik dus niet snap... Me.SexID is dus een waarde die uit het hoofdformulier komt. En als die de waarde 17 heeft, zet je het getal 18 in een tekstveld (SexID_txt))

Ik zou de code in ieder geval zo doen:
Code:
Dim subFrm1 As Form, subFrm2 As Form
    Set subFrm1 = Forms![FormClassEnteryConf]![SubFormClassEntery]
    Set subFrm2 = Forms![FormClassEnteryConf]![SUBfrom_NonRegClass]
    With subFrm1
    If subFrm1.NR = 7 Then
        subFrm2.LinkChildFields = "ColoriID"
        subFrm2.LinkMasterFields = "ColoriID"
        If Me.SexID = 17 Then subFrm2.SexID_txt = 18
    End If
 
Beste OctaFish,

Ik heb gekozen voor vba omdat ik graag het zelfde formulier wil gebruiken. Dus ik heb het zo gemaakt als dat ik de linkfields kan verander opbasis van een waarde uit een formulier.
nummer word wel verwijderd op andere form.
Nu specifiek voor deze code.
Het programma waar ik aan werk is voor honden shows. nu bestaat er een koppel klasse, dit zijn twee honden van de zelfde kleur en van verschillend geslacht.
nu wordt er formulier1 aangegeven dat de hond in koppel klasse (7) word in geschreven. dus als er 7 word aangegeven wordt formulier from_NonRegClass geopend met SUBfrom_NonRegClass. Met de vba code linkfileds wordt de zelfde vacht kleur aan gegeven in de subform. en dan moet ook in de subform alleen het andere geslacht worden aangegeven. SexID 17 = teef en 18 = rue.
Maar is erg moelijk uitleggen.
ik zal u code proberen. heel erg bedankt voor u tijd.
 
Ik snap het inderdaad nog steeds niet helemaal; je formulier <from_NonRegClass> geopend met <SUBfrom_NonRegClass> blijven dus staan, maar de ene keer koppel je op kleur, en de andere keer op (pak-m-beet) aantal poten? Volgens mij ben je beter af met (gefilterde) keuzelijsten i.p.v. subformulieren. Maar dat is nog niet op feiten gebaseerd natuurlijk, meer een gevoel. Hangt er ook een beetje af wat je doet met dat subformulier. Zelf ben ik een voorstander van een vast formulier (met subformulieren) waarvan ik dan de bron verander. In dat geval kan het inderdaad wel eens voorkomen dat je ook de koppelvelden meepakt trouwens, dus ik doe dat zelf ook wel eens. Maar liever niet dus.
 
komt aardig in de buurt. ik gebruik het subform_NonRegClass voor het (tijdelijk) koppel van honden. Door een check aan te vinken worden de dieren gekoppeld. zodat ze later in de cataloog bijelkaar staan als een groep met het zelfde nummer. dit heb ik nodig bij koppel klasse, vader of moeder met 4 nakomelingen.
 
oei nu zie ik dat ik iet doms heb gedaan.
ik wil graag een filter op het subformulier zetten.
dus if SexID = 17 Then
Wil ik alle record met 18 zien.
 
Dat doe je door het filter aan te passen, niet door '18' in een tekstveld te zetten :).
 
Ja kwam er achter dat ik niet aan het filter was maar aan het herschrijven. Sorry voor het ongemak.
dit is mijn code geworden
Code:
Private Sub Form_Current()
If Forms![FormClassEnteryConf]![SubFormClassEntery]!NR = 5 Then
Me.Studdog.Visible = True
End If
If Forms![FormClassEnteryConf]![SubFormClassEntery]!NR = 6 Then
Me.BroodBitch.Visible = True
End If
If Forms![FormClassEnteryConf]![SubFormClassEntery]!NR = 7 Then
  If Forms!form_NonRegClass!SexID = 17 Then
  DoCmd.SetFilter wherecondition:="[SexID] like 18"
  Me.BraceClass.Visible = True
  End If
  If Forms!form_NonRegClass!SexID = 18 Then
  DoCmd.SetFilter wherecondition:="[SexID] like 17"
  Me.BraceClass.Visible = True
  End If
End If
End Sub

heel erg bedankt
 
Kan nog wel wat strakker; sowieso zou ik de IF's in één vergelijking trekken en niet in allemaal verschillende.
Code:
Private Sub Form_Current()
Dim frm As Form
    Set frm = Forms!FormClassEnteryConf!SubFormClassEntery
    Select Case frm.NR
        Case 5
            Me.Studdog.Visible = True
        Case 6
            Me.BroodBitch.Visible = True
        Case 7
            If Forms!form_NonRegClass!SexID = 17 Then
                DoCmd.SetFilter WhereCondition:="[SexID] LIKE 18"
                Me.BraceClass.Visible = True
            ElseIf Forms!form_NonRegClass!SexID = 18 Then
                DoCmd.SetFilter WhereCondition:="[SexID] LIKE 17"
                Me.BraceClass.Visible = True
            End If
        Case Else
    End Select
End Sub
En LIKE gebruiken bij een getalvergelijking lijkt mij ook niet de meest voor de hand liggende keuze.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan