通过插件应该能实现这种情况。
如果设置两个日期条件呢,第一组用于取期初数据,第二组用于取业务数据。
在第一组的后一个条件使用1=1的语句,即:FDate<'2009-05-01' and 1=1。这样一来,即只认前一个条件即可。
lz_xiaohe 这个思路不错,不过我是通过插件来实现的。下面就具体说说实现过程,抛砖引玉。
----------------------------------------------------------------
1、根据KIS BOS提供的示例代码,我们知道有两个工程,一个是KISCondition,这个是设置过滤条件的工程;还有一个是KISBOSExample,这个是具体的报表实现。
2、其实本例关键就两个参数(其它例子可以类推),一个是StartDate,一个是EndDate。
3、通过KISCondition可以设计一个窗口,放置两个DatePicker控件,分别用来记录起止日期。
4、KISCondition将把选择的日期作为参数传递给KISBOSExample,在后者里有一个过程GetReportSql专门用来分析参数和组织报表实现的SQL语句。
5、我们把跟踪得到的语句以资源文件的形式存储,把相关日期替换为如下标志字符{StartDate}和{EndDate}。假设资源ID=105,则以下过程将实现类似商贸版往来对账单格式的报表。
6、'//取得sql语句 Private Function GetReportSql(ByVal strCondition As String) As String Dim strSQL As String Dim arrCdn() As String '保存过滤条件 Dim strCdn As String Dim StartDate As String, EndDate As String '因为SQL语句对于日期是采用文本处理,所以此处定义为文本型 strSQL = "" strCdn = "" arrCdn = Split(strCondition, "|") mvSerial = Trim(arrCdn(4)) If Trim(arrCdn(0)) <> "" Then '起始日期 StartDate = arrCdn(0) strCdn = strCdn & " and v1.Fdate>='" & Trim(arrCdn(0)) & "'" End If If Trim(arrCdn(1)) <> "" Then '结束日期 EndDate = arrCdn(1) strCdn = strCdn & " and v1.Fdate<='" & Trim(arrCdn(1)) & "'" End If '---------------------------- '从资源文件里载入相关SQL语句
strSQL = strSQL & LoadResString(105) strSQL = Replace(strSQL, "{DateStart}", StartDate) strSQL = Replace(strSQL, "{DateEnd}", EndDate) GetReportSql = strSQL End Function
7、因为是只截取了参数,而没有截取条件,所以可以实现更多灵活的应用。
在跟踪出来的语句里,把是FDate<'2009-05-01'、FDate>='2009-05-01' And FDate<='2009-05-31'替换为FDate<'{StartDate}'、FDate>='{StartDate}' And FDate<='{EndDate}',切记保留单引号,并且只替换值,而不要替换条件,这样在程序里组织SQL语句时,就可以非常灵活的组合这些值,而不用考虑单引号的问题。
我们只需要在查询分析器里将SQL语句调试通过,达到目的后,把参数值修改成标志字符串,然后存入资源文件。在使用时,从资源文件载入,然后把标志字符串再替换为传过来的参数值即可。
这样也可避免在程序里逐一写SQL语句导致代码太长,工作量太大。
6、'//取得sql语句 Private Function GetReportSql(ByVal strCondition As String) As String Dim strSQL As String Dim arrCdn() As String '保存过滤条件 Dim strCdn As String Dim StartDate As String, EndDate As String '因为SQL语句对于日期是采用文本处理,所以此处定义为文本型 strSQL = "" strCdn = "" arrCdn = Split(strCondition, "|") If Trim(arrCdn(0)) <> "" Then '起始日期 StartDate = arrCdn(0) End If If Trim(arrCdn(1)) <> "" Then '结束日期 EndDate = arrCdn(1) End If '---------------------------- '从资源文件里载入相关SQL语句
学习!
学习