我有一个包含类结果数据的表。我创建了一个存储过程来选择所有表数据。现在的问题是,我需要为每个学生提供一份单独的报告,并且希望一次以 pdf 格式保存所有报告。我想使用一次选择所有数据的存储过程。
问问题
2001 次
4 回答
1
要实现您想要的目标,请按照以下说明操作
- 创建一个存储过程,它将根据参数返回学生的数据,比如说学生的 ID。如果您在创建参数化存储过程方面需要帮助,请查看此http://www.youtube.com/watch?v=3_KD1P9BzQ8
- 使用您创建的存储过程为学生创建报告。此报告将根据提供的参数显示学生的数据。
- 在 C# 窗体上,添加一个 CrystalReportViewer(如果要直接导出为 PDF 文件,只需省略查看器)、一个按钮和一个文本框。文本框将用于学生的选择,按钮将用于 PDF 创建和导出。
在 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 回答