我在 Crystal Reports 10 中创建了 4 个自定义函数。这些函数将数据库记录中的日期时间值作为输入,并确定该日期时间是否属于当前会计年度或上一个会计年度。
这些计算以前在 SQL Server 上作为存储过程执行,但我们正在转移到另一个票务应用程序(托管在供应商站点),目前没有数据库来进行这些计算。
以下是这些功能之一的示例:
// Function name: isCloseDateWithinCurrentFY
Function (DateTimeVar closeTime)
// This replaces dbo.fn_FiscalYear
// Determine if the incident close date falls inside the current Fiscal Year
DateTimeVar startCurrentFiscalYear;
NumberVar currentMonth;
StringVar returnVal;
currentMonth := Month(CurrentDate);
If currentMonth >= 2 Then
startCurrentFiscalYear := Date(Year(CurrentDate), 2, 1)
Else
startCurrentFiscalYear := Date(Year(CurrentDate)-1, 2, 1);
If (closeTime >= startCurrentFiscalYear) Then
"T"
Else
"F";
当这些计算在 SQL Server 上时,它们是从 Crystal Report SQL 命令中使用的
SELECT
category,
subcategory,
close_time,
tyCount
FROM (
SELECT
category=ISNULL(UPPER(category),'*Unspecified'),
subcategory=ISNULL(UPPER(subcategory),'*Unspecified'),
tyCount=SUM(CASE WHEN dbo.fn_FiscalYear(close_time)='T' THEN 1 ELSE 0 END)
FROM
incident_tickets
GROUP BY
UPPER(category),
UPPER(subcategory)
) tickets
WHERE
tycmCount>0
ORDER BY
category,
subcategory
就我而言,我想将调用替换为dbo.fn_FiscalYear
对我的自定义函数的调用isCloseDateWithinCurrentFY
。
但是可以从 SQL 命令调用自定义函数吗?
或者有没有其他方法可以根据水晶报表端的计算来限制返回的记录?
TIA