Связывать таблицы, когда один столбец дополняется нулями в Crystal Reports - PullRequest
2 голосов
/ 26 октября 2011

У меня есть база данных, в которой есть две таблицы, которые необходимо связать, но в одной таблице данные дополняются нулями. Например, таблицы могут выглядеть так:

CUSTOMER.CUSTNUM = 00000000123456

CUSTOMERPHONE.CUSTNUM = 123456

Я не могу понять, как заставить эти таблицы правильно соединиться.

Сейчас я пытаюсь заставить Crystal Reports указать условие Join, добавив следующее в эксперт выбора:

Справа ({CUSTOMER.CUSTNUM}) = {CUSTOMERPHONE.CUSTNUM}

Хотя это не работает, и в моем отчете вообще нет записей.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Crystal не любит гетерогенные объединения.

Опции:

  • использовать объект команды, который даст вам больший контроль над связью
  • создатьВыражение SQL, которое выполняет желаемую конкатенацию;поля ссылки в формуле выбора записей
  • используют вложенный отчет для связанной таблицы
  • изменяют таблицу, чтобы сделать типы данных совместимыми
  • создают представление SQL, которое выполняет объединения
1 голос
/ 27 октября 2011

Во-первых, почему CUSTOMER.CUSTNUM имеет первые нули в первую очередь?Мне кажется, что это должен быть ЦИФРОВОЙ тип данных вместо VARCHAR.CUSTNUM должен быть согласован во всех таблицах.Просто мысль.

В любом случае, чтобы ответить на ваш вопрос, вы можете попробовать создать команду SQL в Crystal, чтобы объединить две таблицы.В соединении просто используйте функцию вашей базы данных для преобразования из varchar в число.Например, в Access вы можете сделать:

SELECT *
FROM `Customer`
LEFT OUTER JOIN `Orders` ON `Orders`.`Numeric Customer ID` = CLng(`Customer`.`Varchar Customer ID`)
0 голосов
/ 29 октября 2011

Если быстродействие не является проблемой, вы можете сделать это с помощью Select Expert.Я думаю, что проблема в вашей формуле.

Попробуйте изменить свою формулу с этого:

{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM})

на это:

{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM}, Length({CUSTOMERPHONE.CUSTNUM}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...