Crystal Reports命令-连接不同数据库中的表

2020-09-08 15:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我想使用Crystal Reports命令来连接位于同一服务器上不同数据库上的两个表。 这可能吗? 它们都是Progress OpenEdge数据库。

通过数据库专家通过链接来自不同数据库的表,我无需命令即可轻松完成此操作。 但是当无法或很难通过Crystal中的过滤器和公式进行操作时,经常可能需要将整个查询作为SQL命令编写。

一个非常简单的示例,仅用于说明。 不同数据库上的两个表:

HB-CLAIM-PERSON和CO-PERSON,将分别加入PERSON-REF。 不使用命令进行设置,检索HB-CLAIM-PERSON.PERSON-TYPE和CO-PERSON.SURNAME,将导致以下SQL:

 ORopenrev
  选择" HB_CLAIM_PERSON"。" PERSON-TYPE"," HB_CLAIM_PERSON"。" PERSON-REF"
  来自" OPENREV"。" PUB"。" HB-CLAIM-PERSON"" HB_CLAIM_PERSON"
  外部联接HB_CLAIM_PERSON.PERSON-REF = {?ORcore:CO_PERSON.PERSON-REF} 

ORcore 选择" CO_PERSON"。" SURNAME"," CO_PERSON"。" PERSON-REF" 来自" CORE"。" PUB"。" CO-PERSON"" CO_PERSON" WHERE" CO_PERSON"。" PERSON-REF" = {?ORopenrev:HB_CLAIM_PERSON.PERSON-REF}


我希望自己能够在一个数据库中的单个命令中编写类似的内容。 即:

选择hcp1。" PERSON-TYPE",cp1。" SURNAME"
 来自" OPENREV"。" PUB"。" HB-CLAIM-PERSON" hcp1
 加入" CORE"。" PUB"。" CO-PERSON" cp1
   开启hcp1。" PERSON-REF" = cp1。" PERSON-REF" 

当然,除了上面的SQL必须在两个数据库中的一个或另一个上的Command中,因此不能按原样工作。

例如,如果我在" OPENREV"数据库上有该命令,将其联接到" CORE"数据库以复制上述伪查询的SQL语法是什么? Crystal本身似乎会生成一个EXTERNAL JOIN,但是我不确定如何在上面的查询中复制它。

这在SAP Business Objects Crystal Reports 2013支持包1,版本14.1.1.1036中。

预先感谢您可以提供的任何指针。

萨米人

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我想使用Crystal Reports命令来连接位于同一服务器上不同数据库上的两个表。 这可能吗? 它们都是Progress OpenEdge数据库。

通过数据库专家通过链接来自不同数据库的表,我无需命令即可轻松完成此操作。 但是当无法或很难通过Crystal中的过滤器和公式进行操作时,经常可能需要将整个查询作为SQL命令编写。

一个非常简单的示例,仅用于说明。 不同数据库上的两个表:

HB-CLAIM-PERSON和CO-PERSON,将分别加入PERSON-REF。 不使用命令进行设置,检索HB-CLAIM-PERSON.PERSON-TYPE和CO-PERSON.SURNAME,将导致以下SQL:

 ORopenrev
  选择" HB_CLAIM_PERSON"。" PERSON-TYPE"," HB_CLAIM_PERSON"。" PERSON-REF"
  来自" OPENREV"。" PUB"。" HB-CLAIM-PERSON"" HB_CLAIM_PERSON"
  外部联接HB_CLAIM_PERSON.PERSON-REF = {?ORcore:CO_PERSON.PERSON-REF} 

ORcore 选择" CO_PERSON"。" SURNAME"," CO_PERSON"。" PERSON-REF" 来自" CORE"。" PUB"。" CO-PERSON"" CO_PERSON" WHERE" CO_PERSON"。" PERSON-REF" = {?ORopenrev:HB_CLAIM_PERSON.PERSON-REF}


我希望自己能够在一个数据库中的单个命令中编写类似的内容。 即:

选择hcp1。" PERSON-TYPE",cp1。" SURNAME"
 来自" OPENREV"。" PUB"。" HB-CLAIM-PERSON" hcp1
 加入" CORE"。" PUB"。" CO-PERSON" cp1
   开启hcp1。" PERSON-REF" = cp1。" PERSON-REF" 

当然,除了上面的SQL必须在两个数据库中的一个或另一个上的Command中,因此不能按原样工作。

例如,如果我在" OPENREV"数据库上有该命令,将其联接到" CORE"数据库以复制上述伪查询的SQL语法是什么? Crystal本身似乎会生成一个EXTERNAL JOIN,但是我不确定如何在上面的查询中复制它。

这在SAP Business Objects Crystal Reports 2013支持包1,版本14.1.1.1036中。

预先感谢您可以提供的任何指针。

萨米人

付费偷看设置
发送
4条回答
奄奄一息的小鱼
1楼 · 2020-09-08 15:34.采纳回答

嗨,萨米,

Crystal Reports需要与两个数据库建立连接以支持此操作。 不幸的是,唯一的方法是分别连接两个DB,然后在CR中将它们本地连接(就像您已经是)。

请记住,由于此类联接没有在数据库服务器上进行处理,因此报告的性能可能会很差。

>

PS:许多数据库都支持DB链接(连接到同一sql中另一个数据库中的表)。 请查看数据库指南,以了解是否可行。

-Abhilash

Nir深蓝
2楼-- · 2020-09-08 15:56

在这种情况下,不支持数据库链接,这很可惜 非常有用的解决方案。

我会坚持通过Crystal进行链接。 再次感谢您的帮助。

Sami

愤怒的猪头君
3楼-- · 2020-09-08 15:39

如果您的数据库支持数据库链接,那么最好的方法是从一个数据库(DB1)创建数据视图。 在另一个数据库(DB2)中。 然后,您将在连接到DB2的同时创建报告,并且视图将从DB1中提取数据。

-Dell

hengyuye
4楼-- · 2020-09-08 15:41

是的-如果戴尔有可能,那将是非常好的 。 通常,我仅需要来自其他("核心")数据库的几张表,并且这些表总是相同的。 因此,也许我们可以设置一些用于此目的的视图。 非常感谢您提供的指针。

Sami

一周热门 更多>