Crystal报告选择以逗号分隔的critera

时间:2018-03-07 23:30:24

标签: crystal-reports

我有一个水晶报告我需要更改选择标准。目前,标准将数据库字段与我在报告中创建的参数进行比较。

"MA0161 ,MA0167"

我现在有一个字段,其中包含逗号分隔数据我需要确保该参数包含新字段中的任何其他ID。

Materialused中包含此数据。 {MaterialCR. MaterialUsed} = {?MaterialId} (没有双引号)。这不起作用

Function MaterialMatch (MaterialUsed as string,v1 ()  As String)
    dim MyArray() as string
   MyArray = Split (MaterialUsed,"," )

    dim Match as boolean
    Match = false
    dim x as number
    For x = 1 To count(v1) Step 1 
        IF "ALL" in v1 then
            Match = true
            x = count(MyArray)
        end if   
        if MyArray(x) in v1 then
            Match = true
            x = count(MyArray)
        end if   
     Next x

    MaterialMatch = Match
End Function

我试图创建一个比较两者的函数,但它似乎不起作用。它不会将参数视为字符串数组。

我的素材匹配功能不起作用

(
{JobTimeMaterialCR.MaterialId} = {?MaterialId} 
or 
(
    {JobTimeMaterialCR.Type} = "Time"   
    and 
    {JobTimeMaterialCR.MaterialUsed} = {?MaterialId} 

))

这就是我所看到的数据。我们有许多材料,其中包含材料ID。我们还有相关的时间需要选择。它没有材质ID,因为它是多对一的情况。我需要检索与材料相关的所有记录,包括时间。使用ID获取材料不是问题。我还需要获得时间记录。我修改了此报告用来包含与时间重叠的材料的视图。这是我被困的地方。 Data

这就是我现在选择的专家公式。我知道使用的材料部分是错误的。

override fun onBackPressed() {
        onRestart()
}

override fun onRestart() {
    currentUser = null
    if (currentUser == null) {
        startActivity(Intent(this, FirebaseAuthActivity::class.java))
        finish()
    }
    super.onRestart()
}

1 个答案:

答案 0 :(得分:0)

我能够使用我在评论中描述的逻辑编写一个适合我的公式。使用此公式作为记录选择公式。在Formula Workshop中,这些可以在选择公式中找到>记录选择。

Local StringVar array values := Split({?Search Values},",");
Local NumberVar indexCount := Count(values);
Local BooleanVar found := false;
Local NumberVar counter;

For counter := 1 to indexCount Step 1 Do
(
    If InStr({ARINVT.DESCRIP}, values[counter]) > 0 Then
        found := true
);
found;

这很粗糙,但是一个好的开始。搜索区分大小写,因此如果您需要不区分大小写的搜索,可能需要使用一些Lower()函数进行调整。此外,如果CSV字符串中的delim字符和搜索字符串之间有空格,则该空间将包含在搜索中。 Replace()函数可以帮助您解决这个问题,但这会阻止您在搜索字符串中使用空格。如果您需要在搜索中使用空格,那么在构建CSV字符串时要小心,在逗号之前或之后没有空格作为您的分隔字符。

如果您需要任何帮助,了解我的公式的语法,请随时发表评论,我会回答任何问题。

我使用了一个名为{?Search Values}的参数字段来模拟CSV字符串数据。 {ARINVT.DESCRIP}是我的测试数据库中的一个字段名称,我用它搜索数千条记录,查找我输入到参数字段中的关键字。您需要使用字段名称替换公式中的这些字段名称,并且您应该能够毫不费力地使用它。