Я хочу установить поле отчета по стороне кодирования, а не по дизайну Crystal Report в отчете Sap Crystal в настольном приложении c # .net.
Этот тип вопроса уже задан, но его решение не работает длямне.Вот почему я задаю этот вопрос.
Вот мой код для печати отчета,
ReportDocument cryRpt = new ReportDocument();
SqlCommand MyCommand = new SqlCommand();
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cn.ConnectionString);
ConnectionInfo crConnectionInfo = new ConnectionInfo();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
string mtmptbl = "TmpTagNoReport";
string QrySelStockReport = "SELECT tagno as stocktagno " + System.Environment.NewLine;
QrySelStockReport += " from tbl_tagprint " + System.Environment.NewLine;
MyCommand = new SqlCommand(QrySelStockReport, cn);
MyCommand.CommandType = CommandType.Text;
cn.Open();
MyCommand.ExecuteNonQuery();
cn.Close();
string crReportPath = Application.StartupPath.Replace("bin\\Debug", "") + "\\Report";
cryRpt.Load(crReportPath + "\\TagReport.rpt");
builder.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["con"];
string dbName = builder.InitialCatalog;
string dbDataSource = builder.DataSource;
string userID = builder.UserID;
string pass = builder.Password;
crConnectionInfo.ServerName = dbDataSource;
crConnectionInfo.DatabaseName = dbName;
crConnectionInfo.UserID = userID;
crConnectionInfo.Password = pass;
Tables Crtables;
Crtables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in Crtables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
Первое, что я попробовал
//cryRpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4;
//cryRpt.PrintOptions.ApplyPageMargins(new
CrystalDecisions.Shared.PageMargins(0, 2, 0, 0));
Вторая вещь, которую я попробовал
//PageMargins margins;
//// Get the PageMargins structure and set the
//// margins for the report.
//margins = cryRpt.PrintOptions.PageMargins;
//margins.topMargin = 2;
//// Apply the page margins.
//cryRpt.PrintOptions.ApplyPageMargins(margins);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.RefreshReport();
Две вещи, которые я пытался, но ничего не получалось.
Для большей ясности, давайте возьмем один пример
Теперь я хочу начать отчет, оставив (пропуская) верхние 2-дюймовые пробелы.
так что теперь, когда я использую приведенный выше код, он не работает .
Но когда я добавляю эти 2 дюйма, перейдя в crystal report => properties => design => setup page => top: 2 , тогда он работает.
Но яне хочу делать, перейдя их свойства .Я хочу сделать динамическое программно .