我正在使用Crystal Reports XI。
我的数据来自数据集。
我有2个表格,如下所示:
产品(产品(PK),产品名称)
ProdPC(ProdPCID(PK),ProdID(FK),PCType,ProdCode)
'PCType'字段确定'ProdCode'代表的条形码格式的类型。 (例如EAN13,EAN8)。
在水晶报道中,一个“产品”可以有多种条形码,这意味着我的桌子看起来像这样:
产品:(“1”,“产品示例1”)
ProdPC :(“0”,“1”,“EAN8”,“01234567”),(“1”,“1”,“EAN13”,“012345678910”)
在水晶报道中,我只想为每件产品打印1个条形码标签。但是因为它们是'ProdPC'表中的2条记录,我将为这1个产品打印2个标签。
我想要做的是在水晶报告中设置一个条件,指出“如果EAN13为NULL,则显示EAN8,ELSE显示EAN13”
我无法访问数据集,无法阻止调用Crystal Reports的应用程序创建条形码标签,从而为“ProdPC”表发送多条记录。
如何创建条件语句,纯粹在'Crystal Reports 2008'中?
到目前为止我尝试的是:
IF {PartPC.PCType} = "EAN-13" AND {PartPC.ProdCode} <> "" THEN
{PartPC.ProdCode}
ELSE
/* DISPLAY PartPC.ProdCode containing EAN8 value */
;
但我不确定如何告诉Crystal Reports显示“ProdCode”值,其中'PCType'等于'EAN8'
答案 0 :(得分:2)
答案 1 :(得分:0)
选项I:创建两列:每个条形码一列。在Crystal Reports中执行此操作。
删除PartPC表,将其替换为两个SQL Expression字段:
// {%EAN-8}
(
SELECT ProdCode
FROM PartPC
WHERE ProdID=Product.ProdID
AND PCType='EAN-8'
)
// {%EAN-13}
(
SELECT ProdCode
FROM PartPC
WHERE ProdID=Product.ProdID
AND PCType='EAN-13'
)
然后创建一个公式字段以显示适当的字段:
// {@barcode}
If Not(Isnull({%EAN-13})) Then
{%EAN-13}
Else
{%EAN-8}
选项II:更改SQL以创建标量值字段。在数据集或Command对象(Crystal Reports)中执行此操作。
SELECT Product.*,
(
SELECT ProdCode
FROM PartPC
WHERE ProdID=Product.ProdID
AND PCType='EAN-8'
) EAN_8,
(
SELECT ProdCode
FROM PartPC
WHERE ProdID=Product.ProdID
AND PCType='EAN-13'
) EAN_13
FROM Product
...