dbTalk Databases Forums  

Enabled conditional

comp.databases.ms-access comp.databases.ms-access


Discuss Enabled conditional in the comp.databases.ms-access forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
WhathaveIdone?
 
Posts: n/a

Default Enabled conditional - 08-26-2010 , 09:51 AM






Sounds easy, I know. So I have a couple of questions about my code for
a form:
Private Sub SurrPeriod_GotFocus()
Select Case Me.SurrPeriod.Value
Case Is >= 2
Me.Year2.Enabled = True
Case Is >= 3
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 4
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 5
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 6
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 7
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 8
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 9
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 10
Me.Year10.Enabled = True
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Else
Me.Year10.Enabled = False
Me.Year9.Enabled = False
Me.Year8.Enabled = False
Me.Year7.Enabled = False
Me.Year6.Enabled = False
Me.Year5.Enabled = False
Me.Year4.Enabled = False
Me.Year3.Enabled = False
Me.Year2.Enabled = False
End Select
End Sub
I can't quite seem to nail down which control to tie this code to or
on which event or on the form itself. Have I got the code wrong
somewhere or something? Basically it should be If [SurrPeriod] >= #,
enable the years for this record only. Next record will based on value
of [SurrPeriod], etc.

Also, I just realized I haven't accounted for Null values in
[SurrPeriod]. What might be a good approach to that?
-WhathaveIdone?

Reply With Quote
  #2  
Old   
Marshall Barton
 
Posts: n/a

Default Re: Enabled conditional - 08-26-2010 , 11:38 AM






WhathaveIdone? wrote:

Quote:
Sounds easy, I know. So I have a couple of questions about my code for
a form:
Private Sub SurrPeriod_GotFocus()
Select Case Me.SurrPeriod.Value
Case Is >= 2
Me.Year2.Enabled = True
Case Is >= 3
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 4
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 5
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 6
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 7
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 8
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 9
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 10
Me.Year10.Enabled = True
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Else
Me.Year10.Enabled = False
Me.Year9.Enabled = False
Me.Year8.Enabled = False
Me.Year7.Enabled = False
Me.Year6.Enabled = False
Me.Year5.Enabled = False
Me.Year4.Enabled = False
Me.Year3.Enabled = False
Me.Year2.Enabled = False
End Select
End Sub
I can't quite seem to nail down which control to tie this code to or
on which event or on the form itself. Have I got the code wrong
somewhere or something? Basically it should be If [SurrPeriod] >= #,
enable the years for this record only. Next record will based on value
of [SurrPeriod], etc.

Also, I just realized I haven't accounted for Null values in
[SurrPeriod]. What might be a good approach to that?

Use:
If Is Null(Me.SurrPeriod.Value) Then
to check for Null before the Select Case statement. But you
won't need that if the Case Else does what you want when it
is Null.

Where to put the code depends on what you are trying to
accomplish. GotFocus doesn't make much sense to me, but I
don't know the goal or under what conditions it applies.
Possibly you will want try it in SurrPeriod's AfterUpdate
event and in the form's Current event.

--
Marsh

Reply With Quote
  #3  
Old   
paii, Ron
 
Posts: n/a

Default Re: Enabled conditional - 08-26-2010 , 02:08 PM



"Marshall Barton" <marshbarton (AT) wowway (DOT) com> wrote

Quote:
WhathaveIdone? wrote:

Sounds easy, I know. So I have a couple of questions about my code for
a form:
Private Sub SurrPeriod_GotFocus()
Select Case Me.SurrPeriod.Value
Case Is >= 2
Me.Year2.Enabled = True
Case Is >= 3
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 4
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 5
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 6
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 7
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 8
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 9
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 10
Me.Year10.Enabled = True
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Else
Me.Year10.Enabled = False
Me.Year9.Enabled = False
Me.Year8.Enabled = False
Me.Year7.Enabled = False
Me.Year6.Enabled = False
Me.Year5.Enabled = False
Me.Year4.Enabled = False
Me.Year3.Enabled = False
Me.Year2.Enabled = False
End Select
End Sub
I can't quite seem to nail down which control to tie this code to or
on which event or on the form itself. Have I got the code wrong
somewhere or something? Basically it should be If [SurrPeriod] >= #,
enable the years for this record only. Next record will based on value
of [SurrPeriod], etc.

Also, I just realized I haven't accounted for Null values in
[SurrPeriod]. What might be a good approach to that?


