[Access2003] controls in subform disablen

Pagina: 1
Acties:

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Ik wil vanuit een hoofdformulier controls in een subformulier (SUB_orders) disablen (.enabled = false)
Hiervoor gebruik ik volgende code:

code:
1
2
Me.SUB_orders.Form.omschrijving.Enabled = FALSE
Me.SUB_orders.Form.artikelkiezer.Enabled = FALSE


Nu stuit ik op 2 problemen:

1. Bij deze handeling verschuift de focus automatisch naar het subformulier. Dit is op zich geen ramp, maar wel als alle controls op dit subformulier disabled moeten worden. Dan krijg ik een foutmelding dat de focus nergens heen kan. Ik kan dat verschuiven van de focus niet tegenhouden.

2. Soms is het subformulier leeg (geen records). Dit geeft uiteraard een probleem, er worden immers geen controls getoond. Ik zou derhalve graag kunnen detecteren of er in het subformulier records getoond worden.

Hoe kan ik bovenstaande probleempjes oplossen?


Ik heb op allerlei manieren gegoogled en ook op msdn gekeken.

Houdoe


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Welke code gebruik je dan op het hoofdformulier? Als het goed is zou door het disablen van een control de focus niet verplaatst moeten worden. Kan je de hele sub die je gebruikt even posten?

Het aantal records op het subformulier kan je volgens mij tellen met Me.Sub_orders.Form.recordsetclone.recordcount.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Boss schreef op donderdag 13 oktober 2005 @ 16:36:
Welke code gebruik je dan op het hoofdformulier? Als het goed is zou door het disablen van een control de focus niet verplaatst moeten worden. Kan je de hele sub die je gebruikt even posten?

Het aantal records op het subformulier kan je volgens mij tellen met Me.Sub_orders.Form.recordsetclone.recordcount.
Dat met recordcount werk! Perfect!
En nu nog die stomme focus...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub blokkeren(keuze)
Dim blokkering As Boolean
blokkering = Not keuze

Me.bestelreferentie.SetFocus
Me.order_toevoegen.Enabled = blokkering
Me.leverdatum.Enabled = blokkering
Me.knp__ref.Visible = blokkering

If Me.SUB_orders.Form.RecordsetClone.RecordCount > 0 Then
  Me.SUB_orders.Form.oplage.Enabled = blokkering
  Me.SUB_orders.Form.omschrijving.Enabled = blokkering
  Me.SUB_orders.Form.artikelkiezer.Enabled = blokkering
  Me.SUB_orders.Form.breedte.Enabled = blokkering
  Me.SUB_orders.Form.lengte.Enabled = blokkering
  Me.SUB_orders.Form.blanco.Visible = blokkering
End If

End Sub


Hij klaagt over .lengte.Enabled. Dit is ook inderdaad het laatste control wat uitgeschakeld wordt. Hierna is er geen control meer dat de focus kan hebben... (blanco is een actieknop).

Houdoe


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Als je eerst via .setfocus de focus naar bijvoorbeeld de knop die de code aanroept verplaatst werkt dat wellicht wel?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Ik zal dat morgen proberen. Maar eigenlijk doe ik dat al (in regel 5)

Houdoe


  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 21-08 15:09

hufkes

nee, daar staat niet hufter!

Eventueel kun je proberen of het soms aan het gebruik van een variabele ligt, mss dat hij bij gewoon FALSE de boel geen focus geeft?
Anders zet je eerst de hele form op invisible, ga je dan de afzonderlijke controls invisibellen en daarna zet je de control (eventueel) weer aan?

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Boss, Hufkes,

Ik heb jullie aanwijzingen geprobeerd, zonder resultaat... Ik ga het maar oplossen door een extra functieloze control op het subform te plaatsen waar de focus naartoe kan verhuizen. Wel een beetje een prul-oplossing, maar op dit moment weet ik geen betere oplossing.
Als iemand een beter oplossing weet...

Houdoe


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Hm, dat kan ik natuurlijk niet toelaten :)

Kan je me eventueel de database mailen, met alleen dat form erin? Dan kan ik er even wat mee spelen en dan zal het wel lukken denk ik.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Boss, de testdatabse is onderweg...

Bedankt!

Houdoe


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
De oplossing om in design-time de bewuste controls al op disabled te zetten werkt bijna, maar niet in volgende situatie:
Ik regel *ook* enabled / disabled middels voorwaardelijke opmaak. En helaas... Dan werkt de oplossing weer niet.

De situatie is derhalve als volgt:

- In geval van 'gefactureerd' (op het hoofdformulier) moeten *alle* controls in *alle* records in het (doorlopend) subformulier op disabled gezet worden;
- In geval van 'niet-gefactureerd' moeten sommige controls in het subformulier voorwaardelijk op disabled gezet worden. Dit doe ik met voorwaardelijke opmaak.

Deze combinatie geeft echter weer het zelfde probleem met focus.

Ik word er zo langzamerhand een beetje gestoord van...

Het liefst zou ik de focus tijdens het op uitschakelen van de controls compleet uitschakelen, en daarna weer op een ingeschakeld veld zetten.

[ Voor 11% gewijzigd door Witte op 14-10-2005 12:01 ]

Houdoe


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Ik heb (als test) in het klanten lijstje ook een veld 'gefactureerd' aangemaakt (ja/nee). Dit veld ook op het formulier geplaatst.

In de voorwaardelijke opmaak van ID en contactpersoonnaam vervolgens:
[gefactureerd]=Waar Or parent![geblokkeerd]=Waar

Enige 'probleem' is nog dat de voorwaardelijke opmaak op het subform niet 'ziet' als op het hoofdform de geblokkeerd status wordt aangepast. Dat is op te lossen door een SUB_contacts.Requery bij geblokkeerd_AfterUpdate.

Ik mail je de database weer even terug, dan zie je het.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 18-08 10:09
Ik nu inderdaad alle controls voorzien van voorwaardelijke opmaak, en niet meer met een procedure. Nu lijkt het prima te werken!

Houdoe

Pagina: 1