Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

filus


Принципиальный молчун

Зарегистрирован:
31 July 2008
Сообщения: 2
Примеры кода: 0
 

VS C++.NET + ReportViewer, вопрос

01 August 2008 09:39  


Привет, я снова тут, раз никто не хочет отвечать на этот глупый вопрос то отвечу сам, малоли кому понадобитсяПодмигивание

Вообщем, вся проблема была в том что, у меня в студии 9 в конфигурации C++ программирования, к проекту нельзя добавить DataSource ну это типа Add->New Item...-> и так далее и там выбрать темплейт DataSource, вот этого не нашел... почемуто...Улыбка (в конфигурации например C# всё на месте)

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

Значит так, проблема - к файлу Report1.rdlc необходимо (просто обязательно почемуто) добавить DataSource, решение - создаём объект с полями которые потом будем выводить в репорт, примерно так:
public ref class Rep1{
	public:
		Rep1(String ^ Kompaniya){
			m_kompaniya = Kompaniya;
		}
		property String ^ kompaniya{
			void set(String ^ Komp){
				m_kompaniya = Komp;
			}
			String ^ get(){
				return m_kompaniya;
			}
		}
		String ^ m_kompaniya;
	};
в данном случае будем выводить только одно поле kompaniya. Теперь можем добавить к проекту DataSource в виде объекта ну это переходим на вьюшку Data Sources и там жмём Add new data source выбераем Object находим Rep1 и добавляем его. В списке должен появится Rep1 с одним доступным полем [kompaniya]. Если присутствует идём дальше... Переходим к дизайну Report1.rdlc, в верху в менюшке должна появится позиция Report идём Report->Data Sources... там выбераем Rep1 и жмём Add to Report. Вот это и делает то о чём я писал в первом посте, т.е. добавляет в файл Report1.rdlc определение датасорса. Запоминаем Name который у нас получился при добавлении датасорса, ну или сами его переименовываем я назвал его Dataset1. Всё теперь тыкаем на форму репорта table и пишем в поле
=Fields!kompaniya.Value
теперь севим Report1.rdlc, всё он готов меняем немного код присвоения репорту датасета:
void mrep1::mrep1_Load(System::Object^  sender, System::EventArgs^  e) {
		SqlConnection ^ sqlc;
        SqlDataAdapter ^ sqld;
        DataSet ^ sqlds;
     sqlc = gcnew SqlConnection("Data Source=127.0.0.1;Initial Catalog=markbase;Persist Security Info=True;User ID=sa;Password=crhsnj");
            sqlc->Open();
            sqld = gcnew SqlDataAdapter("Select * From m_allpotrebs", sqlc);
            sqlds = gcnew DataSet();
            sqld->Fill(sqlds,"m_allpotrebs");
			reportViewer1->ProcessingMode = ProcessingMode::Local;

        reportViewer1->LocalReport->ReportPath = "..\\plugPotrebiteli\\Report1.rdlc";

		array<Rep1 ^> ^ data = gcnew array<Rep1^>(sqlds->Tables[0]->Rows->Count);
		for(int i=0; i<data->Length; i++){
			String ^ tm = sqlds->Tables[0]->Rows[i]->ItemArray[1]->ToString();
			data[i] = gcnew Rep1(tm);
		}


			reportViewer1->LocalReport->DataSources->Add(gcnew ReportDataSource("Dataset1", data));
		reportViewer1->RefreshReport();
}
ну вот, вроде ничего не забыл, теперь у нас в репорт передаётся такой вот датасетУлыбка, решение мне не очень нравится, как всётаки заставить репорт работать без вот этих вот манипуляций с созданием объекта и добавления его в качестве датасорса в Report1.rdlc, напоминаю что если этого не сделать, то репорт кричит что никаких датасетов не найдено, хотя
reportViewer1->LocalReport->DataSources->Add(gcnew ReportDataSource("Dataset1", sqlds->Tables[0]));
рисутствовал , что делать, как победить .

Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 01 August 2008 09:39
Наверх
  



ADO.NET

 VS C++.NET + ReportViewer, вопросfilus  31 July 2008 15:22
 VS C++.NET + ReportViewer, вопросfilus  01 August 2008 09:39
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта