Mysql 在ColdFusion 8中玩日期范围 请考虑以下代码:
在此代码中,将要求用户从两个选项中选择一个日期范围,然后单击“应用”按钮,以便在web浏览器上显示所选日期范围的结果。 我在想我该怎么做。请解释一下 2我如何确保可以使用下载CSV选项启用下载数据的选项 请让我知道需要做哪些更改。任何帮助都将不胜感激Mysql 在ColdFusion 8中玩日期范围 请考虑以下代码:,mysql,coldfusion,coldfusion-8,Mysql,Coldfusion,Coldfusion 8,在此代码中,将要求用户从两个选项中选择一个日期范围,然后单击“应用”按钮,以便在web浏览器上显示所选日期范围的结果。 我在想我该怎么做。请解释一下 2我如何确保可以使用下载CSV选项启用下载数据的选项 请让我知道需要做哪些更改。任何帮助都将不胜感激 <body> <cfparam name="Form.startdate" default="#dateformat(now()-5, 'mm/dd/yyyy')#"> <cfparam name="Form.end
<body>
<cfparam name="Form.startdate" default="#dateformat(now()-5, 'mm/dd/yyyy')#">
<cfparam name="Form.enddate" default="#dateformat(now()-1, 'mm/dd/yyyy')#">
<cfparam name="Form.selectdate" default="#dateformat(now(), 'mm/dd/yyyy')#">
<!--- <cfquery datasource = "xx.xx.x.x" name="qCheck">
SELECT *
FROM mydatabase
ORDER BY DTSId_bi LIMIT 10;
</cfquery>
--->
<cfquery datasource = "xx.xx.x.x" name="qDatabase">
SELECT (SELECT count(*) FROM mydatabase) AS TOTAL_CONNECTIONS,
(SELECT count(*)FROM mydatabase WHERE event_vc = "open") AS OPEN_CONNECTIONS,
(SELECT count(*)FROM mydatabase WHERE event_vc = "BOUNCE") AS BOUNCE_CONNECTIONS,
(SELECT count(*) from mydatabase where event_vc = "DEFERRED") AS DEFERRED_CONNECTIONS,
(SELECT count(*) from mydatabase where event_vc = "DELIVERED") AS DELIVERED_CONNECTIONS,
(SELECT count(*) from mydatabase where event_vc = "DROPPED") AS DROPPED_CONNECTIONS,
(SELECT count(*) from mydatabase where event_vc = "PROCESSED") AS PROCESSED_CONNECTIONS,
(ROUND((SELECT OPEN_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "OPEN",
(ROUND((SELECT BOUNCE_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "BOUNCE" ,
(ROUND((SELECT DEFERRED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DEFERRED",
(ROUND((SELECT DELIVERED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DELIVERED",
(ROUND((SELECT DROPPED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DROPPED",
(ROUND((SELECT PROCESSED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "PROCESSED";
</cfquery>
<cfform format="flash" preloader ="false">
<!--- Arranging the two buttons adjacent to each other using cfformgroup tag --->
<cfformgroup type="horizontal">
<p> </p>
<p> </p>
<p>
<cfinput type="dateField" name="startdate" label="Start Date" width="100" value="#Form.startdate#">
<cfinput type="dateField" name="enddate" label="End Date" width="100" value="#Form.enddate#">
<cfinput name="submit" type="submit" value = "Apply">
<cfinput name="cancel" type="submit" value="Download CSV">
</p>
</cfformgroup>
<!--- For Horizontal Line --->
<cfformitem type = "hrule" style=""></cfformitem>
</cfform>
<cfchart
format="png"
chartwidth="500"
chartheight="500"
scalefrom="0"
scaleto="1200000"
title="Email Reporting "
pieslicestyle="solid">
<cfchartseries type="line"
>
<cfchartdata item="% OPEN" value="#qDatabase.OPEN#">
<cfchartdata item="% BOUNCE" value="#qDatabase.BOUNCE#">
<cfchartdata item="% DEFERRED" value="#qDatabase.DEFERRED#">
<cfchartdata item="% DELIVERED" value="#qDatabase.DELIVERED#">
<cfchartdata item="% DROPPED" value="#qDatabase.DROPPED#">
<cfchartdata item="% PROCESSED" value="#qDatabase.PROCESSED#">
</cfchartseries>
</cfchart>
</body>
如果我是你,我会考虑重新设计QDAB查询,这是非常低效的!就下载csv而言,最好的方法是将一个文件写入一个临时区域,该临时区域经常被清理掉,这样它就不会填满你的硬盘。我将帮助编写文件,但不是清理lol。您可以这样做:
<cfscript>
var tl ='';
var nl = (Chr( 13 ) & Chr( 10 ));
var fileContent = createObject("java","java.lang.StringBuffer").init();
var counter =1;
fileContent.append( 'OPEN,BOUNCE,DEFERRED,DELIVERED, etc');
fileContent.append(nl);
for(i=1;i<=qDatabase.recordCount;i=i+1){
tl = qDatabase.OPEN&','qDatabase.BOUNCE&','qDatabase.DEFERRED&','qDatabase.DELIVERED&',' etc;
fileContent.append(tl);
fileContent.append(nl);
}
</cfscript>
<cffile action="write" file="#absoluteFilePathAndName#" mode="775" output="#fileContent.toString()#"/>
<a href="#realtiveFilePathAndName#>Download</a>
这将在每次有人点击页面时将一个csv文件写入绝对路径,因此您需要一些条件逻辑来防止这种情况发生
总之,你需要重新审视你提供的代码,重新思考你在做什么,但一旦你这样做了,这些代码就会让你开始工作,这并不是你的最终解决方案。需要做的工作实在太多了。大多数这些统计数据都可以使用mydatabase中的SELECT COUNT*、event_vc来完成,其中event_vc位于“open”、“BOUNCE”、“DEFERRED”、“DELIVERED”、“Droped”、“PROCESSED”中,而不是所有这些子查询中。我很惊讶这个查询是否会返回您所期望的结果。你似乎基本上是在要求别人给你写一个方法来为这些数据生成一个CSV文件。最后,你需要做的就是找出如何生成输出字符串,并将其输出到具有正确标题的浏览器中。是的,我认为代码质量问题应该在代码审查上,而不是在这里。它确实需要工作。这就留下了一个单独的问题,我如何用CSV数据而不是标记来回应,这个问题的大部分文本都是无关的。建议移动代码,重新编写问题。同意,这应该是两个独立的线程。第一:如何在日期范围内筛选此查询。第二:如何导出到csv。为简化查询提供了一个起点—在添加日期筛选器之前,您肯定需要这样做。“当你尝试它时,发生了什么?”利,我之前的问题很好。我使用的代码与我在本帖中提到的相同。@AaK-不,我的意思是你试过了吗?他去掉了所有这些单独的子查询,并将其替换为联接。将日期过滤器添加到他的查询中要比当前包含所有这些子查询的日期过滤器容易得多..谢谢你的回答。如果我遇到任何问题,我会处理它,并在这里提及。如果您找到正确的标题以供使用,您还可以直接输出到浏览器并触发文件下载,这将删除您需要写入磁盘的步骤。我认为这有点像是用文件内容来代替。。。。在@Lance'sanswer@Lance@Simon在mso.net你们能告诉我从哪里可以读到更多关于Chr10、fileContent等的内容吗?我不熟悉你们使用的术语,觉得很难理解。谢谢你可以看到,CHR13和CHR10基本上是一个回车和换行