ADO.NET,你的极限是什么?--ADO.NET之另类绑定

本文介绍了一个使用ADO.NET和存储过程实现的财务报告页面案例。通过两个TEXTBOX控件设置时间范围,并利用存储过程从数据库中获取并处理数据,最终在DATAGRID中展示。存储过程内部通过复杂的SQL逻辑实现了数据的精确统计。
        在.NET应用中,数据库的成分不仅是整个.NET框架重要的部分,也是设计页面和后台的关键.
        ADO.NET你的极限是什么?
1. 页面文件有两个TEXTBOX控件用来设置查找范围。下面一个DATAGRID,用来绑定数据库的数据。
2.后台代码片段:
InBlock.gifpublic partial class FinanceReport : PageBase 
InBlock.gif
InBlock.gif    public static String CONN = System.Configuration.ConfigurationManager.AppSettings.Get("ConnectionString"); 
InBlock.gif 
InBlock.gif    protected void Page_Load(object sender, EventArgs e) 
InBlock.gif    { 
InBlock.gif        PageBegin(truefalse); 
InBlock.gif 
InBlock.gif        if (IsPostBack) 
InBlock.gif            return
InBlock.gif 
InBlock.gif        FromDate.Text = DateTime.Now.Year.ToString() + "-1-1"
InBlock.gif        ToDate.Text = (DateTime.Now.Year + 1).ToString() + "-1-1"
InBlock.gif 
InBlock.gif        PageFill(); 
InBlock.gif    } 
InBlock.gif    protected void QueryButton_Click(object sender, EventArgs e) 
InBlock.gif    { 
InBlock.gif        if (DateUtil.IsDateTime(FromDate.Text) == false || DateUtil.IsDateTime(FromDate.Text) == false
InBlock.gif        { 
InBlock.gif            Session["CM_report_FromDate"] = ""; 
InBlock.gif            Session["CM_report_ToDate"] = ""; 
InBlock.gif        } 
InBlock.gif        else 
InBlock.gif        { 
InBlock.gif            Session["CM_report_FromDate"] = FromDate.Text; 
InBlock.gif            Session["CM_report_ToDate"] = ToDate.Text; 
InBlock.gif        } 
InBlock.gif 
InBlock.gif        BuildTable(); 
InBlock.gif 
InBlock.gif    } 
InBlock.gif    protected void PageFill() 
InBlock.gif    { 
InBlock.gif        if (Session["CM_Year"] != null
InBlock.gif        { 
InBlock.gif            FromDate.Text = Session["CM_Year"] + "-1-1"
InBlock.gif            ToDate.Text = int.Parse(Session["CM_Year"].ToString()) + 1 + "-1-1"
InBlock.gif        } 
InBlock.gif 
InBlock.gif        if (Session["CM_report_FromDate"] != null
InBlock.gif            FromDate.Text = Session["CM_report_FromDate"].ToString(); 
InBlock.gif        if (Session["CM_report_ToDate"] != null
InBlock.gif            ToDate.Text = Session["CM_report_ToDate"].ToString(); 
InBlock.gif 
InBlock.gif        BuildTable(); 
InBlock.gif    } 
InBlock.gif    protected void BuildTable() 
InBlock.gif    { 
InBlock.gif        SqlConnection conn = new SqlConnection(); 
InBlock.gif        conn.ConnectionString = CONN; 
InBlock.gif        SqlCommand command = new SqlCommand(); 
InBlock.gif 
InBlock.gif        command.CommandText = "CM_Test"
InBlock.gif        command.CommandType = CommandType.StoredProcedure; 
InBlock.gif        command.Connection = conn; 
InBlock.gif 
InBlock.gif        SqlParameter param = new SqlParameter("@FromDate", SqlDbType.DateTime); 
InBlock.gif        if (DateUtil.IsDateTime(FromDate.Text) == false
InBlock.gif        { 
InBlock.gif            param.Value = DateTime.Parse(DateTime.Now.Year.ToString() + "-1-1"); 
InBlock.gif        } 
InBlock.gif        else 
InBlock.gif        { 
InBlock.gif            param.Value = DateTime.Parse(FromDate.Text); 
InBlock.gif        } 
InBlock.gif        command.Parameters.Add(param); 
InBlock.gif        param = new SqlParameter("@ToDate", SqlDbType.DateTime); 
InBlock.gif        if (DateUtil.IsDateTime(ToDate.Text) == false
InBlock.gif        { 
InBlock.gif            param.Value = DateTime.Parse((DateTime.Now.Year + 1).ToString() + "-1-1"); 
InBlock.gif        } 
InBlock.gif        else 
InBlock.gif        { 
InBlock.gif            param.Value = DateTime.Parse(ToDate.Text); 
InBlock.gif        } 
InBlock.gif        command.Parameters.Add(param); 
InBlock.gif 
InBlock.gif        DataSet ds = new DataSet(); 
InBlock.gif        SqlDataAdapter da = new SqlDataAdapter(); 
InBlock.gif        da.SelectCommand = command; 
InBlock.gif        da.Fill(ds); 
InBlock.gif        DG.DataSource = ds; 
InBlock.gif        DG.DataBind(); 
InBlock.gif    } 
InBlock.gif}
说明:后台代码中设计时间范围的小技巧很好用,借助JS,点击TEXTBOX控件的时候就会激发封装好的日历,然后选择日期,就可以自动完成填充了。下面就是绑定了。调用了“CM_Test”
3.数据库存储过程,精彩的来了:
CREATE PROCEDURE CM_Test 
  
    @FromDate datetime
    @ToDate datetime 

AS 
    declare @title varchar(50) 
    declare @ic float 
    declare @asb float 
    declare @sales float 


    declare @tmpSales table(CID varchar(50),Company varchar(50),Money float,TPSOMoney float,TPSIMoney float
    TPHOMoney float,TPHIMoney float,SPMoney float,SPIMoney float,CDMoney float,IMoney float
    OMoney float,GSMoney float,Dep varchar(50),InvoiceMoney float,NotInvoiceMoney float
    ReceiveMoney float,NotReceiveMoney float,InvoiceNotReMoney float,RealReceiveMoney float
    declare @tmpIC table(CID varchar(50),Company varchar(50),Money float,TPSOMoney float,TPSIMoney float
    TPHOMoney float,TPHIMoney float,SPMoney float,SPIMoney float,CDMoney float,IMoney float
    OMoney float,GSMoney float,Dep varchar(50),InvoiceMoney float,NotInvoiceMoney float
    ReceiveMoney float,NotReceiveMoney float,InvoiceNotReMoney float,RealReceiveMoney float
    declare @tmpASB table(CID varchar(50),Company varchar(50),Money float,TPSOMoney float,TPSIMoney float
    TPHOMoney float,TPHIMoney float,SPMoney float,SPIMoney float,CDMoney float,IMoney float
    OMoney float,GSMoney float,Dep varchar(50),InvoiceMoney float,NotInvoiceMoney float
    ReceiveMoney float,NotReceiveMoney float,InvoiceNotReMoney float,RealReceiveMoney float

    declare @tmp   table(item varchar(50),ic float,asb float,sales float

    insert @tmpSales select CID,Company,Money,TPSOMoney,TPSIMoney, 
    TPHOMoney,TPHIMoney,SPMoney,SPIMoney,CDMoney,IMoney, 
    OMoney,GSMoney,Dep,InvoiceMoney,NotInvoiceMoney, 
    ReceiveMoney,NotReceiveMoney,InvoiceNotReMoney,RealReceiveMoney 
    from CM_Sales where DelFlag=0 and SignDate >= @FromDate and SignDate < @ToDate 
    insert @tmpIC select * from @tmpSales where Company not like '%公司名字%' 
    insert @tmpASB select * from @tmpSales where Company like '%公司名字%' 

    select @ic=Count(CID) from @tmpIC select @asb=Count(CID) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('合同数:',@ic,@asb,@sales) 

    select @ic=Sum(Moneyfrom @tmpIC select @asb=Sum(Moneyfrom @tmpASB select @sales=@ic+@asb 
    insert @tmp values('合同总额:',@ic,@asb,@sales) 
/* 
    select @ic=Sum(TPSIMoney)+Sum(TPHIMoney)+Sum(SPIMoney) from @tmpIC select @asb=Sum(TPSIMoney)+Sum(TPHIMoney)+Sum(SPIMoney) from @tmpASB select @sales=@ic+@asb  
    insert @tmp values('采购总额:',@ic,@asb,@sales) 
*/
 
    select @ic=sum(Moneyfrom CM_SalesTProduct where CID in (select ID from CM_Sales where DelFlag=0 and SignDate >= @FromDate and SignDate < @ToDate and Company not like '%公司名字%'
    select @asb=sum(Moneyfrom CM_SalesTProduct where CID in (select ID from CM_Sales where DelFlag=0 and SignDate >= @FromDate and SignDate < @ToDate and Company like '%公司名字%'
    select @sales=@ic+@asb 
    insert @tmp values('采购总额:',@ic,@asb,@sales) 

insert @tmp values('————————————————',null,null,null

    select @ic=Sum(SPMoney)+Sum(GSMoney) from @tmpIC select @asb=Sum(SPMoney)+Sum(GSMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('(自有+服务)合同额:',@ic,@asb,@sales) 

    select @ic=Sum(TPSOMoney)+Sum(TPHOMoney) from @tmpIC select @asb=Sum(TPSOMoney)+Sum(TPHOMoney) from @tmpASB select @sales=@ic+@asb  
    insert @tmp values('第三方软硬件合同额:',@ic,@asb,@sales) 

insert @tmp values('————————————————',null,null,null

    select @ic=Sum(TPHOMoney) from @tmpIC select @asb=Sum(TPHOMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('第三方硬件合同额:',@ic,@asb,@sales) 

    select @ic=Sum(TPHIMoney) from @tmpIC select @asb=Sum(TPHIMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('第三方硬件采购额:',@ic,@asb,@sales) 

    select @ic=Sum(TPSOMoney) from @tmpIC select @asb=Sum(TPSOMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('第三方软件合同额:',@ic,@asb,@sales) 

    select @ic=Sum(TPSIMoney) from @tmpIC select @asb=Sum(TPSIMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('第三方软件采购额:',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney) from @tmpIC select @asb=Sum(SPMoney) from @tmpASB select @sales=@ic+@asb 

    insert @tmp values('自有产品合同额:',@ic,@asb,@sales) 

    select @ic=Sum(SPIMoney) from @tmpIC select @asb=Sum(SPIMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('自有产品采购额:',@ic,@asb,@sales) 

    select @ic=Sum(CDMoney)+Sum(IMoney)+Sum(GSMoney)+Sum(OMoney) from @tmpIC select @asb=Sum(CDMoney)+Sum(IMoney)+Sum(GSMoney)+Sum(OMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('服务及其他合同额:',@ic,@asb,@sales) 

insert @tmp values('————————————————',null,null,null

    select @ic=Sum(InvoiceMoney) from @tmpIC select @asb=Sum(InvoiceMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('已开票总额:',@ic,@asb,@sales) 

    select @ic=Sum(ReceiveMoney) from @tmpIC select @asb=Sum(ReceiveMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('已回款总额:',@ic,@asb,@sales) 

    select @ic=Sum(NotReceiveMoney) from @tmpIC select @asb=Sum(NotReceiveMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('未回款总额:',@ic,@asb,@sales) 

    select @ic=Sum(InvoiceNotReMoney) from @tmpIC select @asb=Sum(InvoiceNotReMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('已开票未回款总额:',@ic,@asb,@sales) 
  
    select @ic=Sum(RealReceiveMoney) from @tmpIC select @asb=Sum(RealReceiveMoney) from @tmpASB select @sales=@ic+@asb 
    insert @tmp values('实际应收款总额 :',@ic,@asb,@sales) 

insert @tmp values('————————————————',null,null,null

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=57 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=57 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=57 
    insert @tmp values('BU1(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=43 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=43 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=43 
    insert @tmp values('BU2(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=60 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=60 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=60 
    insert @tmp values('BU3(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=88 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=88 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=88 
    insert @tmp values('BU4(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=50 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=50 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=50 
    insert @tmp values('BU5(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=58 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=58 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=58 
    insert @tmp values('BU6(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=78 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=78 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=78 
    insert @tmp values('BU7(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=83 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=83 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=83 
    insert @tmp values('BU8(自有+服务)合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=70 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=70 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=70 
    insert @tmp values('SRS服务合同额 :',@ic,@asb,@sales) 

    select @ic=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpIC where dep=66 select @asb=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpASB where dep=66 select @sales=Sum(SPMoney)+Sum(GSMoney)+Sum(IMoney) from @tmpSales where dep=66 
    insert @tmp values('SIS服务合同额 :',@ic,@asb,@sales) 


    select * from @tmp 
GO 
说明:。。。这个存储过程直接搞定这个页面,数据库也可以这样完成,我也是第一次接触这样的存储过程。里面带"Money"的变量都是数据库存储金额的类型,这个页面的功能是统计功能。红字的就直接显示在表里面了--即“统计项”;ic--即集成合同;asb--即ASB合同;Sales--即销售合同。





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



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值