Use:
If Is Null(Me.SurrPeriod.Value) Then
to check for Null before the Select Case statement. But you
won't need that if the Case Else does what you want when it
is Null.

Where to put the code depends on what you are trying to
accomplish. GotFocus doesn't make much sense to me, but I
don't know the goal or under what conditions it applies.
Possibly you will want try it in SurrPeriod's AfterUpdate
event and in the form's Current event.

--
Marsh
in the onCurrent and/or afterupdate event

Dim iYear as Integer
Dim iEnabled as Integer
iYear = nz(Me.SurrPeriod.Value,0)
if iYear >1 then
iEnabled = True
else
iEnabled = False
iYear = 10
endif
for i = 2 to iYear
Me.("Year" & i).Enabled = iEnabled
Next

You realize in your code and the above code, Enabled for each of the year
fields will only be set to False in the else case.

To act more as a toggle you can do this

Dim iYear as Integer
iYear = nz(Me.SurrPeriod.Value,0)
for i = 2 to 10
Me.("Year" & i).Enabled = iif(i<=iYear, True, False)
Next

Reply With Quote
  #4  
Old   
David W. Fenton
 
Posts: n/a

Default Re: Enabled conditional - 08-26-2010 , 04:20 PM



"WhathaveIdone?" <brasus04 (AT) gmail (DOT) com> wrote in
news:05133815-9c9a-40a1-82d9-6521e0563ef4 (AT) l32g2000prn (DOT) googlegroups.co
m:

Quote:
Sounds easy, I know. So I have a couple of questions about my code
for a form:
Looks to me like you have a bad data structure. Can you rectify that
or are you stuck with it?

--
David W. Fenton http://www.dfenton.com/
contact via website only http://www.dfenton.com/DFA/

Reply With Quote
  #5  
Old   
Marshall Barton
 
Posts: n/a

Default Re: Enabled conditional - 08-26-2010 , 05:33 PM



paii, Ron wrote:
Quote:
"Marshall Barton" wrote
WhathaveIdone? wrote:

Sounds easy, I know. So I have a couple of questions about my code for
a form:
Private Sub SurrPeriod_GotFocus()
Select Case Me.SurrPeriod.Value
Case Is >= 2
Me.Year2.Enabled = True
Case Is >= 3
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 4
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 5
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 6
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 7
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 8
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 9
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Is >= 10
Me.Year10.Enabled = True
Me.Year9.Enabled = True
Me.Year8.Enabled = True
Me.Year7.Enabled = True
Me.Year6.Enabled = True
Me.Year5.Enabled = True
Me.Year4.Enabled = True
Me.Year3.Enabled = True
Me.Year2.Enabled = True
Case Else
Me.Year10.Enabled = False
Me.Year9.Enabled = False
Me.Year8.Enabled = False
Me.Year7.Enabled = False
Me.Year6.Enabled = False
Me.Year5.Enabled = False
Me.Year4.Enabled = False
Me.Year3.Enabled = False
Me.Year2.Enabled = False
End Select
End Sub
I can't quite seem to nail down which control to tie this code to or
on which event or on the form itself. Have I got the code wrong
somewhere or something? Basically it should be If [SurrPeriod] >= #,
enable the years for this record only. Next record will based on value
of [SurrPeriod], etc.

Also, I just realized I haven't accounted for Null values in
[SurrPeriod]. What might be a good approach to that?


Use:
If Is Null(Me.SurrPeriod.Value) Then
to check for Null before the Select Case statement. But you
won't need that if the Case Else does what you want when it
is Null.

Where to put the code depends on what you are trying to
accomplish. GotFocus doesn't make much sense to me, but I
don't know the goal or under what conditions it applies.
Possibly you will want try it in SurrPeriod's AfterUpdate
event and in the form's Current event.


in the onCurrent and/or afterupdate event
[snip]
To act more as a toggle you can do this

Dim iYear as Integer
iYear = nz(Me.SurrPeriod.Value,0)
for i = 2 to 10
Me.("Year" & i).Enabled = iif(i<=iYear, True, False)
Next

At least that will work. I forgot to reverse the order of
the Case Statements and missed that the other ones were not
set to False.

Just for the sake of fewer lines of code ;-)

for i = 2 to 10
Me.("Year" & i).Enabled = (i<=Nz(Me.SurrPeriod,0))
Next

--
Marsh

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.