我想做一个这样的系统,一开始建立数据库就遇到了问题
是一个比较简单的资产汇总表及车间岗点物品详细表
-----------------------------------------------------
车间岗点物品详细表:
说明:某单位有好多车间,车间下又设好多岗点,岗点下又有一些物品,
只记录这些物品名称及数量、单位
如:
XX车间XX岗点:
1.桌子 20 张
2.椅子 30 把
3.风扇 10 台
.....
-----------------------------------------------------
资产汇总表:
说明:将该单位的所有物品名称、单位、及数量生成一张表
如:
序号 品名 单位 数量 备注
1 电脑桌 张 50 坏2
2 ......
-----------------------------------------------------
我这样设计:
车间表 岗点表 品名表 详细信息表
1.车间序号 1.岗点序号 1.品名序号 1.序号
2.车间名称 2.车间序号 2.品名 2.岗点序号
3.岗点名称 3.品名单位 3.品名序号
4.总数
车间表和岗点表间建立主从关系,一对多
岗点表和详细信息表间建立主从关系,一对多
详细信息表和品名表间建立参照完整性,以便在录入详细信息表中的品名字段时做
约束
现在的问题是如何让它自动生成资产车间岗点物品详细表,感觉不好设计,大家帮帮忙,看如何
用sql语句做或生成最接近的格式以便用DataList输出!格式如下
XXX年x月x月 XXX单位
-----------------------------------------------------
一场车间办公室:
1.桌子 3 张
2.椅子 3 把
3.风扇 1 台
一场车间资料室:
1.桌子 2 张
2.椅子 2 把
3.风扇 1 台
二场车间办公室:
1.桌子 1 张
2.椅子 1 把
3.风扇 1 台
二场车间资料室:
1.桌子 2 张
2.椅子 2 把
3.风扇 1 台
....略
车间表 岗点表 品名表 详细信息表
1.车间序号 1.岗点序号 1.品名序号 1.序号
2.车间名称 2.车间序号 2.品名 2.岗点序号
3.岗点名称 3.品名单位 3.品名序号
4.总数
第一步:
select * from
车间表 c inner join 岗点表 g on c.车间序号= g.车间序号
inner join 详细信息表 x on g.岗点序号=x.岗点序号
inner join 品名表 p on p.品名序号=x.品名序号
group by c.车间序号
这样就可以列出这样的记录:
椅子 所属岗点 所属车间 椅子的一系列属性
桌子 所属岗点 所属车间 桌子的一系列属性
第二步:
像这样的最好用Table实现,DataList很难实现,而且它一般是实现有规律的,像这样分层的较难实现
具体方法将它们按车间分成好几组.
用Table动态生成.
一个Table的例子,仅供参考,其实Datalist和DataGrid也是最终转换为Table,再提供浏览器识别的:
//存放最终结果字符串
string strHtmlStr;
//存放表格头字符串
System.Text.StringBuilder stbHead = new System.Text.StringBuilder();
stbHead.Append("<table border=1 width=100% class=\"Table\">")
.Append(" <TR>")
.Append(" <TD align=\"center\" class=\"HeaderStyle\">姓名</TD>")
.Append(" <TD align=\"center\" class=\"HeaderStyle\">个人评论总量</TD>")
.Append(" <TD align=\"center\" class=\"HeaderStyle\">专案名称</TD> <TD align=\"center\" class=\"HeaderStyle\">个人评论数量</TD> ")
.Append(" <TD align=\"center\" class=\"HeaderStyle\">评论总量</TD> <TD align=\"center\" class=\"HeaderStyle\">角色</TD>")
.Append(" </TR>");
strHtmlStr = stbHead.ToString(); //将头追加
//存放表格中间n行数据字符串
System.Text.StringBuilder stbBody = new System.Text.StringBuilder();
for(int i = 0; i < ds.Tables.Count; i++)
{
string intDetailNum = (ds.Tables[i].Rows.Count).ToString(); //格式化表格用
stbBody.Append(" <TR>")
.Append(" <TD rowspan="+intDetailNum+" align=\"center\" class=\"TableTitle\">"
+ "<a onclick=window.open("+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&StaffNo="+ds.Tables[i].Rows[0]["StaffNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+",popuppage,width=800,height=600,top=60,left=100,scrollbars,resizable) style=CURSOR: hand>"+ds.Tables[i].Rows[0]["FullName"].ToString()+"</a>"+
"</TD> "); //姓名
stbBody.Append(" <TD align=\"center\" class=\"TableContent\">" +"<a href="+this.XframeSysInfo.SysRoot+ this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPreSell&Func=ReadProject&ProjNo="+ds.Tables[i].Rows[0]["ProjNo"].ToString()+" target=\"_blank\">"+ds.Tables[i].Rows[0]["ProjName"].ToString()+ "</TD>");
stbBody.Append(" <TD align=\"center\" class=\"TableContent\">" + (ds.Tables[i].Rows[0]["UserStyle"].ToString().Trim() == "1" ? "<font color=blue>11</font>" : "22") +"</TD>") //角色
.Append(" </TR>");
strHtmlStr += stbBody.ToString();
//存放表格尾字符串
System.Text.StringBuilder stbTail = new System.Text.StringBuilder();
stbTail.Append("</TABLE>");
strHtmlStr += stbTail;