Dynami c форматирование данных и функция вставки таблиц в SAP Crystal Report ASP веб-приложение? - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно сгенерировать отчет на странице .aspx через Crystal Report, в моем отчете есть разные таблицы. Для этого я выполняю следующие шаги:

  1. Мастер создания стандартных отчетов в ASP Веб-приложение в Visual Studio
  2. Добавить набор данных с таблицей данных со столбцами (то же имя, что и имя столбца в SQL query)
  3. Перетащите имена столбцов в «Разделе сведений» (он автоматически добавит то же, что и заголовок в разделе «Заголовок страницы».
  4. Перетащите раздел 4, чтобы упорядочить все данные в разделе Details
  5. Для столбцов, занимающих большую площадь, увеличьте свою высоту, все форматирование, включая стили шрифтов, выравнивание текстовых ячеек, размер столбца и т. д. c, легко форматируется.
  6. Для разных частей данных (маленькие таблицы и c), используются вспомогательные отчеты

testpage.aspx

<form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Back to Input Page" />
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" ToolPanelView="None" />

testpage.aspx.cs

    public partial class testpage : System.Web.UI.Page
    {
            string ticketgotsession, query;
            string conString =  ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
      protected void Page_Load(object sender, EventArgs e)
      {
        ticketgotsession = Session["ticketno"].ToString();
        ReportDocument crystalReport = new ReportDocument();
        crystalReport.Load(Server.MapPath("~/Crystest4.rpt"));

   //All different queries combined in 1 query & stored in Dataset obj t1 
    test1 t1 = GetQ1("select c1,c2,c3.....c30 
          from table1
          inner join  table2 on ___
          inner join table3 on ___
          inner join table4 on ___
         where cr.ref_num='" + ticketgotsession + "'");

         crystalReport.SetDataSource(t1);
         CrystalReportViewer1.ReportSource = crystalReport;
      }

private test1 GetQ1(string query)
{
    SqlCommand cmd1 = new SqlCommand(query);
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda1 = new SqlDataAdapter())
        {
            cmd1.CommandType = CommandType.Text;
            cmd1.Connection = con;

            sda1.SelectCommand = cmd1;

            using (test1 t1 = new test1())
            {   //DataTable4 was empty table of dataset test1 with Exactly same name as all Col names in the query
                sda1.Fill(t1,"DataTable4");
                return t1;
            }
        }
    }
}

Ниже представлен отчет, созданный на данный момент (обведен кругом: границы ячеек для ячеек, созданных с помощью линий вручную, данные превышают 1 ячейку или иногда они накладываются на другое содержимое).
enter image description here

Ссылки также упоминались: автоматическая регулировка размера с использованием таблиц данных и Использование Tight Horizontal

Однако, после многих экспериментов, ниже наблюдалась Может расти & Тесно по горизонтали feature:

«Когда могут расти и плотно по горизонтали, оба включены, тогда столбцы расширяются по вертикали, но не по горизонтали, текст не усечен "

" Если включена функция Tight Horizontal, граница будет обрезана, чтобы соответствовать размеру каждой отдельной записи. "

Но ничего не сработало.

Поскольку в asp. net есть Grid View, который динамически выравнивает данные в табличном макете, я ищу аналогичную функцию в Crystal Report , поэтому я не нужно перетащить каждое поле данных, затем изменить размер, установить границы каждого из них вручную.

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

В этом случае у вас есть 2 основных варианта:

  1. Улучшить дизайн макета, возможно, используя выражения Dynami c size / position. Если шрифт пропорционален, вы можете создать или использовать стороннюю Crystal UFL (библиотеку пользовательских функций) для вычисления размера для заданного содержимого и шрифта.

  2. В коде используйте элемент управления сеткой или HTML таблица, преобразовать результат в изображение и отобразить изображение в отчете. Опять же, для этого вы можете создать или использовать сторонний Crystal UFL. Вот пример вывода формулы Crystal с использованием стороннего UFL, который преобразует HTML текст в изображение для встраивания в отчет: enter image description here

0 голосов
/ 26 мая 2020

Видит ли пользователь предварительный просмотр отчета? Или вам нужно предоставить конечный результат в формате для печати / экспорта? Если да, то в каком формате?

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