Hi, Guru,

I tried to implement the CF_TwoSelectsRelated tag from the Developer's
Exchange and got an error of evaluting the expression:
MyQuery=Evaluate("Caller.#Attributes.Query#")

I have been looking at it too long and lost my brain. Can anyone help to point
out what mistake that I made? Please feel free to make any comment. Your
enlightment is greatly appreicated.

Here is the code straight out from the tag with some modification. Thank you.

<cfparam name="Attributes.Query" default="Server.Cats">
<cfparam name="Attributes.Display1" default="MASTER_CAT">
<cfparam name="Attributes.Display2" default="CAT">
<cfparam name="Attributes.Value1" default="#Attributes.Display1#">
<cfparam name="Attributes.Value2" default="#Attributes.Display2#">
<cfparam name="Attributes.Name1" default="TwoSelectsRelated1">
<cfparam name="Attributes.Name2" default="TwoSelectsRelated2">
<cfparam name="Attributes.Size1" default="1">
<cfparam name="Attributes.Size2" default="1">
<cfparam name="Attributes.Width1" default="">
<cfparam name="Attributes.Width2" default="">
<cfparam name="Attributes.ForceWidth1" default="">
<cfparam name="Attributes.ForceWidth2" default="">
<cfparam name="Attributes.ForceWidthChar" default="&nbsp;">
<cfparam name="Attributes.EmptyText1" default="">
<cfparam name="Attributes.EmptyText2" default="">
<cfparam name="Attributes.Message1" default="You must choose an option for
#Attributes.Name1#.">
<cfparam name="Attributes.Message2" default="You must choose an option for
#Attributes.Name2#.">
<cfparam name="Attributes.FormName" default="TwoSelected">
<cfparam name="Attributes.HTMLBetween" default="">
<cfparam name="Attributes.OnChange" default="">
<cfparam name="Attributes.AutoselectFirst" default="Yes">

<cfset FunctionName=ReplaceList(Attributes.FormName, "[,]", ",") &
"ChangeMenu()">

<cfif Attributes.OnChange is "Jump!">
<cfset
Attributes.OnChange="document.location=this.options[selectedIndex}.value;">
<cfelseif Attributes.OnChange is "Submit!">
<cfset Attributes.OnChange="this.form.submit();">
</cfif>

<!--- use passed query width this code as "MyQuery" --->
<cfset MyQuery=Evaluate("Caller.#Attributes.Query#")>




<cfquery name="Server.Cats" datasource="CompanyInfo" dbtype="ODBC">
        SELECT MASTER_CAT FROM Cats
</cfquery>

<cfquery name="Server.Cats" datasource="CompanyInfo" dbtype="ODBC">
        SELECT CAT FROM Cats
</cfquery>


<cfoutput>
<script language="JavaScript1.1">
var maxlength=10;       
OneA=new Array;                         
var trueLength=OneA.length;     
var lst=OneA.length;
                
function require_#Attributes.Name1#() {
with (document.#Attributes.FormName#.#Attributes.Name1#) {
                                RetVal=true;
if (options[selectedIndex]==null) RetVal=false;
else RetVal=!(options[selectedIndex].value=='');
if (!RetVal) alert('#Attributes.Message1#');
return RetVal
}
}
                
function require_#Attributes.Name2#() {
with (document.#Attributes.FormName#.#Attributes.Name2#) {
RetVal=true;
if (options[selectedIndex]==null) RetVal=false;
else RetVal=!(options[selectedIndex].value=='');
if (!RetVal) alert('#Attributes.Message2#');
return RetVal
}
}
                
