Max Wanadoo
max.wanadoo at gmail.com
Tue Sep 29 16:15:58 CDT 2009
John, I can probably dig out an answer for this for you - it is based on OnKey and Keyevents. However I am about to go off to bed (I am in the UK and my milk is boiling over). If you get an answer before tomorrow, please post the fact. If not I will dig it out for you. My feeling is that you are just trying to improve on bunch of similar code and I can help you with that but not just now. Max -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of ASkolits Sent: 29 September 2009 22:09 To: 'Access Developers discussion and problem solving' Subject: Re: [AccessD] How do I pass a control to a function in the ControlSource A person enters a value in a text box and if it's within tolerance, the text box next to it returns a Pass Or Fail. DataEntryBoxName: txtEntry01 ResultsBox: txtEntryResult01 ControlSource: =iif(([txtEntry01] > 10) AND ([txtEntry01] < 12),"PASS","FAIL") If you place that formula in the ControlSource, it calculates on the fly without having to use an event. But what if you have 100 different text boxes and result boxes (txtEntry01, txtEntry02, txtEntry03...) I'd have to change the control source of every result box with the proper control names. ControlSource: =iif(([txtEntry01] > 10) AND ([txtEntry01] < 12),"PASS","FAIL") ControlSource: =iif(([txtEntry02] > 10) AND ([txtEntry02] < 12),"PASS","FAIL") ControlSource: =iif(([txtEntry03] > 10) AND ([txtEntry03] < 12),"PASS","FAIL") ControlSource: =iif(([txtEntry04] > 10) AND ([txtEntry04] < 12),"PASS","FAIL") Etc... But If I had a function call on the ControlSource that gave me the calling control's name, I could one control source. (Note: In this function, I use the last two characters of the calling control number to find the 'data entry' text box name.) ControlName: txtEntryResult01 ControlSource: =GetResult(ThisControl) Function GetResult(ctrl as control) Dim strDataEntryBox as string 'Get Data Entry Text Box Name strDataEntryBox = "txtEntry" & right(ctrl.name,2) if me(strDataEntryBox) > 10 and me(strDataEntryBox) < 12 then GetResult="Pass" Else GetResult="FAIL" End if End There are a bunch of way to do this. I could always use the AfterUpdate event on each Data entry text box, but would also have to enumerate through every control each time the form opens to refresh the results box. I'm just trying to cut down on all the work necessary to maintain all those different ControlSources when they essentially do the same thing. JOhn -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte Foust Sent: Tuesday, September 29, 2009 4:37 PM To: Access Developers discussion and problem solving Subject: Re: [AccessD] How do I pass a control to a function in the ControlSource Where are you trying to send it from? The control is a member of the form's controls collection, so if you pass the control, it knows the form that's its parent. What you may be running into is the fact that controls have specific properties and methods depending on the type of control, but a simple control object has very few generic properties and methods. Why are you using properties sheet syntax for this? It allows for "light-weight" forms and creates nightmares for debugging. Charlotte Foust -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of John Skolits Sent: Tuesday, September 29, 2009 1:13 PM To: accessd at databaseadvisors.com Subject: [AccessD] How do I pass a control to a function in the ControlSource I want to send a control object to a function from the ControlSource of a text box. I can send the Form object, but how about the control? . Example: Let's say I want to send a control's tag to a function The name of the control is "txtFinalCalculation", This in fact does work: =GetTestResults([txtFinalCalculation].Tag) The function retrieves the tag value with a function like: Function GetTestResults(strTagValue as string) But I had to include the control's name in the original call. I want it generic. Something like: =GetTestResults(ThisControl) Then use the following function: Function GetTestResults(ctlControl as control) I've tried some things with "Active control " but that won't work. There has to be a way to send the control's info to a function. I can send the Form's properties: GetTestResults([Form]), but I want just the individual control. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com