我是如何搞定复杂水晶报表的(3)

简介:
u 实验步骤4
下面分别介绍上面主程序部分设计的业务逻辑层方法的具体代码,由于这些方法都是引用了数据库存储过程部分,故而同时将展示存储过程开发的代码部分。
1、 业务逻辑层方法business.GetCoursecheck的设计
/*******************************************************
       **方 法  名:GetCoursecheck
       **输 入参数:cno课程编号  bno班级编号
       **输 出参数:
       **返 回  值:
       **创 建  人:钱哨
       **创 建日期:08-7-9
       **描     述:通过存储过程输入cno课程编号和bno班级编号,判别该班该门课程是否有判卷,如果没有则需要进行考试表的初始化工作。
*******************************************************/
public  void GetCoursecheck(int cno, int bno, out int percent_qm, out int percent_sj, out int percent_ps)
        {
            ///下面,开始实例化另一个命名空间的一个类
            Mydatabase DB = new Mydatabase();
            string sql = String.Format("exec proc_GetCoursecheck " + cno + "," + bno + ",@percent_qm output,@percent_ps output,@percent_sj output");
            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@percent_qm"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@percent_ps"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@percent_sj"SqlDbType.Int));
 
            MyCommand.Parameters["@percent_qm"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@percent_ps"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@percent_sj"].Direction = ParameterDirection.Output;
            MyCommand.ExecuteNonQuery();
            percent_qm = Convert.ToInt16(MyCommand.Parameters["@percent_qm"].Value); 
            //接收输出的参数
            percent_ps = Convert.ToInt16(MyCommand.Parameters["@percent_ps"].Value);
             percent_sj = Convert.ToInt16(MyCommand.Parameters["@percent_sj"].Value);
             DB.close();
}
该方法中引用的存储过程proc_GetCoursecheck代码如下:
create proc proc_GetCoursecheck
--通过存储过程输入cno课程编号和bno班级编号,判别该班该门课程是否有判卷,如果没有则需要进行考试表的初始化工作。
@cno int,
@bno int,
@percent_qm int output,
@percent_ps int output,
@percent_sj int output
as
if exists(select sno from sc where cno=@cno and bno=@bno)
begin
 select top 1 @percent_ps=Grade_ps_percent,@percent_qm=Grade_end_percent,@percent_sj=Grade_design_percent
 from sc
 where cno=@cno and bno=@bno
 
end
 
else
begin
 --先求一下该课程和班级的派课表中的授课学期信息
declare @skxq varchar(10)  
select @skxq=skxq from tc where bno=@bno and cno=@cno
 --如果成绩表中没有该班级该门课程的任何成绩,则需要将学生表的数据复制过来
 insert into sc(cno,bno,sno,sname,snumber,Grade_ps_percent,Grade_end_percent,Grade_design_percent,skxq)
 select @cno,bno,sno,sname,snumber,20,80,0,@skxq from student where bno=@bno
 set @percent_ps=20
 set @percent_qm=80
 set @percent_sj=0
end
 
GO
2、   业务逻辑层方法business.GetPjStatistics方法设计
               /*******************************************************
               **方 法  名:GetPjStatistics
               **输 入参数:int bno班级号码, int cno课程号码
               **输 出参数:
               **返 回  值:
               **创 建  人:钱哨
               **创 建日期:08-7-9
               **描     述:统计试卷各个分值的人数。
               *******************************************************/
public  void GetPjStatistics(int cno, int bno, out int first, out int second, out int third, out int forth, out int fifth, out int total)
        {
            ///下面,开始实例化另一个命名空间的一个类
            Mydatabase DB = new Mydatabase();
            string sql = String.Format("exec proc_PjStatistics " + cno + "," + bno + ",@first output,@second output,@third output,@forth output,@fifth output,@total output");
            //执行的T-SQL串
            SqlCommand MyCommand = DB.GetProcCommand(sql);
            MyCommand.Parameters.Add(new SqlParameter("@first"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@second"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@third"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@forth"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@fifth"SqlDbType.Int));
            MyCommand.Parameters.Add(new SqlParameter("@total"SqlDbType.Int));
 
            MyCommand.Parameters["@first"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@second"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@third"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@forth"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@fifth"].Direction = ParameterDirection.Output;
            MyCommand.Parameters["@total"].Direction = ParameterDirection.Output;
 
            MyCommand.ExecuteNonQuery();
 
            first = Convert.ToInt32(MyCommand.Parameters["@first"].Value); //接收输出的参数
            second = Convert.ToInt32(MyCommand.Parameters["@second"].Value);
            third = Convert.ToInt32(MyCommand.Parameters["@third"].Value);
            forth = Convert.ToInt32(MyCommand.Parameters["@forth"].Value);
            fifth = Convert.ToInt32(MyCommand.Parameters["@fifth"].Value);
            total = Convert.ToInt32(MyCommand.Parameters["@total"].Value);
            DB.close();
}
该方法中引用的存储过程proc_PjStatistics代码如下:
create proc proc_PjStatistics
@cno int,
@bno int,
@first int output,@second int output,@third int output,@forth int output,@fifth int output,@total int output
as
select @fifth=count(sno) from sc where (Grade>=0 and Grade<60) and bno=@bno and cno=@cno
select @forth=count(sno) from sc where (Grade>=60 and Grade<70) and bno=@bno and cno=@cno
select @third=count(sno) from sc where (Grade>=70 and Grade<80) and bno=@bno and cno=@cno
select @second=count(sno) from sc where (Grade>=80 and Grade<90) and bno=@bno and cno=@cno
select @first=count(sno) from sc where (Grade>=90 and Grade<=100) and bno=@bno and cno=@cno
select @total=count(sno) from sc where bno=@bno and cno=@cno
 
GO



本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/235680,如需转载请自行联系原作者

目录
相关文章
|
BI
VS2010水晶报表的添加与使用
原文:VS2010水晶报表的添加与使用         最近在学习VS2010水晶报表,发现原先安装的VS2010旗舰版没有 Crystal Report Viewer 控件,网上搜索一下发现要安装一个插件----CRforVS_13_0, 于是下载安装: http://pan.
1088 0
|
BI
水晶报表
水晶报表之Visual C++2003简单使用方法 1.加入命名空间#import "C://Program Files//Common Files//Crystal Decisions//1.
811 0
|
BI 数据库 数据安全/隐私保护
|
BI C++ Windows
在VS2013中使用水晶报表
原文:在VS2013中使用水晶报表 又遇到了在B/S系统中打印,打印格式要求比较高,打印出的效果要求高大上。用VS2013中微软自带的报表,实在难以实现应用的效果,主要问题表现在: 1.不能插入用Word做好的打印模板,自己按照模板来做感觉比较费事,实现不了Word的打印效果,一旦打印模板改变,调整格式比较麻烦。
2117 0
|
BI
[转贴]水晶报表
     I am using VC++ 6 with crystal reports 9 .
805 0
|
文字识别 BI 数据库

热门文章

最新文章