Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение Crystal Report с помощью цикла 
:(
    Опции темы
Fomaa
Дата 15.4.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Как в Crystal Report можно заносить данные из цикла?
Или как можно заносить данные из НЕТИПИЗИРОВАННОГО DataSet?
PM MAIL   Вверх
thomas
Дата 16.4.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Fomaa, 
Приветствую.
Цитата

как можно заносить данные из НЕТИПИЗИРОВАННОГО DataSet? 

Crystal Report позволяеть создавать "отчёты" на основании данных либо из типизированного датасет, либо из базы данных напрямую.
С динамическими обьектами Crystal Report, к сожалению, работать не умеет.
Он должен знать таблицы и поля в них еще в design mode.
Плюс можно использовать view в БД как источник данных. Во view ты можешь выбрать данные из нескольких таблиц БД, а так же включить вычисляемые поля.
 В ДС только таблицы которые там созданы и заполнены.

Добавлено через 58 секунд
А что ты подразумеваешь под этим?
Цитата

Как в Crystal Report можно заносить данные из цикла?



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Fomaa
Дата 16.4.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Да, именно это и имел ввиду, вы в точности ответили на вопрос, спасибо.
Только с помощью каких же компонент можно создать отчет, который будет использовать нетипизированный датасет?
PM MAIL   Вверх
Fomaa
Дата 17.4.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



А можно в отчетах использовать хранимые процедуры?
PM MAIL   Вверх
akizelokro
Дата 17.4.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Извини, в чем проблема, что ты не хочешь использовать типизированный DataSet?


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
thomas
Дата 17.4.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Fomaa, 
Приветствую.
Цитата

Только с помощью каких же компонент можно создать отчет, который будет использовать нетипизированный датасет? 

Использовать НЕТИПИЗИРОВАННЫЙ(динамический, создаваемый в runtime) датасет для работы с Crystal Report НЕВОЗМОЖНО.

Если вы, в своей программе, используете все что угодно за исключением типизированного датасет, то отчеты в Crystal Report создаются на основе базы данных НАПРЯМУЮ.
Т.е. Crystal Report  в design mode обращаеться не к типизированному дата сет, а к базе данных, структура таблиц которой, в отличиии от не типизированного дата сет,  известна на этот момент. Это значит, что CR создает свое соединение с БД и для отчетов использует данные из БД, а не из памяти, как в случае с типизированным дата сет.
Цитата

А можно в отчетах использовать хранимые процедуры? 

Этого я не знаю, не пробовал. Я создаю отчеты на основании view в БД на MS SQL Server. Вполне возможно, что и можно. Раз view видны в мастере создания отчета, то может и хп там тоже отображаются. Только одно не маловажное замечание, для view не используються параметры, а для хп очень даже. И как это взаимодействует с Crystal Report я БМП.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
archengel
Дата 17.4.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 19.8.2006

Репутация: нет
Всего: нет



в Crystal Report есть одна интересная фишка: можно указать в дизайнере источник данных, команду (command), он предложит вписать ее текст. Вот сюда можно впихнуть в принципе что угодно, от тела хранимой процедуры, до простого запроса. ПОтом раскидываем  поля по отчету как надо. И при загрузки отчета указываем ему источник, DataSet, DataTable  итд полученные на основе хранимки, запроса, или построенного вручную. Главное что бы названия полей в дизанере совпадали с полями в источнике, что ты привяжешь! Кушает как милый!

Добавлено через 8 минут и 14 секунд
thomas, время суток доброе.
Цитата

Использовать НЕТИПИЗИРОВАННЫЙ(динамический, создаваемый в runtime) датасет для работы с Crystal Report НЕВОЗМОЖНО.

Если вы, в своей программе, используете все что угодно за исключением типизированного датасет, то отчеты в Crystal Report создаются на основе базы данных НАПРЯМУЮ.
Т.е. Crystal Report  в design mode обращаеться не к типизированному дата сет, а к базе данных, структура таблиц которой, в отличиии от не типизированного дата сет,  известна на этот момент. Это значит, что CR создает свое соединение с БД и для отчетов использует данные из БД, а не из памяти, как в случае с типизированным дата сет.


Очень даже можно. Как я писал выше, привязывай, все что хочешь именно (runtime), главное чтобы название полей совпадало!.
Точнее поправлюсь, дизайнер использует прямой коннект к базе, а во время исполнения программе легко подменяется источник с прямого на свой конкретный, полученный в принципе любым путём smile 
PM MAIL ICQ   Вверх
jonie
Дата 17.4.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



дополню что Хранимки использовать можно, в качестве источника.
стоит заметить, что зачастую встроенные вычисления в CR работают быстрее, нежели вычисления на сервере БД.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
EAV
Дата 18.4.2008, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Цитата(archengel @  17.4.2008,  23:55 Найти цитируемый пост)
привязывай, все что хочешь именно (runtime), главное чтобы название полей совпадало!

С этим согласен на 100%! сам пользуюсь подсовыванием источника данных.

Единственное что оставляет небольшое разочарование при использовании CR то, что нельзя создавать сам отчет (его структуру) непосредственно в runtime, а только можно использовать то, что ранее создал в дизайнере отчетов
PM MAIL   Вверх
thomas
Дата 18.4.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Цитата(EAV @ 18.4.2008,  06:00)
Цитата(archengel @  17.4.2008,  23:55 Найти цитируемый пост)
привязывай, все что хочешь именно (runtime), главное чтобы название полей совпадало!

С этим согласен на 100%! сам пользуюсь подсовыванием источника данных.


archengel, 
EAV, 
Приветствую.
Что-то я вас не пойму  smile 

CR может брать данные из типизированного дата сет (т.е. из памяти) или из базы данных(т.е. с жесткого диска).
При этом весь дизайн отчёта формируеться в design mode,  а не в runtime.

Покажите мне, неразумному, как вы "скармливаете" CR-у в design mode данные из нетипизированного дата сет, создаваемого и заполняемого данными программно в runtime.   smile  Очень интересно. И желательно с картинками и пояснениями. 

Как вы обьясняете CR-у при его создании откуда он должен брать данные? Потому как к базе данных вы не обращаетесь (соединение не устанавливаете), а типизированного дата сет в проекте на наблюдаеться. Дата сет создаеться и заполняеться данными в runtime.

Вот скриншот из моего проекта для Crystal Report. Откуда он может взять данные для создания рапорта в design mode .
user posted image

зеленым подчеркнуто созданное соединение с базой данных на MS SQL server.
красной тонкой линией подчеркнута возможность создать команду на выборку данных из БД. Но тут происходит обращение именно к БД с которой уже есть соединение. Но вместо этого удобнее пользоваться командами уже созданными в БД, т.е. view или хранимыми процедурами. Их использовать можно.
синим подчеркнуты .NET Objects - это список форм в проекте, там никаких данных нет.
жирная красная линия подчеркивает отсутствие типизированного дата сет в проекте.
черным зачеркнуты строки не относящиеся к данному проекту.




Это сообщение отредактировал(а) thomas - 18.4.2008, 12:16


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vretsky
Дата 18.4.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



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

Добавлено через 9 минут и 44 секунды
вернее где создать команду в дизайнере я нашел, а как ее менять динамически?
PM MAIL   Вверх
thomas
Дата 18.4.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



vretsky, 
приветствую.
Цитата(archengel @  17.4.2008,  19:55 Найти цитируемый пост)
в Crystal Report есть одна интересная фишка: можно указать в дизайнере источник данных, команду (command), он предложит вписать ее текст. Вот сюда можно впихнуть в принципе что угодно, от тела хранимой процедуры, до простого запроса. 

вот тут товарисч написал то, что я сказал выше 
Цитата(thomas @  16.4.2008,  10:00 Найти цитируемый пост)
Crystal Report позволяеть создавать "отчёты" на основании данных либо из типизированного датасет, либо из базы данных напрямую.

А его понятие "всё что угодно" включает в себя все тот же запрос к базе данных, с которой уже есть соединение. Т.е. другими словами данные для CR будут браться из БД напрямую.
А не из какого-то там дата сет, который кто-то где-то когда-то создаст во время работы программы.







--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vretsky
Дата 18.4.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



или в сторед процедуру можно передать динамический параметр (параметры) ?
(под динамический понимать изменяемый пользователем)
PM MAIL   Вверх
thomas
Дата 18.4.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Цитата

вернее где создать команду в дизайнере я нашел, а как ее менять динамически? 

что ты подразумеваешь под менять? Подставлять параметры в команду?

Если я правильно понимаю, в CR есть поля параметры.
И при помощи этих полей наверное можно выводить, например одну из многих накладных, передав в качестве параметра её номер.

Сейчас сам собираюсь над этим поработать.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vretsky
Дата 18.4.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



thomas 
приветствую!

вот команда к примеру

select *
from Addresses
where code=@param

создаю параметр @param
жму OK, получаю ошибку должна быть объявлена скалярная переменная!!!!!!!!!!!!
PM MAIL   Вверх
EAV
Дата 18.4.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



thomas, 
моя мысль была в следующем:
Сам отчет можно создать только в design mode. При создании отчета если он будет основываться на каких-то данных из БД, то в design mode необходимо создать подключение к уже существующей БД и указать какие поля нужно использовать в отчете.
Про runtime упоминалось в том смысле что во время выполнения программы данные для существующего отчета можно получить как угодно (причем не обязательно из той же таблицы, к который мы конектились во время создания отчета), главное чтобы совпадали названия полей, которые были забиты у вас в дизайнере, с полями, которые вы получили во время выполнения программы.
PM MAIL   Вверх
akizelokro
Дата 18.4.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Что-то я ничего не нонял...
Заходите в схему проекта (файл xml, где сохраняется схема DataSource), жмете правой кнопкой мыши "Add"->"Query"(или "DataAdapter"), пишите в тексте запроса

Код

select *
from Addresses
where code=@param


указуете, откуда берется этот @param (привязка к полю или оставите на потом). А потом цепляете его как источник данных для... (в Report Viewer прошло. Думаю, что в CR пройдёт). Это самый путевый вариант.
Можно и с помощью DataReader закидать данные в типизированный DataSet и тр и пр и др. Это тоже не проблема.
Проблема в том, как я понял, что при формировании отчета, когда вы готовите первую страницу, вам уже тогда должно быть известно количество тех же самых страниц отчета, сколько их в нем будет. Скорее всего, здесь ограничение логики приложения. Иными словами, на лету при обработке n-ной страницы отчета вам могут и не дать подтасовать значение какого-то поля или добавить строку. До начала отработки отчета,- пожалуйста!

Надеюсь, что в тему написал хоть что-то из этого.

Это сообщение отредактировал(а) akizelokro - 18.4.2008, 14:28


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
archengel
Дата 18.4.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 19.8.2006

Репутация: нет
Всего: нет



Кароче я делаю вот так:
1. В дизайнере CR DataBase Expert->CreateNewConnetion->OLEDB->MyDataBase->Add Command
2. В окно засовываю тело хранимой процедуры с уже подставленным параметром, ну скажем:
Код

SELECT f_name,s_name,l_name 
FROM Names
WHERE id_name=1

//Имеется ввиду что такая таблица с таими полями существует, иначе он выдаст ошибку
3.В дизайнере раскидываю поля нужным мне образом, с группировками и т.д.
4.Могу просматривать результаты отчета при разработке (принимая условие выборки из базы id_name=1)
5.Когда уже код исполняется:
Код

//Путь к отчету
String reportPath = System.Windows.Forms.Application.StartupPath + "\\" + "report.rpt";
//Новый объект отчета
ReportDocument rd  = new ReportDocument();
rd.Load(reportPath);
//Возвращаем DataTable значений на основе параметра
DataTable dt=LoadNames(int.Parse(textBox1.text));
//Подставляем таблицу как источник данных для отчета
rd.SetDataSource(dt);
crystalReportViewer.ReportSource = rd;
crystalReportViewer.Refresh();


Ну вот как то так smile 
PM MAIL ICQ   Вверх
thomas
Дата 18.4.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Цитата(EAV @  18.4.2008,  11:33 Найти цитируемый пост)
Про runtime упоминалось в том смысле что во время выполнения программы данные для существующего отчета можно получить как угодно (причем не обязательно из той же таблицы, к который мы конектились во время создания отчета), 


EAV,  smile 




--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
thomas
Дата 18.4.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Цитата(archengel @  18.4.2008,  12:55 Найти цитируемый пост)
Ну вот как то так

попробовал, не прокатывает.
archengel,  smile  рабочий.

Добавлено через 4 минуты и 21 секунду
akizelokro, 
Цитата

Надеюсь, что в тему написал хоть что-то из этого.

Разговор идет о том, что возможно ли вывести в рапорт CR-а данные не из типизированного дата сет и не из базы данных на прямую, т.е. вывести в рапорт данные из динамически созданного дата сет. И как это делаеться? (если такое возможно)


Это сообщение отредактировал(а) thomas - 18.4.2008, 16:01


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
archengel
Дата 18.4.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 19.8.2006

Репутация: нет
Всего: нет



Так а что неработает? В SetDataSource() неработает подстановка????
PM MAIL ICQ   Вверх
thomas
Дата 18.4.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



archengel, 
угу.
этот метод System.Collections.IEnumerable enumerable не принимает.
у меня нет датасетов вообще.
вместо них использую классы, которые помещаю в List<T>. (в принципе это заменяет таблицу в датасет)





--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
akizelokro
Дата 21.4.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Цитата

Разговор идет о том, что возможно ли вывести в рапорт CR-а данные не из типизированного дата сет и не из базы данных на прямую, т.е. вывести в рапорт данные из динамически созданного дата сет. И как это делаеться? (если такое возможно)


Иными словами, ты хочешь в обработке InitReport создать прописать ручками новый DataSet (или DataAdapter), заполнить его данными и передать его посредствои SetDataSource или создать DataReader и сделать с ним то же самое, а затем добавить в отчет полей и заполнять их (тоже ручками - кодом) данными из созданного только что тобой источника данных?


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.