Another tip, although this is style more than anything, if you don't need to
conditionally pass arguments to a function you can replace this:
<cfinvoke method="LangText" returnVariable="Subject">
<cfinvokeargument name="LanguageID" value="#qryTagReplace.Language#">
<cfinvokeargument name="TextBlobID" value="#SubjectBlobID#">
</cfinvoke>
with this:
<cfset subject = LangText(qryTagReplace.Language, SubjectBlobID)>
Whatdoyareckontothatthen?
-----Original Message-----
From: Richard Hensman [mailto:[EMAIL PROTECTED]
Sent: 01 April 2005 14:05
To: CF-Newbie
Subject: Function Calling
I know, I'm hogging the brain power today...
Entity has incorrect type for being called as a function.
The symbol you have provided LangText is not the name of a function.
I have read all the help files on what causes this error, but I don't
see an example of it in my code. I am calling MailParams. - and get an
error on <cfinvokeargument name="TextBlobID"
value="#SubjectBlobID#">
This was working just now, but I can't see why anything here's broken
it... Please help!
(I have removed a couple of queries, and some variable declarations, so
if there's a variable being used, it's being declared somewhere :) )
<cffunction
name = "LangText"
returnType = "String"
output = "no"
>
<cfargument name="TextBlobID" type="numeric" required="Yes">
<cfargument name="LanguageID" type="numeric" required="Yes">
<cfquery name = "qryLangText" dataSource = "#datasource#">
Select Top 1 Text from TextBlobField
where TextBlobID = #TextBlobID# and LanguageID =
#LanguageID# and IsDraft = 0
Order by TextBlobField.DateStamp desc
</cfquery>
<cfreturn qryLangText.Text>
</cffunction>
<cffunction
name = "MailParams"
returnType = "Struct"
output = "no"
>
<cfargument name="TemplateID" type="numeric" required="Yes">
<cfargument name="RecipientID" type="numeric" required="Yes">
<cfargument name="ItemIDs" type="string" required="No"
default="0">
<cfargument name="UserID" type="numeric" required="No"
default="0">
<cfargument name="AdminID" type="numeric" required="No"
default="0">
<cfargument name="Address" type="String" required="No"
default="">
<cfset Ret = StructNew()>
<cfset Subject = "">
<cfset To = "">
<cfset From = "">
<cfset Body = "">
<cfquery name = "qryTemplate" dataSource = "#datasource#">
Select IsNull(FromAdd, '') as FromAdd,
IsNull(SubjectTextBlobID, 0) as
SubjectTextBlobID,
IsNull(BodyTextBlobID, 0) as BodyTextBlobID
from Email where EmailID = #TemplateID#
</cfquery>
<cfset From = qryTemplate.FromAdd>
<cfset SubjectBlobID = qryTemplate.SubjectTextBlobID>
<cfset BodyBlobID = qryTemplate.BodyTextBlobID>
<cfset StartDate = Now()>
<cfset StartDate = "2005/1/1">
<cfif RecipientID gt 0>
<cfquery name = "qryTagReplace" dataSource =
"#datasource#">
</cfquery>
<cfelse>
<cfquery name = "qryTagReplace" dataSource =
"#datasource#">
</cfquery>
</cfif>
<cfif TemplateID gt 0>
<cfinvoke method="LangText" returnVariable="Subject">
<cfinvokeargument name="LanguageID"
value="#qryTagReplace.Language#">
<cfinvokeargument name="TextBlobID" value="#SubjectBlobID#">
</cfinvoke>
<cfinvoke method="LangText" returnVariable="Body">
<cfinvokeargument name="LanguageID"
value="#qryTagReplace.Language#">
<cfinvokeargument name="TextBlobID" value="#BodyBlobID#">
</cfinvoke>
<cfquery name = "qryTags" datasource = "#datasource#">
Select * from SmartTag where ColumnName is not Null and
ColumnName <> ''
</cfquery>
<cfset HeadEnd = findnocase(BodyStart, Body)-1>
<cfset FootStart = findnocase(BodyEnd, Body)+len(BodyEnd)>
<cfif HeadEnd gt 0 and FootStart gt 0>
<cfset Header = left(Body, HeadEnd)>
<cfset Footer = right(Body, len(Body)-FootStart)>
<cfset Block = mid(Body, HeadEnd+len(BodyStart),
len(Body)-len(Header)-len(Footer)-len(BodyStart)-len(BodyEnd))>
<cfelse>
<cfset Header = "">
<cfset Footer = "">
<cfset Block = Body>
</cfif>
<cfset Body = "">
<cfset To = qryTagReplace.rec_Email>
<cfloop query="qryTags">
<cfset From = replace(From, "{"&qryTags.Tag&"}",
qryTagReplace[qryTags.ColumnName][1], "all")>
<cfset Subject = replace(Subject, "{"&qryTags.Tag&"}",
qryTagReplace[qryTags.ColumnName][1], "all")>
<cfset Header = replace(Header, "{"&qryTags.Tag&"}",
qryTagReplace[qryTags.ColumnName][1], "all")>
<cfset Footer = replace(Footer, "{"&qryTags.Tag&"}",
qryTagReplace[qryTags.ColumnName][1], "all")>
</cfloop>
<cfloop from="1" to="#qryTagReplace.recordcount#"
index="Record">
<cfset TmpBlock = Block>
<cfloop query="qryTags">
<cfset TmpBlock = replace(TmpBlock, qryTags.Tag,
qryTagReplace[qryTags.ColumnName][Record], "all")>
</cfloop>
<cfset Body = Body & TmpBlock>
</cfloop>
<cfset Body = Header & Body & Footer>
</cfif>
<cfset session.EmailEventInsert = " Insert into EmailEvent
(EmailID, LanguageID, IsModified, AGUserID,ItemID) Values
(#TemplateID#,#qryTagReplace.Language#,0,#RecipientID#,#ItemIDs#)">
<cfset Ret.From = From>
<cfset Ret.Subject = Subject>
<cfset Ret.Body = Body>
<cfset Ret.To = To>
<cfreturn Ret>
</cffunction>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Discover CFTicket - The leading ColdFusion Help Desk and Trouble
Ticket application
http://www.houseoffusion.com/banners/view.cfm?bannerid=48
Message: http://www.houseoffusion.com/lists.cfm/link=i:15:818
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/15
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:15
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.15
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54