‘cfloop query’ aninhadas
Publicado; 12/12/2003 Arquivado em: ColdFusion 4 ComentáriosUma pessoa me perguntou o porque desse código não funcionar, ou melhor, funcionar parcialmente, enviando qNews.RecordCount * qMail.RecordCount (o que é o correto) emails, mas APENAS para o PRIMEIRO resultado da query qNews. Em outras palavras: ele não vai para o segundo registro da query qNews.
<cfloop query="qNews"> <cfloop query="qMail"> <cfmail type="html" from="#form.remetente#" to="#qMail.email#" subject="#qNews.titulo#"> #qNews.msg# </cfmail> </cfloop> </cfloop>
Eu sinceramente não sei porque (bug?). A lógica está correta e se efetuarmos o loop em cima de uma lista (por exemplo) ao invés da query, funciona normalmente.
A solução que dei foi a seguinte:
<cfloop query="qNews"> <cfloop query="qMail"> <cfmail type="html" from="#form.remetente#" to="#qMail.email#" subject="#qNews.titulo[qNews.CurrentRow]#"> #qNews.msg[qNews.CurrentRow]# </cfmail> </cfloop> </cfloop>
Mas ainda sim recomendei seriamente que fizesse UMA query apenas, evitando usar cfloops aninhados desnecessariamente.
Alguém já viu algo parecido?
realmente estranho!
Isso é um “bug” já manjado do CF desde sei lá que versão (daí eu achar que eles não consideram isso um bug). O lance é realmente reorganizar o código ou salvar os valores do loop “de fora” que você vai precisar em variáveis temporárias.
Não seria algum erro no controle do RECORDCOUNT ??
Alguem sabe se esse “bug” foi corrigido no CFMX 7 ou continua valendo…