我有一个水晶报告我需要更改选择标准。目前,标准将数据库字段与我在报告中创建的参数进行比较。
"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获取材料不是问题。我还需要获得时间记录。我修改了此报告用来包含与时间重叠的材料的视图。这是我被困的地方。
这就是我现在选择的专家公式。我知道使用的材料部分是错误的。
override fun onBackPressed() {
onRestart()
}
override fun onRestart() {
currentUser = null
if (currentUser == null) {
startActivity(Intent(this, FirebaseAuthActivity::class.java))
finish()
}
super.onRestart()
}
答案 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}
是我的测试数据库中的一个字段名称,我用它搜索数千条记录,查找我输入到参数字段中的关键字。您需要使用字段名称替换公式中的这些字段名称,并且您应该能够毫不费力地使用它。