function require_#Attributes.Name1#And#Attributes.Name2#() {
return ((require_#Attributes.Name1#()) && (require_#Attributes.Name2#()));
}
                
function #FunctionName# {
OneA.length=0;
menuNum=document.#Attributes.FormName#.#Attributes.Name1#.selectedIndex;
if (menuNum==null) return;
</cfoutput>

<cfset Counter=IIF(Attributes.EmptyText1 is not "", 1, 0)>
<cfoutput query="MyQuery" group="#Attributes.Display1#">
if (menuNum==#Counter#) {
NewOpt=new Array;
NewVal=new Array;
                                        
<cfset Counter2=IIF(Attributes.EmptyText2 is not "", 1, 0)>
<cfif Attributes.EmptyText2 is not "">
<cfoutput>
NewOpt[0]=new Option("#Attributes.EmptyText2#");
NewOpt[0].value='';
</cfoutput>
</cfif>"
                                        
<cfoutput>
NewOpt[#Counter2#]=new Option("#Evaluate(Attributes.Display2)#");
NewOpt[#Counter2#].value='#Evaluate(Attributes.Value2)#';
                                                
<cfset Counter2=Counter2 + 1>
</cfoutput>
}       
                                
<cfset Counter=Counter + 1>
</cfoutput>
                        
<cfoutput>
tot=NewOpt.length;
lst=document.#Attributes.FormName#.#Attributes.Name2#.options.length;
                                
for (i=lst; i>0; i--) {
document.#Attributes.FormName#.#Attributes.Name2#.options[i]=null;
}
                                
for (i=0; i<tot; i++) {
document.#Attributes.FormName#.#Attributes.Name2#.options[i]=NewOpt[i];
}
                                
<cfif Attributes.AutoSelectFirst is "Yes">
document.#Attributes.FormName#.#Attributes.Name2#.options0].selected=true;
</cfif>
}
</script>
</cfoutput>

<cfif Attributes.Size1 is "Auto">
<cfset Attributes.Size1=Counter>
</cfif>

<cfif Attributes.Size2 is "Auto">
<cfset Attributes.Size2=Attributes.Size1>
</cfif>

<cfoutput>
<select name="#Attributes.Name1#"
        onChange="#FunctionName#"
        size="#Attributes.Size1#"
        
<cfif Attributes.Width1 is not "">
style="width:#Attributes.Width1#"
</cfif>
>
</cfoutput>

<cfif Attriubtes.EmptyText1 is not "">
<cfoutput>
<option value="">
#Attributes.EmptyText1#
</cfoutput>
</cfif>

<cfoutput query="MyQuery" group="#Attributes.Display1#">
<option value="#Evaluate(Attributes.Value1)#">
        #Evaluate(Attributes.Display1)#
</cfoutput>

<cfif Attributes.ForceWidth1 is not "">
<cfoutput>
<option value="">
#RepeatString(Attributes.ForceWidthChar, Attributes.ForceWidth1)#
</cfoutput>
</cfif>
<cfoutput></select></cfoutput>


<cfoutput>#Attributes.HTMLBetween#</cfoutput>

<cfoutput>
<select name="#Attributes.Name2#" size="#Attributes.Size2#"
<cfif Attributes.OnChange is not "">
        OnChange="#Attributes.OnChange#"
</cfif>
                
<cfif Attributes.Width2 is not "">
        style="width:#Attributes.Width2#"
</cfif>
>
</cfoutput>

<cfif Attributes.EmptyText2 is not "">
<cfoutput>
<option value="">
#Attributes.EmptyText2#
</cfoutput>
</cfif>

<cfset FirstGroup=Evaluate("MyQuery.#Attriubtes.Display1#")>
<cfif Attributes.EmptyText1 is "">
        <cfloop query="MyQuery">
                <cfif Evaluate(Attributes.Display1) is FirstGroup>
                        <cfoutput>
                        <option value="#Evaluate(Attributes.Value2)#">
                                #Evaluate(Attributes.Display2)#
                        </cfoutput>
                <cfelse>
                        <cfbreak>
                </cfif>
        </cfloop>
</cfif>

<cfif Attributes.ForceWidth2 is not "">
        <cfoutput>
        <option value="">
        #RepeatString(Attributes.ForceWidthChar, Attributes.ForceWidth2)#
        </cfoutput>
</cfif>
<cfoutput></select></cfoutput>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to