Сценарий NOT IN в Crystal Report с несколькими источниками данных

Мне нужно сделать следующий выбор для моего Crystal Report:

Select * from Table1 where ID not in (select ID from Table2 where mydate = @param)

И чтобы усложнить ситуацию, таблица 1 и таблица 2 находятся на двух разных серверах (один — Access, другой — SQL на разных машинах).

Я пробовал несколько вещей, но не могу получить правильные записи. Я пытался использовать левое соединение, но, конечно, я не могу фильтровать по дате. Любые идеи, как это можно сделать?

заранее спасибо


person user6349124    schedule 18.05.2016    source источник


Ответы (3)


Возможно, вам нужно создать формулу для каждого поля:

@Field1

Если Таблица1.ID != Таблица2.ID

затем

Таблица1.Поле1

person p2k    schedule 18.05.2016
comment
Если я неправильно понимаю ваш ответ, это не даст правильного набора результатов. Это будет эквивалентно Select * from Table1, Table2, где Table1.ID ‹› Table2 - person user6349124; 18.05.2016

хорошо, так как у вас есть только 2 источника данных, попробуйте это:

Возьмите основной отчет и один дополнительный отчет в этом основном отчете.

Основной отчет:

Этот запрос следует использовать в основном отчете.

select ID from Table2 where mydate = @param

Создайте параметр и получите значения в основном отчете.

Теперь возьмите дополнительный отчет

дополнительный отчет:

Вложенный отчет должен использовать этот запрос:

Select * from Table1 

Теперь в записи выбора подотчета напишите это

ID not in ({?pm-ID})

pm-ID}значение, которое вы передаете из основного отчета во вложенный отчет по ссылкам вложенного отчета

Теперь вы можете отображать данные в отчете в соответствии с требованиями

person Siva    schedule 20.05.2016

Если я что-то упустил (вполне возможно), это должно быть выполнимо с помощью левого соединения.

Для этой иллюстрации я использую две команды SQL: в таблице 1 есть записи, которых нет в таблице 2, и в таблице 2 есть записи, которых нет в таблице 1.

Записи возвращаются только в том случае, если table2 имеет значение null или table2 НЕ равно null AND table2.Date НЕ равно параметру

Когда @param = '20160303', мы не видим эту запись из таблицы 1 или таблицы 2. (ID 55) введите здесь описание изображения

Пример набора данных: введите здесь описание изображения

Присоединяйтесь:

введите здесь описание изображения

Формула выбора записи введите здесь описание изображения

Подводя итог: настройте источники данных, используя левое соединение в общем столбце. Создайте параметр даты. Используйте «Отчет» > «Выбрать экспорт» > «Запись» и введите следующую формулу.

isnull({Table2.date})or {Table2.date} <> {?date}

Если вы используете диапазон дат, возможно, вам придется переформатировать часть not equal to @param.

person Aron    schedule 23.05.2016