2016-04-11 5 views
0

У меня есть 10 баз данных Postgres, связанных через ODBC, которые я использую в Crystal Reports. Эти 10 баз данных все те же, одна и та же схема и таблицы.Несколько баз данных в отчетах Crystal

10 баз данных, которые мне нужно запросить у всех одновременно, чтобы иметь один консолидированный отчет. Это возможно? Если да, то как я могу связать базы данных с консолидированными данными?

Я буду использовать SQL-запрос для рисования данных.

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

+0

Да, это возможно, вы должны использовать отчеты суб ... один дополнительный отчет для одной базы данных. но если вы получаете доступ к 10 базам данных, производительность может ухудшиться ... – Siva

+0

Спасибо, я рассмотрю это. Производительность не будет проблемой, так как это будет только разовый отчет для консолидации данных. Будет предоставлена ​​обратная связь, когда мне удастся ее запустить и запустить согласно вашему предложению. –

ответ

1

Правильный путь будет обрабатывать источник данных вне отчетов Crystal. Я не знаком с Postgres, и я не знаю, можете ли вы связать таблицы или базы данных. В SQL-сервере вы можете использовать связанные серверы, в связанных с MS Access таблицах, должна быть аналогичная концепция в Postgres. Идея состоит в том, чтобы связать объект за пределами базы данных и использовать его в базе данных. Это позволит вам подготовить запрос следующим образом:

выбрать A, B, C ОТ server1.database1.table1 UNION выберите A, B, C ОТ server2.database1.table1 UNION выберите A, B, C оТ server3.database1.table1 ... UNION выберите A, B, C оТ server10.database1.table1

Этот запрос (или вид) будет содержать всю информацию, и вы можете базировать вам Crystal Report на нем , Crystal будет работать только с одной базой данных, содержащей запрос, и запрос будет обрабатывать другие базы данных для сбора данных. Это будет быстрее по сравнению с методом, когда вы добавляете свои соединения ко всей базе данных 10 непосредственно в отчеты Crystal.

Я не думаю, что вложения здесь являются опцией. Каждый субрепорт будет подключаться к отдельной базе данных, и вы получите 10 отдельных подписок. Вы можете получить все данные, но они будут отсортированы для каждого вложенного отчета, поэтому у вас будет A-> Z для первой базы данных, тогда A-> Z для второго и т. Д. Ther будет 10 отдельными наборами данных, которые будут представлены вместе, но будут по-прежнему вести себя как отдельные наборы записей.

Если Postgres не поддерживает связанные базы данных Вы можете использовать базу данных Access в качестве прокси-сервера, просто связать таблицы и использовать его в качестве места, который будет сочетать в себе данные

+0

Хорошее решение действительно +1 для этого .... Но поясните мне одну вещь здесь: если вы создадите один запрос для всех 10 баз данных, то как бы обрабатывать этот запрос вход в базу данных, а также то, что будет временем поиска запроса. – Siva

+0

Войти будет обрабатываться по ссылке. Когда вы добавляете связанный сервер или связанную таблицу, вам необходимо предоставить информацию о соединении, и она будет сохранена внутри базы прокси-сервера. Время возврата будет в худшем случае так же, как когда Crystal извлекает данные. Обычно это будет лучше, потому что данные будут обрабатываться движком базы данных, а не Crystal. – Lan

+0

Я связал базы данных в доступе, однако, из-за тех же имен таблиц, все дубликаты имеют номер в конце таблицы. Как я могу связать все 100 таблиц с их близнецом, чтобы их можно было увидеть как 100 таблиц, а не 1000 таблиц? (100 таблиц x 10 баз данных) –

Смежные вопросы