Zac --

Thanks for your other suggested work-arounds (the first one, in particula
r,
looks the more straightforward).

-- LBA

P.S.  But I still feel that nested query-driven loops should work exactly
 the
same way you'd expect nested loops to work in any other setting, and I do
n't
see how implementing this in the CF engine would adversely affect
performance.  If anything, I would expect it's more of a performance burd
en
presently (with either the cfset between the outer loop and the inner loo
p,
or, per your method, the array reference into the query) than if nested
query-driven loops were handled "properly" by the engine, omitting the ne
ed
for a cfset or an array reference.


Zac Spitzer wrote:

> Lawrence B. Afrin, M.D. wrote:
>
> >Howdy --
> >
> >I've recently re-encountered some longstanding bugs in CF and was
> >wondering if there are any plans to fix these in the next version.
> >
> >(1) No (sensible) method to detect whether a given array element
> >exists.  Since IsDefined() won't do this, you have to enclose the
> >reference in a cftry...cfcatch construct, which is just plain silly.
> >Either give me an ArrayElementExists() function or, better yet, enhanc
e
> >IsDefined() to support array element checking.  Or, at a bare minimum,

> >at least note in the array documentation that the only way to do this 
is
> >cftry...cfcatch.  (It ain't a bug if it's documented as a feature. :-)

> >
> >I've always wondered why we aren't given an ArrayElementExists() when,

> >over in Structure Land, there's the handy-dandy StructKeyExists().
> >
> >(2) Going all the way back to CF3, CF has forced us to code nested
> >query-driven loops this way:
> >
> ><cfloop query="query1">
> >  <cfset var1 = #query1.importantcolumn#>
> >  <cfloop query="query2">
> >     ...some reference to #var1# ( in order to reference
> >      the value of importantcolumn in the *current* row
> >      of query1, since reference to #query1.importantcolumn#
> >      will only get you the value of importantcolumn from
> >      the *first* row of query1)...
> >  </cfloop>
> ></cfloop>
> >
> >instead of the much more logical approach that most programmers would
> >expect any programming language to support:
> >
> ><cfloop query="query1">
> >  <cfloop query="query2">
> >    ...references to #query1.whatever# properly
> >      get you the value of whatever from the *current*
> >      row of query1...
> >  </cfloop>
> ></cfloop>
> >
>
> try this...
> <cfloop index="qry1_row" from="1" to="#qry1.recordcount#">
>     <cfloop index="qry2_row" from="1" to="#qry2.recordcount#">
>         <cfoutput>#qry1.name[qry1_row]# #qry2.name[qry2_row]#</cfoutput
>
>     </cfloop>
> </cfloop>
>
> <cfoutput query="qry1">
>     <cfset qry1_row=qry1_row.currentrow>
>     <cfoutput query="qry2">
>         <cfset qry2_row=qry2_row.currentrow> <!--- no reaaly needed b
uit
> makes things clearer --->
>         #qry1.name[qry1_row]# #qry2.name[qry2_row]#
>     </cfoutput>
> </cfoutput>
>
> it's done like this because there are too many ways to nest stuff and
> then it can get very confusing to know which point you are at.... it's 
a
> performance trade off ( CF could do everything, but then it would be
> slow), but at least you know whats going on... the first one is also
> nice becuase you don't end up with lots a white space if you
> cfprocesessingdirectives
>
> 
______________________________________________________________________
Why Share?
  Dedicated Win 2000 Server � PIII 800 / 256 MB RAM / 40 GB HD / 20 GB MO/XFER
  Instant Activation � $99/Month � Free Setup
  http://www.pennyhost.com/redirect.cfm?adcode=coldfusionc
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