我有一个带有数据库命令的Crystal Report:
该命令有一个join子句,可以从数据库中的表中删除和读取,因为它表示静态数据。我将此表(称为_System)添加到数据库专家:
现在我编辑命令以删除引用此表的连接和列。由于不再映射依赖于这些列的报告字段,因此会显示“映射字段”窗口:
...其中没有新表。如果我取消这个,我会回到原来的位置。如果我在没有映射的情况下点击OK,则会删除报告中的所有未映射字段(足以说明......我没想到这个> :()
我尝试在命令和新表之间添加链接,并刷新报表参数,但这些参数没有效果。
一种解决方法是手动替换报表中的每个字段,但这非常耗费人力。
以下是命令的大纲:
SELECT ACT.Account_Code, ACT.Company, ACT.FName, --etc
STM.CompanyName AS 'DLRName', STM.Address_1 AS 'DLRAddress', STM.City AS 'DlrCity' --etc
FROM Accounts AS ACT
JOIN _System AS STM ON 1 = 1
GROUP BY ACT.Account_Code, ACT.Company, ACT.FName, --etc
STM.CompanyName, STM.Address_1, STM.City --etc
之后:
SELECT ACT.Account_Code, ACT.Company, ACT.FName, --etc
FROM Accounts AS ACT
GROUP BY ACT.Account_Code, ACT.Company, ACT.FName --etc
我删除了_System表上的JOIN
以及所有引用的列。
答案 0 :(得分:1)
似乎没有将您的_system表识别为新来源。
我会:
1)保持命令对象SQL不变&使用_System表解决问题,然后
2)确保您能够在命令对象字段和_System表字段之间建立连接,最后
3)然后重新映射字段。
第二步我怀疑是问题的根源,因为你的连接条件是" ON 1 = 1"我认为这意味着你可能没有两个表中的公共密钥字段。
请注意,您的原始命令SQL选择STM.Companyname AS' DLRName'。
因此,晶体现在知道一个名为DLRName的字段,但不知道名为CompanyName的字段,因此它不能在旧源中的DLRName与新源中的CompanyName之间建立关联...
与从命令对象移动到附加表的其余字段相同。如果不存在名称匹配... Crystal无法建立连接。但是......它将列出报告中的所有不匹配字段以及已识别数据源中的所有未使用字段,并允许您自己指定匹配项。
但它没有......这告诉我尝试连接/打开_System表时出现了问题。因此......你需要先解决问题,然后进行现场调整。
如果这不能让你通过...然后显示一些示例数据,这样我就可以看到两个表是如何相关的(确保存在一些例子,其中两个表都存在行匹配)。
答案 1 :(得分:0)
我前一段时间有同样的问题。
很遗憾,我在网上找不到任何有帮助的东西,或者看起来不够努力。我只是注意到,就我而言,未在地图字段对话框中显示的特定字段的数据类型为nvarchar(max)
(在视图中)。
我试图用CAST(missingfieldname as nvarchar(20)) as missingfieldname
(我在视图中这样做)强制数据类型,瞧,它神奇地出现在地图字段对话框中。
似乎字段映射对话框没有显示带有斑点文本的字段。
我知道这个问题是4年前提出的。但是希望,此评论可以帮助将来寻求解决方案的人解决这个荒谬而怪异的问题。我很幸运地看到该特定缺失字段的独特之处。