表的列是动态的,ASP.NET前台程序查询问题

zhongxingqiche 2009-04-02 09:28:23
具体的说明如下:
我有一帐套项目的明细表:

ztid xmid xmmc
1 1 岗位工资
1 2 住房补贴
1 3 应发工资
其中ztid 是帐套的编号,xmid是项目的编号,xmmc是项目的名称

解释:ztid为1,代表科室员工的帐套,这个帐套包含:岗位工资,住房补贴,应发工资三个项目,那么科室员工对应的工资表就会有相应的列:如下:

ygbh ygxm bmbh 岗位工资 住房补贴 应发工资(都是表的字段名)
1 张三 2 1000 500 1500
2 李四 3 1200 400 1600
解释:ygbh:员工编号,ygxm:员工姓名,bmbh:部门编号。

也就是说帐套明细表的添加一条记录时候,工资表就自动的增加了一列,当明细表删除一条记录时候,工资表就自动的减少相应的列(这个已经实现了)。

我的问题是:由于工资的表的字段是可以增加,可以删除的。当我用ASP.NET程序对工资表进行查询时候怎样写一个动态的SQL语句呢。使得工资表的字段增加和减少对这个SQL语句都不受影响,不用做相应的修改。请达人指导。

...全文
221 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
感谢各位高手的指导啊
hj5632 2009-04-02
  • 打赏
  • 举报
回复

<table>
<tr>
<th>ygbh</th>
<th>ygxm</th>
<th>bmbh</th>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<th><%#Eval("xmmc") %></th>
</ItemTemplate>
</asp:Repeater>
</tr>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<tr>
<td><%#Eval("xxxx") %></td>
<td><%#Eval("xxxx") %></td>
<td><%#Eval("xxxx") %></td>
<asp:Repeater ID="Repeater3" runat="server">
<ItemTemplate>
<td><%#Eval("xxxxxx") %></td>
</ItemTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>


java_renyusheng 2009-04-02
  • 打赏
  • 举报
回复
项目表

ztid xmid xmmc
1 1 岗位工资
1 2 住房补贴
1 3 应发工资

员工表

ygbh ygxm bmbh
1 张三 2
2 李四 3
解释:ygbh:员工编号,ygxm:员工姓名,bmbh:部门编号。

工资表

员工编号 项目编号 项目工资


这样设计如何??
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
感谢25楼的回答.谢谢!!!
暴龙神 2009-04-02
  • 打赏
  • 举报
回复
最简单的答案:行转列
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
小弟第一次做工资系统,经验严重不足啊。谢谢!!!
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
我觉得我的设计方法也有问题。可是不知道如何设计才好。那位大哥有好的设计方法,给小弟分享一下,小第感激不尽!!!愁!!
maggie3256 2009-04-02
  • 打赏
  • 举报
回复
控件(比如,gridview)绑定的时候,将AutoGenerateColumns设定成true,自动生成列,这样你数据库的列增加或减少就不会有影响了
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
回答:如果项目的名称 增加或删除了,你怎样在工资表增加或删除一列呢?

我用的触发器。


工资表怎么设计才好呢?比如住房补助这个项目,有的人有,有的人没有,如何解决这个问题呢?

设计一张大表,没有就显示为0.
mjjzg 2009-04-02
  • 打赏
  • 举报
回复
给两个表建立级连更新和级连删除的关系
Roc_Lee 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zzxap 的回复:]
如果项目的名称 增加或删除了,你怎样在工资表增加或删除一列呢?

增加一个工资名称后,这些工资类别是有数据的,如果你把它删除了,那么总工资怎样计算?

你在新增界面怎样动态调整输入的列数?怎样动态调整查询 新增 修改 的SQL语句?


感觉这样的表设计有问题
[/Quote]
同样的感觉。
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
回复风语者大哥的:


风语者大哥说得对啊。这是困惑小弟的问题。风语者大哥你有好的设计方法吗?给小弟点意见,小弟感激不尽。
zangshulai 2009-04-02
  • 打赏
  • 举报
回复
9 楼的朋友 你的方法我测试怎么不行呢?
zzxap 2009-04-02
  • 打赏
  • 举报
回复
如果项目的名称 增加或删除了,你怎样在工资表增加或删除一列呢?

增加一个工资名称后,这些工资类别是有数据的,如果你把它删除了,那么总工资怎样计算?

你在新增界面怎样动态调整输入的列数?怎样动态调整查询 新增 修改 的SQL语句?


感觉这样的表设计有问题

zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
感谢各位高手大哥的指导,小弟回去试试啊。成功后和大家分享并且给分。
zhongxingqiche 2009-04-02
  • 打赏
  • 举报
回复
回复5楼的大哥:

我的意思是ASP.NET的页面中要绑定工资表的字段,比如岗位工资显示在页面的某部分了,当这个字段被删了后,数据库没有了但是前台页面还在绑定着,就会报错的,如何改变这个境况呢?谢谢!!!!
zzxap 2009-04-02
  • 打赏
  • 举报
回复
[code=SQL]

declare @sql varchar(8000)
set @sql = ' select ztid '
select @sql = @sql + ' , max(case xmmc when ''' + xmmc + ''' then 1 else 0 end) [' + xmmc + ']'
from (select distinct xmmc from tb) as a
set @sql = @sql + ' from tb group by ztid '
exec(@sql)
--这样可以取得xmmc的所有字段名作为列名。
[/CODE]
zzxap 2009-04-02
  • 打赏
  • 举报
回复
[code=SQL]

declare @sql varchar(8000)
set @sql = ' select ztid '
select @sql = @sql + ' , max(case xmmc when ''' + xmmc + ''' then 1 else 0 end) [' + xmmc + ']'
from (select distinct xmmc from tb) as a
set @sql = @sql + ' from tb group by ztid '
exec(@sql)
--这样可以取得xmmc的所有字段名。
[/CODE]
sujunjun 2009-04-02
  • 打赏
  • 举报
回复
看來樓上正解,明白了,接分
zzxap 2009-04-02
  • 打赏
  • 举报
回复
你是不是想这样 select 岗位工资 ,住房补贴, 应发工资 .. .from table where

其中岗位工资 ,住房补贴, 应发工资是动态的
加载更多回复(9)

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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