首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

100 分敬上! 关于办公自动化中,发送短信部门父部门与子部门间的相关有关问题

2011-12-29 
100 分敬上! 关于办公自动化中,发送短信部门父部门与子部门间的相关问题!我有一个需求:总公司给下级单位发

100 分敬上! 关于办公自动化中,发送短信部门父部门与子部门间的相关问题!



我有一个需求:

总公司给下级单位发送站内短信,下级部门的   treeview   (带有   checkbox   )设置是这样的:


吉林热电厂(1001)

      总经部         (10015001)
      安全生产部(10015002)
      人力资源部(10015003)

辽宁热电厂(1002)

      总经部         (10025001)
      安全生产部(10025002)
      人力资源部(10025003)

大连热电厂(1003)

      总经部         (10035001)
      安全生产部(10035002)
      人力资源部(10035003)

沈阳热电厂(1004)

      总经部         (10045001)
      安全生产部(10045002)
      人力资源部(10045003)


说明:

      如果   此   treeview   选择了父节点   1001,则不能够点选其下的子节点   ,只有取消了父节点,才能点选择其下的子节点

      最终生成的发送部门的代码集合中,父节点1001与其下的子节点   10015001,10015005   不会同时出现

      以下是数据库表   Message   中的几条数据,其中字段   "SendTo "   中存储的就是由     treeview生成的接收单位的代码集合。

-------------------------------------

ID         MessageTitle                   SendTo                                                                            

1           发送2007年报表               1001,1003,10045002,10045003            
                     
2           请上报材料                       10015001,10015002,10035001,10035003                  

3           开会通知                           10015001,10015002,10035002,10035003    

-----------------------------------

假设我是大连热电厂的总经部,登录后,我的身份代码是:

string   myID   =     Session[ "usercode "]     //假设为       =   "10035001 "


1.比如第一条短信:
字段   SendTo   中有一个代码为   "1003 "   那就是发送给所有   “大连热电厂”   下的部门的短信,当然也是给   10035001   的短信

2.比如第二条短信:
字段   SendTo   中有一个代码为   "10035001 "   那就是单发送给     大连热电厂的总经部(10035001)的。

3.比如第三条短信:
字段   SendTo   中有代码为   "10035002,10035003 "   那是发送给     大连热电厂其它两个部门的,不是发给   总经部(10035001)的。


现在怎么才能拼一个   sql   语句,取出发给当前登录部门代码为   "10035001 "     的所有短信??

string   sql   =   "select   *   from   Message   where   条件要怎么写呢   "



[解决办法]
这么复杂? 看得小晕。。
[解决办法]
我比较痛恨这种将多个对象用字符串拼在一个字段里的设计方法。
------解决方案--------------------


假设你有的消息需要多人共享,可以这样设计:

消息(编号, 内容,特服号)
接收人(消息编号,接受人编号)


“取出发给当前登录部门代码为 "10035001 " 的所有短信”可以写:

string sql = "select m.* from [消息] as m inner join [接受人] as b "+
"on a.[编号]=b.[消息编号] where b.[接受人编号]= '10035001 ' ";
[解决办法]
或者:

string sql = "select m.* from [消息] as m inner join [接受人] as b "+
"on a.[编号]=b.[消息编号] where b.[接受人编号] like '10035001% ' ";


取出发给当前登录部门代码为 "10035001 " 或者下属部门的所有短信
[解决办法]
数据库字段本来就没有“集合”类型。生硬地造一个所谓的集合机制,是很不负责地(数据库设计会影响编程),惹事生非。

如果我随便参与这种基本原则都没有达到的设计,那么我就得回答“如何取消对某个部门发消息”之类的问题。本来一个最笨、最简单的删除就行了,现在成了什么浆糊问题了啊。这都是结构设计上的随便造成的。

热点排行