【课表】这个表该怎么建合适?

聖傑 2012-08-23 11:38:51

如图,我想实现如图的显示效果。但是一直苦于表结构的设计。
求大神解救。

以及后来查询的sql语句该怎样写,才能实现如图的显示效果。
十分感谢。
...全文
172 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
聖傑 2012-08-26
  • 打赏
  • 举报
回复
下面是我的最终解决方案,和大家分享下。
表结构按照图的形式建立的。一开始打算用行转列,但最终没有实现。
显示是用Repeater做的。

<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table style="width: 100%; text-align: center; height: 102px; font-size: small;" align="center"
rules="all">
<tr>
<td align="center" rowspan="2" style="width: 48px">
姓名</td>
<td colspan="3">
星期一</td>
<td colspan="3">
星期二</td>
<td colspan="3">
星期三</td>
<td colspan="3">
星期四</td>
<td colspan="3">
星期五</td>
<td colspan="3">
星期六</td>
<td colspan="3">
星期日</td>
</tr>
<tr>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
<td>
上午</td>
<td>
下午</td>
<td>
晚上</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:Label runat="server" ID="Label1" Text='<%# Eval("MemberName") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label2" Text='<%# Eval("MonM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label3" Text='<%# Eval("MonA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label4" Text='<%# Eval("MonN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label5" Text='<%# Eval("TueM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label6" Text='<%# Eval("TueA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label7" Text='<%# Eval("TueN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label8" Text='<%# Eval("WenM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label9" Text='<%# Eval("WenA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label10" Text='<%# Eval("WenN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label11" Text='<%# Eval("ThurM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label12" Text='<%# Eval("ThurA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label13" Text='<%# Eval("ThurN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label14" Text='<%# Eval("FriM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label15" Text='<%# Eval("FriA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label16" Text='<%# Eval("FriN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label17" Text='<%# Eval("SatM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label18" Text='<%# Eval("SatA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label19" Text='<%# Eval("SatN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label20" Text='<%# Eval("SunM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label21" Text='<%# Eval("SunA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label22" Text='<%# Eval("SunN") %>'></asp:Label></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td><asp:Label runat="server" ID="Label1" Text='<%# Eval("MemberName") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label2" Text='<%# Eval("MonM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label3" Text='<%# Eval("MonA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label4" Text='<%# Eval("MonN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label5" Text='<%# Eval("TueM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label6" Text='<%# Eval("TueA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label7" Text='<%# Eval("TueN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label8" Text='<%# Eval("WenM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label9" Text='<%# Eval("WenA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label10" Text='<%# Eval("WenN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label11" Text='<%# Eval("ThurM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label12" Text='<%# Eval("ThurA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label13" Text='<%# Eval("ThurN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label14" Text='<%# Eval("FriM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label15" Text='<%# Eval("FriA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label16" Text='<%# Eval("FriN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label17" Text='<%# Eval("SatM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label18" Text='<%# Eval("SatA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label19" Text='<%# Eval("SatN") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label20" Text='<%# Eval("SunM") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label21" Text='<%# Eval("SunA") %>'></asp:Label></td>
<td><asp:Label runat="server" ID="Label22" Text='<%# Eval("SunN") %>'></asp:Label></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<tr><td colspan="22"><div align="left" style="font-family: 黑体; font-size: small">备注:符号“○”表示有课</div></td></tr>
</table>
</FooterTemplate>
</asp:Repeater>
聖傑 2012-08-26
  • 打赏
  • 举报
回复
谢谢大家提供的思路。
以学习为目的 2012-08-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

问题是你们都能看到图吗
[/Quote]
筱筱澄看不到图么?
聖傑 2012-08-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

建议 建立两个表 一个 hrShiftM, 一个 hrShiftD

hrShiftM 就是你提示的图一样建立,

hrShiftD 是在你保存的时候, 将 每个人保存成 每人每星期几什么部分打勾 的单条记录形式。
以方便后续 联合表使用。。

体会一下就明白了, 这跟 人事排班 一样的形式。
[/Quote]
可以讲详细一点吗?
RFID2000 2012-08-24
  • 打赏
  • 举报
回复
建议 建立两个表 一个 hrShiftM, 一个 hrShiftD

hrShiftM 就是你提示的图一样建立,

hrShiftD 是在你保存的时候, 将 每个人保存成 每人每星期几什么部分打勾 的单条记录形式。
以方便后续 联合表使用。。

体会一下就明白了, 这跟 人事排班 一样的形式。
SQL77 2012-08-24
  • 打赏
  • 举报
回复
表结构。姓名。星期,时间段。是否有课。

后面行转列就是你要的。

但是显示成那样的结果。用报表控件去做。
ORAClE SE 2012-08-24
  • 打赏
  • 举报
回复
感觉做不到这样的显示效果啊。
dinglei1121 2012-08-24
  • 打赏
  • 举报
回复
先用用试试。。。
筱筱澄 2012-08-24
  • 打赏
  • 举报
回复
问题是你们都能看到图吗
聖傑 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

查询你这个效果不是问题
[/Quote]
问题是怎么查询显示
Aaron_Chan 2012-08-23
  • 打赏
  • 举报
回复

[curriculumId] [bigint] IDENTITY(1,1) NOT NULL,
[grade] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[collegeId] [int] NOT NULL,
[collegeCode] [varchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[collegeName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[professionalId] [int] NOT NULL,
[professionalName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[courseId] [int] NOT NULL,
[courseName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[courseHours] [int] NULL,
[courseType1] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[courseType2] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[classId] [int] NOT NULL,
[className] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[teacherId] [int] NOT NULL,
[teacherName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[classRoomId] [int] NULL,
[classRoomName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[classRoomNo] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[week] [int] NOT NULL,
[time] [int] NOT NULL,
[festival] [int] NOT NULL,

以学习为目的 2012-08-23
  • 打赏
  • 举报
回复
查询你这个效果不是问题
筱筱澄 2012-08-23
  • 打赏
  • 举报
回复
看不到图。。。。。。。。。
无涯大者 2012-08-23
  • 打赏
  • 举报
回复
建表应该不是重点,关键是显示。可以用DataGrid控件,复合表头,合并单元格!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