前台代码:
<%@ 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">
<asp:Button ID="btnUpWeek" runat="server" Text="上一周" onclick="btnUpWeek_Click" />
<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