首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFspreadsheet循环

CFspreadsheet循环
EN

Stack Overflow用户
提问于 2014-10-19 03:33:02
回答 3查看 618关注 0票数 0

我有一个关于cfspreadsheet....So的问题,我正在使用cfspreadshseet创建用于报告目的的excel电子表格。我的页面允许用户从数据库中选择要包含在报表中的任何列。下面是一个例子:

电子表格可能如下所示:

名字-最后一个

Joe Smith示例12主要丹佛公司80513的关注点在这里

我的问题是,如果Joe有一个以上的关注点,那么我可以使用joe的info...is获得多行,这样我就可以循环这些关注点,并且只有一个行给joe?

谢谢,

史蒂夫

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-19 17:29:42

使用cfoutput的"group“特性对于这个任务来说是非常好的。为了排除另一种可能性,您还可以在数据库查询中生成列表。

例如,MySQL具有GROUP_CONCAT函数。我不知道您的表的结构,但是假设您有两个表UserUserConcern,您可以使用GROUP_CONCAT来将“关注点”值连接到一个字符串中:

SQLFiddle

代码语言:javascript
复制
SELECT
     u.UserID
     , u.FirstName
     , ... other columns
     , GROUP_CONCAT( uc.Concern ) AS ConcernList
FROM UserTable u INNER JOIN UserConcern uc
         ON uc.UserID = u.UserID
GROUP BY 
     u.UserID
     , u.FirstName
     , ... other columns

对于Server,一个标准的技巧是使用XML路径:

SQLFiddle

代码语言:javascript
复制
SELECT
     u.UserID
     , u.FirstName
     , ... other columns
     , STUFF( ( SELECT ',' + uc.Concern
                FROM  UserConcern uc
                WHERE uc.UserID = u.UserID
                ORDER BY uc.Concern
                FOR XML PATH('')
               ) 
              , 1, 1, ''
          ) AS ConcernList
FROM UserTable u
GROUP BY 
     u.UserID
     , u.FirstName
     , ... other columns

然后像往常一样简单地生成电子表格。

票数 2
EN

Stack Overflow用户

发布于 2014-10-19 06:38:18

要做到这一点,您需要一个唯一的行ID,使用姓氏的外部组可能会引起冲突。UserID是占位符变量。确保用正确的ID名替换它。当然,这些变量名称中有几个只是猜测。

代码语言:javascript
复制
<cfoutput query ="thequery" group="UserID">
  <cfset cList="">
  <cfoutput group="concern">
    <cfset cList=ListAppend(cList,Concern)>
  </cfoutput>
  <cfset temp = spreadsheetAddRow(my_spreadsheet,"'#fn#','#ln#',...,'#cList#'">
</cfoutput>
票数 2
EN

Stack Overflow用户

发布于 2014-10-19 04:25:10

假设您想要为每条评论分别列出行,这样的操作就可以了:

代码语言:javascript
复制
<cfset current_id = "">
<cfloop query = "my_query">
    <cfset next_id = user_id>
    <!--- or whatever else forms the primary key --->
    <cfif next_id neq current_id>
        <cfset current_id = next_id>
        <cfset SpreadsheetAddRow(my_spreadsheet, "#first_name#,#last_name#,etc, #comment#">
    <cfelse>
        <cfset SpreadsheetAddRow(my_spreadsheet, ",,#comment#">
    </cfif>
</cfloop>

这是根据所提供的资料得出的。如果您有一个唯一的ID,组属性将更好地工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26447018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档