10.查询条件

在多数情况下，报表的查询往往是有条件的查询，具体对应到数据源，则需要数据源有动态更改查询参数的功能.
数据源的动态查询参数，分为外部动态和内部动态二种，我们分别介绍之.

10.1.外部动态参数

所谓外部，是指通过 js 动态让报表更改查询参数，最简单的方法是执行报表的 SetParas( ) 函数，例如：

     AF.func("SetParas", "ds1 \r\n year=2012; month=2");
     AF.func("calc", "");

查询参数 year 和 month 将自动被附在URL中，假设原先的 URL 是：
../getData.aspx?ver=22
新的URL将会是:
../getData.aspx?ver=22&year=2012&month=2
如果 URL 中原先已经有 year、month 参数，那么这些参数会被替换成新的.
SetParas 函数使用很简单，并且对临时数据源和中心数据源都适用。
对于临时数据源，还有一种更常见的方法：把查询参数直接置于 SetSource 中，因为临时数据源反正是要调用 SetSource 函数的：

    function OnReady(id) {
     AF.func("Build", "report/myReport.xml");
     //指定ds1数据源取数的URL地址
     AF.func("SetSource", "ds1 \r\n ../getData.aspx?ver=22&year=2012&month=2");
     //需要重新计算， 因为SetSource仅仅是相当于更改一个属性
     AF.func("Calc", "");
    }

10.2.内部动态参数

内部动态参数，是指报表的数据源本身就已经预先设定了某些固定的参数了.
中心数据源的内部动态参数请看文档 "9.中心数据源" 中的 "9.3参数协议", 例如:

    <?xml version="1.0" encoding="UTF-8"?">
    <Project name="业务数据" tip="货运数据">
     <ds id="11" para1="月份" para2="组织号" dataURL="data.serv?month=@para1&org=@para2" descURL="data1.desc.xml">货运数据</ds>
     ...

临时数据源的查询参数需要在数据源的这个界面中设定:
采用内部参数的好处是，是当你在输入数据源公式时，上方的黄色tip提示条会告诉你，接下去该输入什么参数了：
并且，你可以不设死参数，可以引用另外的单元格，例如：

    =datarow('ds1', A3, B4)

在计算时，数据源的参数将会自动取自 A3、B4 单元格.
关于上述参数的实例，请参见在线演示：“34.穿透式查询”，这个例子有上述二种参数的完整使用情形.