【关闭窗口】 
进入ooReport网上直报数据分析
版权所有:济南昂利万软件开发有限公司 http://www.etcell.com/
  您的位置:首页 -> 重要通知通令
搜索:
最新主题  10
【期货市场技术分析】完整版——约翰.墨菲.pdf
垂直搜索引擎现身招投标领域--招标搜索网
ooReport平台支持的自定义查询,支持各种数据库分页机制示例!!
妥妥贴贴
由Tencent://Message协议想到的一个解决方案(QQ在线)
Tencent://Message/协议的实现原理
浏览器HTTP_USER_AGENT汇总——Firefox、Chrome、IE9、IE8、IE7、IE6
ooReport平台中的WinTable报表设计器是个自定义报表工具
国家统计局调查队数据采集平台-ooReport平台实现,城镇住户调查手机报送 河南省 平顶山 统计局调查队 数据采集系统平台
燃料管理系统ppt
主  题: ooReport平台支持的自定义查询,支持各种数据库分页机制示例!!
重 要 性:
发布日期: 2013/10/29 11:19:38
发 布 人: 集团总部-1(OS02DE01@OS02)
回 复 数: 0
人气指数: 1235点
第一步:
在程序代码中,增加新类:Query_page

代码如下:

public virtual void DllMain()
{
 //System.DateTime dt = GetRiBaoDate();
 System.DateTime dt = System.DateTime.Now; 
 QueryEE(dt);
}

public void QueryEE(System.DateTime dt)
{
 OleDbConnection dbConn = GetConn();
 if( dbConn==null ) return;
 string strStartDate = dt.ToString("yyyy-MM-dd") + " 8:0:0";
 string strEndDate2 = dt.ToString("yyyy-MM-dd") + " 16:59:59";
 string strEndDate3 = dt.ToString("yyyy-MM-dd") + " 23:59:59";
 string strEndDate = strStartDate;
 System.DateTime dtStart = System.DateTime.Parse(strStartDate); 
 System.DateTime dtEnd2 = System.DateTime.Parse(strEndDate2); 
 System.DateTime dtEnd3 = System.DateTime.Parse(strEndDate3); 
 if( dt>=dtStart && dt<=dtEnd2 )//8点-16点区间
 {
  System.DateTime dt2 = System.DateTime.Now.AddDays(-1); 
  strStartDate = dt2.ToString("yyyy-MM-dd") + " 8:0:0";
  strEndDate = dt.ToString("yyyy-MM-dd") + " 8:0:0";
 }
 else if( dt>=dtEnd2 && dt<=dtEnd3 )//16点-24点区间  //16-24点区间
 {
  strStartDate = dt.ToString("yyyy-MM-dd") + " 8:0:0";
  strEndDate = dt.ToString("yyyy-MM-dd") + " 23:59:59";
 }
 else //第二天0-8点区间
 {
  System.DateTime dt2 = dt.AddDays(-1); 
  strStartDate = dt2.ToString("yyyy-MM-dd") + " 8:0:0";
  strEndDate = dt.ToString("yyyy-MM-dd") + " 8:0:0";
 }
 //Response.Write(strStartDate+"->"+strEndDate);
 System.DateTime dtnew = dt.AddDays(-1);
 TParamList param = new TParamList();
 param.Add("QDatetime",dt.ToString("yyyy-MM-dd"));
 param.Add("StartDatetime",strStartDate);
 param.Add("EndDatetime",strEndDate);
 param.Add("QYear",dt.ToString("yyyy"));
 param.Add("QMonth",dt.ToString("MM"));
 param.Add("QDay",dt.ToString("dd"));
 //
 int nPageSize = 10;
 string strPageId = Request.Form["page"];
 if( strPageId==null || strPageId=="" )
  strPageId = Request.QueryString["page"];
 int nPageId = 1;
 if( strPageId!=null && strPageId!="" )
  nPageId = Convert.ToInt32(strPageId);
 if( nPageId<=0 ) nPageId=1;
 
 int nStartId = 1,nEndId = 10;
 nStartId = (nPageId-1)*nPageSize+1;
 nEndId = nPageId*nPageSize;
 param.Add("QStartId",nStartId.ToString());
 param.Add("QEndId",nEndId.ToString());
 
 
 //获得查询的ET路径,并且打开模板文件
 string strQueryId = GetHtmlCallerParam("qid");//"KD01000102"; 
 //
 //产生ooReport对象
 ooReportClass ATGrid1 = new ooReportClass();
   //string strQueryId = "KD01000106";
 string strETPath = GetQueryResultETPath(dbConn,strQueryId);
 string strFilepath = Server.MapPath(strETPath);
 if( !ATGrid1.OpenDoc(strFilepath) )
  return;
 
 //获得查询的xml数据流,并且装载到模板中,便于能产生html页面
 string strXml = GetQueryDbXml(dbConn,strQueryId,param);
 ATGrid1.ImportXML(strXml);
 
 //设置AliasSet中存在的变量值
 ooRptServer.AliasSet ppAliasSet1 = ATGrid1.GetAliasSet("AliasSet1"); 
 if( ppAliasSet1!=null )
 {
  ppAliasSet1.SetAliasValue("QDatetime",dt.ToString("yyyy-MM-dd"));
  ppAliasSet1.SetAliasValue("QYear",dt.ToString("yyyy"));
  ppAliasSet1.SetAliasValue("QMonth",dt.ToString("MM"));
  ppAliasSet1.SetAliasValue("QDay",dt.ToString("dd"));
 }
 
 //设置输出html页面的table的id编码
 ATGrid1.TableId = "TB_" + strQueryId;
 //ATGrid1.TableStyle = "ATGrid123";
 
 //输出上下翻页功能
 Response.Write("<table border='0'>\r\n");
 Response.Write("<tr>\r\n");
 Response.Write("<td><a href='?page=" + (nPageId-1).ToString() +"'>上页</a></td>\r\n");
 Response.Write("<td><a href='?page=" + (nPageId+1).ToString() +"'>下页</a></td>\r\n");
 Response.Write("</tr>\r\n");
 Response.Write("</table>\r\n");
 
 //获得html页面,并且输出到浏览器
 string strTable = ATGrid1.GetData("Html.Table");
 Response.Write(strTable);
 Response.Flush();
 
 ATGrid1 = null;
}



增加代码后,编译,然后点击“发布程序”




第二步:
在网页中调用代码的方法
<ooReport:Code id='ooReport.Comm.Query_page'  qid="OS02000144"  />

其中qid后面的参数是自定义查询的编码

数据查询式样及其查询的数据都在查询中定义



在书写sql时,注意事项:

如果数据库是Sql server2005及以上版本,那么可以采用下面的方法

select *
    from
        (
            select ROW_NUMBER() OVER (order BY Username asc) as RowNum,* 
            from TTtable --表名
        ) as T
    where T.RowNum>=<%QStartId%>  and T.RowNum<= <%QEndId%>


如果数据库是Sql server2000 版本,那么采用not in 机制


Oracle:
 
    方法一:
    SELECT * FROM
    (
        SELECT A.*, ROWNUM RN
        FROM (SELECT * FROM TABLE_NAME) A
        WHERE ROWNUM <= <%QEndId%>
    )
    WHERE RN >= <%QStartId%>;
    方法二:
    SELECT * FROM
    (
        SELECT A.*, ROWNUM RN
        FROM (SELECT * FROM TABLE_NAME) A
    )
    WHERE RN between <%QStartId%> and <%QEndId%>

























 
 



软件制作:济南昂利万软件开发有限公司 © 2004-2009