-3

我有一个包含类结果数据的表。我创建了一个存储过程来选择所有表数据。现在的问题是,我需要为每个学生提供一份单独的报告,并且希望一次以 pdf 格式保存所有报告。我想使用一次选择所有数据的存储过程。

4

4 回答 4

1

要实现您想要的目标,请按照以下说明操作

  1. 创建一个存储过程,它将根据参数返回学生的数据,比如说学生的 ID。如果您在创建参数化存储过程方面需要帮助,请查看此http://www.youtube.com/watch?v=3_KD1P9BzQ8
  2. 使用您创建的存储过程为学生创建报告。此报告将根据提供的参数显示学生的数据。
  3. 在 C# 窗体上,添加一个 CrystalReportViewer(如果要直接导出为 PDF 文件,只需省略查看器)、一个按钮和一个文本框。文本框将用于学生的选择,按钮将用于 PDF 创建和导出。
  4. 在 C# 表单中添加以下代码

    private void button1_Click(object sender, EventArgs e)
    {
        CrystalReport1 report1 = new CrystalReport1();
    
        report1.SetDatabaseLogon("Username","Password");
        report1.SetParameterValue("Parametername", textBox1.Text);
        report1.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, "Student" + textBox1.Text + ".pdf");
    
        crystalReportViewer1.ReportSource = report1; //Remove this if you don't want a viewer.
    }
    

    这将根据提供的 ID 为学生创建一个 PDF 文件,并在查看器中预览报告。如果要为所有学生创建 PDF 文件,则必须遍历所有 ID 并根据相同的原则导出文件。

要使用上面的代码,只需将“用户名”和“密码”替换为您的数据库凭据,将“参数名”替换为您在存储过程中使用的名称。

于 2013-07-08T20:40:05.270 回答
0

我使用部分专家,在此转到详细信息部分,然后分页选项,并在一个可见记录之后设置新页面。就像那样..我的答案快照

现在这工作正常。

于 2013-07-08T21:29:24.157 回答
0

有两种方法可以实现您的目标:

A. 创建一个报告,其中包含所有学生的信息,按学生分组信息并将报告拆分为 pdf。Bursting 将为每个组(学生)生成一个单独的 PDF 文件

B. 创建包含单个学生信息的报告,创建学生列表并为列表中的每条记录运行报告。

市场上有一些工具可用于生成 PDF 文件。我正在使用 R-Tag ( http://www.r-tag.com/Pages/ReportManager.aspx )。它不是免费的,但有 30 天的全功能试用期,这足以让您完成任务。

于 2013-07-08T22:42:08.250 回答
0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NameSpace
{
    class Program
    {
        struct student
        {
            public string stid;
            public string stname;
            public string stage;

        };
        static void Main(string[] args)
        {
            student[] st = new student[4];
            int choice;
            string confirm;
            int count = 0;
            Console.WriteLine("Enter Student Data");
            Console.WriteLine("1. ADD");
            Console.WriteLine("2. UPDATE");
            Console.WriteLine("3. DELETE");
            Console.WriteLine("4. SHOW");
            do
            {
                Console.Write("enter your choice(1-4):");
                choice = int.Parse(Console.ReadLine());
                switch (choice)
                {
                    case 1:
                        Add(st, count);
                        count++;
                        break;
                    case 2:
                        Update(st);
                        break;
                    case 3:
                        Delete(st);
                        break;
                    case 4:
                        Show(st);
                        break;
                    default:
                        Console.WriteLine("\nEnter b/w 1-4\n");
                        break;
                }
                Console.Write("Press Y or y to continue:");
                confirm = Console.ReadLine().ToString();
            } while (confirm == "Y" || confirm == "y");
        }
        static void Add(student[] st, int count)
        {
            Console.Write("\nEnter student ID: ");
            st[count].stid = Console.ReadLine();
            Console.Write("Enter student name: ");
            st[count].stname = Console.ReadLine();
            Console.Write("Enter student age: ");
            st[count].stage = Console.ReadLine();
        }
        static void Show(student[] st)
        {
            for (int count = 0; count < st.Length; count++)
            {
                if (st[count].stid != null)
                {
                    Console.WriteLine("\nStudent ID : " + st[count].stid);
                    Console.WriteLine("Student Name : " + st[count].stname);
                    Console.WriteLine("Student Age : " + st[count].stage);
                }
            }
        }
        static void Delete(student[] st)
        {
            Console.Write("\nEnter student ID: ");
            string studid = Console.ReadLine();
            for (int count = 0; count < st.Length; count++)
            {
                if (studid == st[count].stid)
                {
                    st[count].stid = null;
                    st[count].stname = null;
                    st[count].stage = null;
                }
            }
        }
        static void Update(student[] st)
        {
            Console.Write("\nEnter student ID: ");
            string studid = Console.ReadLine();
            for (int count = 0; count < st.Length; count++)
            {
                if (studid == st[count].stid)
                {
                    Console.Write("Enter student name: ");
                    st[count].stname = Console.ReadLine();
                    Console.Write("Enter student age: ");
                    st[count].stage = Console.ReadLine();
                }
            }
        }
    }
}
于 2015-09-10T12:08:09.377 回答