Источник данных Crystal Reports в Visual Studio

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

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

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

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

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

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


person SeaDrive    schedule 16.12.2008    source источник


Ответы (3)


Думаю, я следую...

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

person Andy May    schedule 16.12.2008

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

person Malfist    schedule 17.06.2009

Возникают вопросы: возникает ли это из-за того, что запуск в 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
person E R    schedule 14.05.2014