Рейтинг:
0
an0ther1
Crystal Reports не сохраняет данные проверки подлинности в отчете, вы должны предоставить их в отчет следующим образом;
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load("Path and Filename of the Report");
// Create a Crystal ConnectionInfo object
CrystalDecisions.Shared.ConnectionInfo conRpt = new ConnectionInfo();
conRpt.ServerName = "DB Server";
conRpt.DatabaseName = "DB Name";
// use the below for SQL authentication
conRpt.IntegratedSecurity = false;
conRpt.UserID = "SQL Username";
conRpt.Password = "SQL Password";
// use the below if using Windows Authentication
// conRpt.IntegratedSecurity = true;
// Apply the connection information to the report tables
CrystalDecisions.CrystalReports.Engine.Tables tblsRpt = rptDoc.Database.Tables;
for(int i = 0; i < tblsTRpt.Count; i++)
{
CrystalDecisions.CrystalReports.Engine.Table tblRpt = tblsRpt[i];
CrystalDecisions.Shared.TableLogOnInfo infoTbl = tblRpt.LogOnInfo;
infoTbl.ConnectionInfo = conRpt;
tblRpt.ApplyLogOnInfo(infoTbl);
}
// If the Report contains sub reports you need to loop through each sub-report and apply the LogOnInfo to each Sub Report table
// you should now be able to Verify the database
rptDoc.VerifyDataBase();
Пожалуйста, обратите внимание; VerifyDatabase не возвращает значение, поэтому я ожидаю, что вам нужно будет обернуть оператор в try/catch/finally & обрабатывать ошибки самостоятельно
Надеюсь, это поможет
MinionsVino
Большое вам спасибо за ваши ценные комментарии, разве это единственный способ проверить набор данных в crystal report с помощью кода c#? Потому что причина, по которой я спрашиваю, у меня много хрустальных отчетов. Если я буду перебирать каждый из них, то это займет много времени.
an0ther1
Насколько я знаю, это единственный способ проверить отчет.
Если у вас есть так много отчетов, вы можете подумать о каком - то другом методе определения того, какие отчеты должны быть обновлены или использовать хранимые процедуры для ваших отчетов-это мое предпочтение, поскольку оно полностью избегает этой проблемы
с уважением
MinionsVino
Он пуст, поэтому он не вернет никакого значения, тогда не могли бы вы сказать мне, какова цель "rptDoc.VerifyDataBase" ?
an0ther1
Привет Миниос,
Я проверил VerifyDatabase & он не делает ничего, что я могу видеть - даже если я изменяю схему, он ничего не возвращает и не выдает ошибку.
Как я уже сказал, Вы можете изменить свои отчеты, чтобы использовать хранимые процедуры.
Они работают быстрее, особенно когда речь идет о вложенных отчетах, и позволяют избежать этой проблемы
с уважением