Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以表格形式显示员工出勤情况_C#_Sql_Sql Server_Crystal Reports - Fatal编程技术网

C# 如何以表格形式显示员工出勤情况

C# 如何以表格形式显示员工出勤情况,c#,sql,sql-server,crystal-reports,C#,Sql,Sql Server,Crystal Reports,我有一张桌子,通过手动打孔机存储员工的出勤情况。它作为先进先出逻辑工作,并显示emmploye的出席情况 现在我要准备整个部门的员工考勤表,每月总天数 管理层提出的表格格式如下: Employee Name | 1 | 2 | 3 | 4 | 5 |6 |..... so on to the days in a month John Carpenter | P | P | A | A | P | LFP John Seraph A | P | P | A | A | P | LFP 后端

我有一张桌子,通过手动打孔机存储员工的出勤情况。它作为先进先出逻辑工作,并显示emmploye的出席情况

现在我要准备整个部门的员工考勤表,每月总天数

管理层提出的表格格式如下:

Employee Name  | 1 | 2 | 3 | 4 | 5 |6 |..... so on to the days in a month 
John Carpenter | P | P | A | A | P | LFP
John Seraph A  | P | P | A | A | P | LFP
后端是SQL Server 2000,前端是在C#上开发的。我们将使用crystal reports

表结构:

tbl_出席率 tbl_系 tbl_员工 tbl_员工轮班 tbl_叶 tbl_班次

CREATE TABLE [dbo].[tbl_Attendance] (
    [AttendanceID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [PNO] [bigint] NULL ,
    [AttDate] [datetime] NULL ,
    [CurrentShift] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [ReaderID] [bigint] NULL ,
    [Status] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [flag] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [ManualFlag] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_Department] (
    [DeptID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [DeptName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_Employee] (
    [EmpID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [PNO] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T1] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T2] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T3] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T4] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T5] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T6] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T7] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T8] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [T9] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [CreatedDate] [datetime] NULL ,
    [EmpName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Type] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_EmployeeShifts] (
    [EmpShiftID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [EmpID] [bigint] NULL ,
    [ShiftID] [bigint] NULL ,
    [DateFrom] [datetime] NULL ,
    [DateTo] [datetime] NULL ,
    [CreatedDate] [datetime] NULL ,
    [DeptID] [bigint] NULL ,
    [flag] [bit] NULL ,
    [uFlag] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_LoginTime] (
    [LoginTimeID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [UserID] [bigint] NULL ,
    [LoginTime] [datetime] NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_Permission] (
    [EmpPermissionID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [EmpID] [bigint] NULL ,
    [DateFrom] [datetime] NULL ,
    [DateTo] [datetime] NULL ,
    [Type] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [CreatedDate] [datetime] NULL ,
    [flag] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_Shifts] (
    [ShiftID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [StartShift] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [EndShift] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [CreatedDate] [datetime] NULL ,
    [GraceTime] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [ShiftType] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tbl_UserInfo] (
    [UserID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [UserName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [UserPassword] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [CreatedDate] [datetime] NULL 
) ON [PRIMARY]
上面是表格结构。我只想做一些连接,得到这种格式的报告

如上所述


查询逻辑方面的一些帮助将不胜感激。

您可以使用用于表格格式的交叉表报告


这太宽泛了。请在此处查看SQL server PIVOT功能:。。。当你有更具体的问题或问题时,也许会回来。我看不出这个问题有什么问题,为什么会被否决这么多次。对我来说,这似乎是一个正常的问题。这里唯一的选项是创建SQL,它将以以下格式返回数据:EmployeeName、Day、Value。值应为int(0-未呈现,1呈现)。在Crystal中,使用交叉表并将EmployeeName放在行部分,Day放在列部分,Value放在细节部分。这将创建您想要的演示文稿,唯一的区别是您将看到0/1而不是P/A。无法在Crystal reports交叉表中汇总字符串。SQL Pivot不是一个选项,因为它将创建具有不同列数(不同月份)的表。Crystal reports是其中一项要求,它将无法正确地表达这一点。我已经用表格结构重新编辑了这篇文章。让我知道是否有可能通过上述表格结构获得预期的结果设计