Источник данных Crystal Reports в Visual Studio - PullRequest
0 голосов
/ 16 декабря 2008

Использование Visual Studio 2005 с установкой Crystal Reports по умолчанию.

Когда я создаю отчет, Crystal запрашивает базу данных, и я даю ей свою базу данных для разработки. В приложении я создаю DataTable и передаю его в отчет, который затем передается в CR Viewer. Во время выполнения ни объект отчета, ни средство просмотра не должны видеть БД, поскольку я уже получил таблицу.

Когда приложение передается пользователям, все работает отлично. Они не могут видеть развитие базы данных.

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

Итак, это не проблема, что они не видят мою базу данных разработки, но это проблема, которую я не вижу производственной базы данных.

Вопросы: возникает ли это потому, что работа в VS отличается от запуска установленного приложения? Почему отчет все равно пытается подключиться к БД? Как мне это контролировать?

Ответы [ 3 ]

1 голос
/ 17 июня 2009

Когда вы создаете отчет, вы должны иметь возможность сделать report.SetDataSouce (DataSet) и передать ему свой набор данных, который содержит таблицы, используемые отчетом.

1 голос
/ 16 декабря 2008

Я думаю, что я следую ...

Когда вы смотрите .rpt в VS, щелкните правой кнопкой мыши Поля базы данных в окне Обозреватель полей и перейдите к «Задать местоположение источника данных». Что это показывает для вашего подключения? Он указывает на сервер Production db? Этот параметр будет сохранен в файле .rpt, поэтому это может объяснить вашу проблему.

0 голосов
/ 14 мая 2014

Вопросы: возникает ли это потому, что работа в VS отличается от запуска установленного приложения? Почему отчет все равно пытается подключиться к БД? Как мне это контролировать?

Вы можете управлять им в соответствии с содержанием вашего отчета

если ваш отчет содержит одну таблицу и вы передали эту таблицу в свой отчет с помощью DataTable, отчет будет работать нормально

но отчет пытается подключиться к исходному расположению БД, когда ваша таблица данных не предоставляет все данные отчета, обычно, когда ваш отчет содержит 2 или более таблицы

в этом случае вам нужно передать DATASET, чтобы отчет содержал все таблицы

здесь мой код с использованием 2 таблиц форм авторов и заголовка автора

'Build a SQL statement to query for the authors table 

Dim sqlString As String = "SELECT * FROM authors"

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection)

'Build a SQL statement to query for the titleauthor table 

sqlString = "SELECT * FROM titleauthor" 

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter2 = New OleDbDataAdapter(sqlString, adoOleDbConnection) 

'Create a instance of a Dataset 

DataSet1 = New DataSet() 

'Fill the dataset with the data with author information 

adoOleDbDataAdapter.Fill(DataSet1, "authors") 

'Fill the dataset with the data with titleauthor information. 
'The table name used in the Fill method must be identical to the name 
'of the table in the report. 

adoOleDbDataAdapter2.Fill(DataSet1, "titleauthor") 

'Pass the dataset to the report 

crReportDocument.Database.Tables(0).SetDataSource(DataSet1) 

'View the report 

CrystalReportViewer1.ReportSource = crReportDocument
...