我需要为我的Crystal Report做以下选择:
Select * from Table1 where ID not in (select ID from Table2 where mydate = @param)
并使事情变得更加复杂表1&表2位于两个不同的服务器上(一个是Access,一个是不同机器上的SQL)。
我尝试了几件事,但似乎无法获得正确的记录。我尝试过使用左连接,但当然我无法过滤日期。有什么想法可以实现吗?
提前谢谢
答案 0 :(得分:0)
您可能需要为每个字段创建公式:
@字段1
如果Table1.ID!= Table2.ID
然后
Table1.Field1
答案 1 :(得分:0)
好的,因为你只有2个数据源试试这个:
在主报告中获取主报告和一个子报告
主要报告:
此查询应在主报告中使用
select ID from Table2 where mydate = @param
创建参数并检索主报告中的值。
现在进行子报告
子报告:
子报告应使用此查询:
Select * from Table1
现在记录选择子报告写这个
ID not in ({?pm-ID})
pm-ID}
是您通过子报告链接从主报告传递到子报告的值
现在,您可以根据需要在报告中显示数据
答案 2 :(得分:0)
除非我遗漏某些内容(完全可能),否则使用左连接应该可行。
对于此图示,我使用两个SQL命令,table1中的记录不在table2中,表2中的记录不在table1中。
仅当table2为null,或者table2为null且table2.Date不等于参数
时,才返回记录当@param =' 20160303'时,我们从table1或table2看不到该记录。 (ID 55)
加入:
总结:使用公共列上的左连接设置数据源。 创建日期参数 使用报告>选择导出>记录并输入以下公式
isnull({Table2.date})or {Table2.date} <> {?date}
如果您使用的是日期范围,则可能需要重新格式化not equal to @param
部分