前台代码:
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile ="~/GatherModl.Master"   CodeBehind="WeekGatherOfOneDailyAmWF.aspx.cs" Inherits="OfficeAnywhere.CheckOnWorkAttendance.WeekGatherOfOneDailyAmWF" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<asp:Content ID="Content1" runat="server"
    contentplaceholderid="ContentPlaceHolder1">

&nbsp;&nbsp;
<asp:Button ID="btnUpWeek" runat="server" Text="上一周" onclick="btnUpWeek_Click" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID="btnNextWeek" runat="server" Text="下一周"
        onclick="btnNextWeek_Click" /> <asp:Label ID="lblShotTumeValue" runat="server" Text="0"></asp:Label>
               
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="449px"
        Width="796px" Font-Names="Verdana" Font-Size="8pt">
        <localreport reportpath="CheckOnWorkAttendance\Cntrol\ReportWeekDailyCheckAm.rdlc">
            <datasources>
                <rsweb:ReportDataSource DataSourceId="ObjectDataSource1"
                    Name="OfficeAnywhereDataSet_proc_WeekDailyCheck1" />
            </datasources>
        </localreport>
    </rsweb:ReportViewer>

               
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
        SelectMethod="GetData"
       
        TypeName="OfficeAnywhere.OfficeAnywhereDataSetTableAdapters.proc_WeekDailyCheck1TableAdapter"
        OldValuesParameterFormatString="original_{0}">
        <SelectParameters>
            <asp:SessionParameter DefaultValue="10087" Name="mid" SessionField="10087"
                Type="Int32" />
            <asp:SessionParameter DefaultValue="2009-06-22" Name="Seltime"
                SessionField="2009-06-22" Type="DateTime" />
        </SelectParameters>
    </asp:ObjectDataSource>
</asp:Content>

报表可以参数更新的后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using OfficeAnywhere.CheckOnWorkAttendance.SqlDB;

namespace OfficeAnywhere.CheckOnWorkAttendance
{
    public partial class WeekGatherOfOneDailyAmWF : BasePage
    {
        public static int w;
        DataSqlDb dataSqlDb;
        public static DateTime dt;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dataSqlDb = new DataSqlDb();
                dt = dataSqlDb.GetDate();
                WeekGather(Profile.ShortTimeValue, Profile.StringValues, Profile.Values); //姓名,编号,增加值
            }
        }


        //上一周
        protected void btnUpWeek_Click(object sender, EventArgs e)
        {
            w = Profile.Values;
            WeekGatherOfOne(--w);
        }
        //下一周
        protected void btnNextWeek_Click(object sender, EventArgs e)
        {
            w = Profile.Values;
            WeekGatherOfOne(++w);
        }
        public void WeekGatherOfOne(int ws)
        {
            Profile.Values = ws;;
            Response.Redirect("~/CheckOnWorkAttendance/WeekGatherOfOneDailyAmWF.aspx");
        }
        //打印报表
        public void WeekGather(string name, string memIds, int ws)
        {
            string mouthTimes = BLL.TimeConversion.ConversionWeek( dt, ws).ToShortDateString();
            lblShotTumeValue.Text = "你查看的是" + name + "于" + mouthTimes + "所在月份的汇总情况。";
            ObjectDataSource1.SelectMethod = "GetData";
            ObjectDataSource1.TypeName = "OfficeAnywhere.OfficeAnywhereDataSetTableAdapters.proc_WeekDailyCheck1TableAdapter";
            ObjectDataSource1.OldValuesParameterFormatString = "original_{0}";
            ObjectDataSource1.SelectParameters[0].Name = "mid";
            ObjectDataSource1.SelectParameters[0].Type = System.TypeCode.Int32;
            ObjectDataSource1.SelectParameters[0].DefaultValue = memIds;
            ObjectDataSource1.SelectParameters[1].Name = "Seltime";
            ObjectDataSource1.SelectParameters[1].Type = System.TypeCode.DateTime;
            ObjectDataSource1.SelectParameters[1].DefaultValue = mouthTimes;
        }
    }
}

//需调用的数据库中的存储过程

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

 

ALTER          procedure [dbo].[proc_WeekDailyCheck1]
(@mid int,@Seltime datetime)
as
declare @ComeTime datetime,@LeaveTime datetime,@x int

--创建变量表
declare @Onecheck table
(Odate  datetime,
Attend smallint default 0,
Late smallint default 0,
Absence smallint default 0,
Zaotui smallint default 0,
Leave smallint default 0)
set @x=0
while @x<7
begin
print @Seltime
select @ComeTime=AmRegister,@LeaveTime=AmLeave from DailyCheck where MemId=@mid
and AmRegister>@Seltime
and AmRegister<dateadd(day,1,@Seltime)
if(@ComeTime is null or @LeaveTime is null)
begin
  if((select LeaveID from Leave where memid=@mid and @Seltime between LeaveBegin and dateadd(day,isholiday-1,LeaveBegin)) is null)
     insert into @Onecheck(Odate,Absence) values(@Seltime,-2)
  else
     insert into @Onecheck(Odate,Leave) values(@Seltime,1)

end
else
if(@ComeTime<=dateadd(hour,9,@Seltime) and @LeaveTime>dateadd(minute,30,dateadd(hour,11,@Seltime)))
  insert into  @Onecheck(Odate,Attend) values(@Seltime,3)
else
begin
  if(@ComeTime>dateadd(hour,9,@Seltime))
    insert into  @Onecheck(Odate,Late) values(@Seltime,2)
  if(@LeaveTime<dateadd(minute,30,dateadd(hour,11,@Seltime)) or @LeaveTime is null)
     if((select Zaotui from @Onecheck where Odate=@Seltime) is not null)
         update @Onecheck set Zaotui=-1 where Odate=@Seltime
    else
         insert into @Onecheck(Odate,Zaotui) values(@Seltime,-1)
end
set @x=@x+1
set @Seltime=dateadd(day,1,@Seltime)
select @ComeTime=null,@LeaveTime=null

end
select * from @Onecheck

Posted on 2009-09-16 15:31  邬江-远波  阅读(695)  评论(0编辑  收藏  举报