"Table1"."onhand" OR "Table2"."batch_code-6ren">
gpt4 book ai didi

c# - SQL Convert(varchar, ) 等效于 Crystal Reports 记录选择公式

转载 作者:行者123 更新时间:2023-11-29 03:28:52 25 4
gpt4 key购买 nike

我有一个 sql 查询 where 子句,如下所示:

WHERE ("Table1"."count"<>"Table1"."onhand"
OR "Table2"."batch_code" IS NOT NULL
OR ("Table1"."BatchMinVariance"<>0 OR "Table1"."BatchMaxVariance"<>0)
)

我在我的代码中使用与上述等效的 Crystal 来动态设置记录选择:

({Table1.count} <> {Table1.onhand}     
or (not isnull({Table2.batch_code})
or ({Table1.BatchMinVariance} <> 0 OR {Table1.BatchMaxVariance} <> 0) )

这工作得非常好,crystal 处理它显示正确的结果。

要求是在 WHERE 子句中添加另一个条件,如下所示:第 4 行是新条件。

    WHERE 
("Table1"."count"<>"Table1"."onhand"
OR "Table2"."batch_code" IS NOT NULL
OR ("Table1"."BatchMinVariance"<>0 OR "Table1"."BatchMaxVariance"<>0)
OR (CONVERT(varchar, "Table3".in_snapshot_yn) + CONVERT(varchar, "Table3".counted_yn) IN ('01', '10'))
)

注意条件 4 是新条件,我使用了 sql CONVERT 函数,因为它们是 bool 字段,因此只显示那些具有值 01 或 10 的行。sql 查询给了我预期的结果, 但我正在寻找与此条件等效的 Crystal。对于条件 4,我尝试了:

OR (TOTEXT(TONumber({Table3.in_snapshot_yn}), 0)&""&TOTEXT(TONumber({STAKE_SERIALNO.counted_yn}), 0) IN ("01, 11") <> true) 

我已经在报告中对此进行了测试,以查看 crystal 是否喜欢并且 crystal 不会提示。但是当我把它作为条件 4 放在我的代码中时,我不会喜欢它。给出一个缺少括号 ) 的蹩脚错误。我知道这不是括号问题,绝对与条件有关。

完整的 CR 等效条件如下所示:

    ({TABLE1.count} <> {TABLE1.onhand} 
OR (not isnull({Table2.batch_code})
OR ({TABLE1.BatchMinVariance} <> 0 OR {TABLE1.BatchMaxVariance} <> 0) )
OR NOT (TOTEXT(TONumber({Table3.in_snapshot_yn}), 0)&""&TOTEXT(TONumber({Table3.counted_yn}), 0) IN ("01, 11")) )

如有任何提示,我们将不胜感激。我正在使用 SQL Server 2014 和 CR 13。

最佳答案

您应该创建一个 SQLExpression。 SQLExpression 将具有与数据库语法相同的语法,主要优点是它将在服务器上执行。您可以将其添加到记录选择公式中。如果您使用 Crystal 功能,所有记录都将在本地下载和过滤。如果您使用 SQL 表达式,Crystal 将能够生成一个 WHERE 子句并将其发送到服务器,这样下载到您机器上的记录数就会少得多。

关于c# - SQL Convert(varchar, <fieldname>) 等效于 Crystal Reports 记录选择公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com