Conditional opening of field?

M

majahops

Hello, I have a quick (probably EASY) question. If anybody can answer this
for me, it would mean the WORLD to me.

I have a field in a table "Consent Form Returned?"... which I want to be by
default a check box -- with unchecked meaning no and checked meaning "yes".
However, upon being checked "yes", I'd like either that field to convert into
a date field or to unlock an adjacent "Return Date" field, where the date
that the form was returned can be entered.

Can anybody please tell me how to complete this simple task? Thank you so
much you have no idea how much I'd appreciate it. It's my birthday, it'd be
an awesome present :)

Thanks!

Tim
 
J

Jerry Whittle

It's not easy. In fact you can not do it in a table or query. Also you can't
convert a Yes/No field to a Date field.

Now the good news! You can do this in a form. Make your return date field
text box invisible and on the Yes/No check box do something on the On Update
event to make the Return Date text box visible again.
 
M

majahops

Thank you so much! You're gonna wanna beat me up here, but what would the
"something" I should write in "On Update" be - roughly? Thanks so much, I'll
understand if you haven't the time to answer.

Thanks again!

Tim

Jerry said:
It's not easy. In fact you can not do it in a table or query. Also you can't
convert a Yes/No field to a Date field.

Now the good news! You can do this in a form. Make your return date field
text box invisible and on the Yes/No check box do something on the On Update
event to make the Return Date text box visible again.
Hello, I have a quick (probably EASY) question. If anybody can answer this
for me, it would mean the WORLD to me.
[quoted text clipped - 12 lines]
 
J

John W. Vinson

Hello, I have a quick (probably EASY) question. If anybody can answer this
for me, it would mean the WORLD to me.

I have a field in a table "Consent Form Returned?"... which I want to be by
default a check box -- with unchecked meaning no and checked meaning "yes".
However, upon being checked "yes", I'd like either that field to convert into
a date field or to unlock an adjacent "Return Date" field, where the date
that the form was returned can be entered.

Can anybody please tell me how to complete this simple task? Thank you so
much you have no idea how much I'd appreciate it. It's my birthday, it'd be
an awesome present :)

Thanks!

Tim

I hope Jerry doesn't mind my jumping in...

You would have a Form with a checkbox chkFormReturned (I'd suggest NOT using
spaces, question marks, or other special characters in fieldnames or control
names) bound to your yes/no field, and a separate textbox txtReturnDate. I'd
leave txtReturnDate's Visible property set to yes, but its Enabled property
set to No - it will be greyed out and will not allow editing.

Select chkFormReturned in form design view, and view its Properties. On the
Events tab find the AfterUpdate event; click the ... icon by it and select
"Code Builder". Access will put you into the VBA editor with a Sub and End Sub
line. Edit these to:

Private Sub chkFormReturned_AfterUpdate()
Me!txtReturnDate.Enabled = Me!chkFormReturned
End Sub

This will set the textbox's Enabled property to True if the checkbox is True,
False if it's not.

You'll also need to add the same line in the Form's Current event so that when
you move from record to record the control is enabled or disabled
appropriately.

John W. Vinson [MVP]
 
J

Jerry Whittle

Hi,

First create a form base on the table. You'll have to change the field names
below to what's in your form.

Second make the Locked property for the [Return Date] text box Yes. Do this
by right clicking on the text box while in design view. Bring up Properties
and go to the Data tab. You'll find Locked there.

Next right click on the [Returned] check box and bring up it's properties.
Go to the Event tab and select After Update. Next click on the Build button
(three dots on the right side) and select code builder.

In the VBA window between Private Sub OpenClose_AfterUpdate() and End Sub
put the following:

If Me.[Returned] = -1 Then
Me.[Return Date].Locked = False
Me.[Return Date] = Date()
End IF

Between OpenClose_AfterUpdate() and End Sub put the following:

If Me.[Returned] = -1 Then
Me.[Return Date].Locked = False
Else
Me.[Return Date].Locked = True
End If

Go up to Debug, Compile and make sure you don't get an error. Next Save and
close the VBA window.

Go back to the form and save it. Then open the form in Form View and test,
test, test.

You might want to do all this in a copy of the database and them import the
form into production once you are sure that it works as you wish.

--
Jerry Whittle, Microsoft Access MVP
Light. Strong. Cheap. Pick two. Keith Bontrager - Bicycle Builder.


majahops said:
Thank you so much! You're gonna wanna beat me up here, but what would the
"something" I should write in "On Update" be - roughly? Thanks so much, I'll
understand if you haven't the time to answer.

Thanks again!

Tim

Jerry said:
It's not easy. In fact you can not do it in a table or query. Also you can't
convert a Yes/No field to a Date field.

Now the good news! You can do this in a form. Make your return date field
text box invisible and on the Yes/No check box do something on the On Update
event to make the Return Date text box visible again.
Hello, I have a quick (probably EASY) question. If anybody can answer this
for me, it would mean the WORLD to me.
[quoted text clipped - 12 lines]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top