naar lijst in ander formulier verwijzen

Status
Niet open voor verdere reacties.

so10070

Gebruiker
Lid geworden
4 feb 2014
Berichten
419
Ik heb twee formulieren: frmRolbeheer en frmsubBulk met frmsubBulk als subformulier van frmBulk (zie bijlage). Op het formulier frmRolbeheer zijn er in een lijst meerdere items geselecteerd (lstThemas). Ik wil nu in een loop (For each) verwijzen naar de lijst in het formulier frmRolbeheer, maar ik slaag er niet in om het object "lstThemas" correct aan te spreken. Ik doe dit nu zo:
Code:
            [COLOR="#FF0000"][B]For Each varItem In Forms("frmRolBeheer").Controls.Item("lstThemas").itemselected[/B][/COLOR]
                With rst6 'tblRolgebruikersThemas
                    .AddNew
                    !GRID = iNieuwRecht
                    !GTNaam = Forms("frmRolBeheer").Controls.Item("lstThemas").Column(0, varItem)
                    .Update
                End With
            Next varItem
Dit geeft de foutmelding "Deze eigenschap of methode wordt niet ondersteund door dit object". Ik weet niet goed hoe hiermee om te springen. Iemand raad! :(
Heb ook reeds dit geprobeerd, maar geeft dezelfde fout
Code:
'            For Each varItem In Forms("frmRolbeheer").lstThemas.itemselected
'            For Each varItem In Forms!frmRolbeheer!lstThemas.itemselected
 

Bijlagen

  • Lijst.png
    Lijst.png
    30,3 KB · Weergaven: 37
for each varItem in Forms("frmRolbeheer").lstThemas.Itemsselected
dus ss in plaats van s
of als je de lijst vanuit het formulier zelf aanspreekt:
for each varItem in me.lstThemas.Itemsselected
 
Laatst bewerkt:
Gebruik altijd IntelliSense, want daarmee voorkom je dit soort typefouten.
 
Uiteraard! :eek:. Maar IntelliSense is niet actief op alle niveaus.
 
Dat moet je eens uitleggen, want daar snap ik helemaal niks van. Nooit iets gemerkt van 'niveaus'.
 
Wel, meestal wordt de functie of opdracht met al zijn argumenten voorgesteld, soms ook niet of wordt een lijst gevisualiseerd van al de mogelijke methoden of eigenschappen. Bijvoorbeeld:
Wel
Code:
Docmd.openform ...
Niet
Code:
Forms!frmrolbeheer!lstThemas.ItemsSelected
Het eerste geval krijg je de argumenten
Het tweede geval krijg je bij het laatste kenmerk (ItemsSelected) geen voorstel. Je merkt dit aan de correctie die na <enter> doorgevoerd wordt. Door snel te werken zie ik dit soms over het hoofd!
 
Dat heeft weinig met niveau's te maken, maar alles met wat je opvraagt. Het Uitroepteken doet niks anders dan verwijzen naar de objecten, zoals formulieren. Je kunt er geen Eigenschappen of Actiesmee opvragen. Dat doe je alleen als je een Punt gebruikt. Ik vermijd, als het even kan, dus het uitroepteken en gebruik altijd een punt. Jammer genoeg snappen ze dat bij Microsoft zelf nog niet helemaal, want hun voorbeeldcodes doen dat dus zelden. Maar dit:
Code:
Forms!frmrolbeheer!lstThemas.ItemsSelected
Is doorgaans hetzelfde als dit:
Code:
Me.lstThemas.ItemsSelected
Het tweede is niet alleen korter, maar voorkomt dat je fouten maakt. Al is dat voordeel natuurlijk niet aanwezig voor hele snelle typers die nooit fouten maken :D.
 
Ja, maar hoe verwijs is naar dat ander formulier frmRolbeheer vanuit frmBulk, zonder dat dat een subform is? :eek:
 
zoals je in je code deed:

forms("frmRolbeheer"), en de controle elementen kan je ook via de verzamelingen bereiken ; forms("frmRolbeheer").controls("lstThemas").Itemsselected

in queries: Forms!frmRolbeheer
 
Maak het jezelf gemakkelijk, en wijs je subformulier toe aan een variabele. Dan kun je hem daarna met IntelliSense gebruiken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan