<cfproperty> tags have to be at the top of the component, right after the <cfcomponent> tag.
Thanks Tom Schreck 972-361-9943 -----Original Message----- From: Chris Gomez [mailto:[EMAIL PROTECTED] Sent: Thursday, February 10, 2005 10:15 PM To: [email protected] Subject: Re: CFC question the weirdness keeps right on rolling. the problem was the result of a cfproperty tag I had inserted, for documentation purposes, immediately after the cffunction. Once I removed it, the cfc began working again. go figure. On Thu, 10 Feb 2005 20:51:56 -0600, Chris Gomez <[EMAIL PROTECTED]> wrote: > the LightList=StructNew()... LightList=CreateObject() is modified from > the MX WACK appendixes examples for cfinvoke (pg 1218 & 1219). > > I tried your suggestion for MyQuery=LightList.selectlist and it > worked. for a while. when I try to run the page now, I get a ' > Context validation error for tag cffunction'. CFMX seems to think > there's no </cffunction> at the end of the cfcomponent, although there > is. this doesn't make any sense. > > background: > The cfc is intended to generate four lists of data on the screen so > the user can select an item to view. The list items will vary based > on five parameters. (The existing page gets hit several thousand > times a month.) > > After reviewing the code recently, I found I could streamline it into > one query that only needed a few parameters to execute properly. > Then, I learned about cfc's and figured that would be a more secure > and efficient way of generating the lists. > > I've finally gotten it to work the way I want, but now I've got this > bloody error to figure out!! > > Any help appreciated. > > Chris > > On Thu, 10 Feb 2005 16:03:58 -0600, Matt Woodward <[EMAIL PROTECTED]> wrote: > > A bit tricky to debug this without the database, etc. but here are > > some suggestions and questions. > > > > 1. Why do you do LightList = StructNew() and then immediately do > > LightList = CreateObject() ... ? (Same question for your other > > objects as well.) > > > > 2. Since your function returns something you have to set that to a > > variable. Calling LightList.selectList() returns a query, so you'll > > want to do something like this: > > myQuery = LightList.selectList(etc. ...) > > > > 3. I'm a bit unclear as to what you're dumping. Dumping your object > > isn't going to show you your results. (In general dumping the object > > doesn't give you as much info as you might imagine!) > > > > > > On Wed, 9 Feb 2005 21:27:02 -0600, Chris Gomez <[EMAIL PROTECTED]> wrote: > > > I've created the following code based on Tom and Matt's suggestion, > > > but all it does, according to a cfdump, is return the following. The > > > method should return two attributes (fldMass and fldName) and add them > > > to the structure. > > > > > > Any ideas for a cfc newbie? > > > > > > CFDUMP results > > > SELECTLIST > > > function selectList > > > Arguments: > > > Name Required Type Default > > > XFaction Required Any 1 > > > XVType Required Any 1 > > > XWeight Required Any 1 > > > XEra Required Any 2 > > > Return Type: query > > > Roles: > > > Access: package > > > Output: Yes > > > > > > <cfscript> > > > LightList = StructNew(); > > > LightList = createObject("component","unitlist"); > > > LightList.selectList(XFaction=1,XEra=2,XVType=1,XWeight=1); > > > MedList = StructNew(); > > > MedList = createObject("component","unitlist"); > > > MedList.selectList(XFaction=1,XEra=2,XVType=1,XWeight=2); > > > HvyList = StructNew(); > > > HvyList = createObject("component","unitlist"); > > > HvyList.selectList(XFaction=1,XEra=2,XVType=1,XWeight=3); > > > AsltList = StructNew(); > > > AsltList = createObject("component","unitlist"); > > > AsltList.selectList(XFaction=1,XEra=2,XVType=1,XWeight=4); > > > </cfscript> > > > > > > <cfcomponent> > > > <cffunction name="selectList" access="package" returntype="query"> > > > <cfargument name="XFaction" required="true" default="1"> > > > <cfargument name="XVType" required="true" default="1"> > > > <cfargument name="XWeight" required="true" default="1"> > > > <cfargument name="XEra" required="true" default="2"> > > > <cfquery name="nameList" datasource="btech"> > > > SELECT > > > t.fldName, > > > m.fldMass > > > FROM tblTRO t, tblWeightClass w, tblVType v, tblMass m, > > > tblFaction f, tblEra e, tblClass c > > > WHERE f.fldFactionID = t.fldFaction AND > > > w.fldWeightClassID = t.fldWeight AND > > > m.fldMassID = t.fldMass AND > > > c.fldClassID = t.fldClass AND > > > v.fldVTypeID = t.fldType AND > > > e.fldEraID = t.fldEra AND > > > (t.fldType = #arguments.XVType#) AND (t.fldFaction = > > > #arguments.XFaction#) and (t.fldEra = #arguments.XEra#) AND > > > (t.fldWeight = #arguments.XWeight#) > > > ORDER BY t.fldMass, t.fldName > > > </cfquery> > > > <cfreturn nameList> > > > </cffunction> > > > </cfcomponent> > > > > > > On Wed, 9 Feb 2005 08:46:30 -0600, Schreck, Tom <[EMAIL PROTECTED]> wrote: > > > > You can use the <cfinvoke> but the <cfinvoke> creates the CFC, calls a > > > > method, and then destroys the CFC. So, if you need to call only a single > > > > method from a CFC, then it's ok to use <cfinvoke>. If you need to call > > > > multiple methods from same cfc instance, then <cfinvoke> uses a lot of > > > > overhead. > > > > > > > > Most of the time you will need to call multiple methods of an object. So > > > > you can use createobject method within a <cfscript> block: > > > > > > > > <cfscript> > > > > oCFC = createObject("component","Package.Path.To.Where.CFC.Lives"); > > > > oCFC.method1(paramName=paramValue,paramName1=paramValue1,...); > > > > oCFC.method2(paramName=paramValue,paramName1=paramValue1,...); > > > > etc. > > > > </cfscript> > > > > > > > > Another alternative to passing a list of name/value pairings is to create a > > > > structure containing data and use argumentcollection=structureName in place > > > > of all the name/value pairings. > > > > > > > > Thanks > > > > > > > > Tom Schreck > > > > 972-361-9943 > > > > -----Original Message----- > > > > From: Chris Gomez [mailto:[EMAIL PROTECTED] > > > > Sent: Wednesday, February 09, 2005 8:31 AM > > > > To: [email protected] > > > > Subject: CFC question > > > > > > > > At last nights meeting, it was brought up that CFC's should not be > > > > called using the CFINVOKE command. If that's the case, then how would > > > > you call a CFC and, more importantly, how do you call a CFC that > > > > requires arguments be passed to it? > > > > > > > > Thanks, > > > > > > > > Chris > > > > ---------------------------------------------------------- > > > > To post, send email to [email protected] > > > > To unsubscribe: > > > > http://www.dfwcfug.org/form_MemberUnsubscribe.cfm > > > > To subscribe: > > > > http://www.dfwcfug.org/form_MemberRegistration.cfm > > > > > > > > ---------------------------------------------------------- > > > > To post, send email to [email protected] > > > > To unsubscribe: > > > > http://www.dfwcfug.org/form_MemberUnsubscribe.cfm > > > > To subscribe: > > > > http://www.dfwcfug.org/form_MemberRegistration.cfm > > > > > > > > > > > ---------------------------------------------------------- > > > To post, send email to [email protected] > > > To unsubscribe: > > > http://www.dfwcfug.org/form_MemberUnsubscribe.cfm > > > To subscribe: > > > http://www.dfwcfug.org/form_MemberRegistration.cfm > > > > > > > > > > -- > > Matt Woodward > > [EMAIL PROTECTED] > > http://www.mattwoodward.com > > ---------------------------------------------------------- > > To post, send email to [email protected] > > To unsubscribe: > > http://www.dfwcfug.org/form_MemberUnsubscribe.cfm > > To subscribe: > > http://www.dfwcfug.org/form_MemberRegistration.cfm > > > > > ---------------------------------------------------------- To post, send email to [email protected] To unsubscribe: http://www.dfwcfug.org/form_MemberUnsubscribe.cfm To subscribe: http://www.dfwcfug.org/form_MemberRegistration.cfm ---------------------------------------------------------- To post, send email to [email protected] To unsubscribe: http://www.dfwcfug.org/form_MemberUnsubscribe.cfm To subscribe: http://www.dfwcfug.org/form_MemberRegistration.cfm
