Crystal Reports и строго типизированные наборы данных дают пустой отчет - PullRequest
0 голосов
/ 01 июля 2011

Я конвертирую приложение ASP.Net из VS 2003 в VS 2005 в качестве отправной точки.Приложение использует Crystal Reports и привязывает ADO.Net к строго типизированному набору данных (XSD).Мне пришлось изменить некоторые из Crystal Code для работы с более новой версией Crystal.Теперь, когда я запускаю страницу, создается отчет, но ни одно из полей не заполняется. Я видел много людей, у которых была такая же проблема без реальных решений.Я решил создать новый проект, который делает то же самое, чтобы удалить разговор с VS 2003 по 2005 год как возможную причину проблемы.Таким образом, моя программа-пример имеет кнопку, которая выполняет запрос, заполняет набор данных и назначает его отчету.В отчете отображаются только заголовки.Код ниже.Я понятия не имею, что попробовать дальше.

    DataSet1 ds = new DataSet1();

    SqlConnection conn = 
       new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

    SqlDataAdapter da = new SqlDataAdapter("select * from mytable", conn);
    da.Fill(ds);

    ReportDocument rep = new ReportDocument();
    rep.Load(Server.MapPath("crystalreport.rpt"));
    rep.SetDataSource(ds);

    CrystalReportViewer1.ReportSource = rep;
    CrystalReportViewer1.RefreshReport();

Я также создал DataSet1.XSD на основе той же таблицы MYTABLE.Я не получаю ошибок или указаний на то, что что-то не так, за исключением того, что поля в отчете не заполняются.

1 Ответ

1 голос
/ 01 июля 2011

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

Вот хороший пример метода для работы.

SqlConnection cnn;
string connectionString = null;
string sql = null;

connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select * from mytable";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "mytable");
cnn.Close();

CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
...