Как установить поля страницы по коду для отчета Sap Crystal в приложениях C # Windows - PullRequest
0 голосов
/ 29 марта 2019

Я хочу установить поле отчета по стороне кодирования, а не по дизайну 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 , тогда он работает.

Но яне хочу делать, перейдя их свойства .Я хочу сделать динамическое программно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...