查询和统计每个月的工资,但每个月工资表的结构是不样的。意思也就是说第一月的工资中有的字段,比如假期工资,在第二个月中可能没有,那么统计的时候就没有办法统计这一项。分为:月工资表(GDYYYYMM)、月工资结构表(GSYYYYMM),例如200901,“GD200901”、“GS200901”。正如SSwp7所说(谢谢,哈哈),不过比它还要复杂,月工资表字段有:少数民族补贴(SSMZBT)、伤残补贴(SCBT)、技师津贴(JSJT)、厨师津贴(CSJT)、救护队员津贴(JHDYJT)、卫生防疫津贴(WSFYJT)、护龄津贴(HLJT)、教龄津贴(JLJT)、班主任津贴(BZRJT)、教培班主任津贴(JPBZRJT)、干警津贴(GJJT)、信访津贴(XFJT)等等等,还有几十个字段。之所以之前没有贴出来是怕大家烦,那么多的字段。不过,问题和SSwp7说的差不多只是字段不一样。
把月工资表和月工资结构表分开,确实是灵活,查询时不能很好的绑定,但是合计的时候可能不是很好合计。查询,问题一:查询时查询某个单位所有人的工资,可以用GridVIew,但是由于列的不确定性GirdVIew怎么绑定???查询,问题二:子夜(谢谢,你一直以来的帮助)说,根据工资结构表中的字段动态的构建SQL语句,这样可以啊,可是查询出来DataTable,绑定到DataTable,可是绑定时不是要是使用“<DataBingField>” 的吗???它怎么设定呢,列的个数和内容都不确定,使用GridVIew后台控制???查询,问题三:查询某个人的工资内容,如果以表格的形式出现,就要动态构建表格(Table)了吧,把表格放在网页中进行打印或是导出。统计,问题一:工资合计时需要选定几个月份,比如1、2、3、4、5这个五个月,而这五个月的工资表的结构是不一样的,而且这五个月是选定的,说不定还是10个月,甚至12个月,这样的功能怎样实现呢???什么样的处理过程,什么样的呈现方式???比如2011年3月,
月工资表为:基本工资(JBGZ)、假期工资(JQGZ)、福利工资(FLGZ)、少数民族补贴(SSMZBT)、伤残补贴(SCBT)、技师津贴(JSJT)、厨师津贴(CSJT)、救护队员津贴(JHDYJT)比如2011年4月,
月工资表为:基本工资(JBGZ)、假期工资(JQGZ)、福利工资(FLGZ)、少数民族补贴(SSMZBT)、伤残补贴(SCBT)、技师津贴(JSJT)、厨师津贴(CSJT)、救护队员津贴(JHDYJT)、干警津贴(GJJT)、信访津贴(XFJT)比如2011年5月,
月工资表为:基本工资(JBGZ)、假期工资(JQGZ)、福利工资(FLGZ)、厨师津贴(CSJT)、救护队员津贴(JHDYJT)、卫生防疫津贴(WSFYJT)、护龄津贴(HLJT)、教龄津贴(JLJT)月工资结构表:表头层次、工资表列名、项目名称
在这里列出来了对应月中工资的项目,比如:
 111、JBGZ、基本工资
 121、JQGZ、假期工资 
 141、FLGZ、 福利工资
 234、 FZGZ、辅助工资
........
......
.......(有劳各位大侠们了,估计还要贴新帖,请关注)

解决方案 »

  1.   

    不固定也不怕。第一种解决方案 动态输出HTML凑合第二种。。绑定的时候每一行模版列 内容用三元运算符  外嵌一层DIV 是否有这一列做个标识。if(1)

    DIV显示并绑定数据
    } 
    else
    {
    you know.
    }点击详细 传递ID 过去通过ID查找内容。然后把内容显示出来  导出的时候DataTable导出excel..带打印 DataTable Excel_UserInfo = new DataTable();
    string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                    string strExcel = "select * from [sheet1$]";                using (OleDbDataAdapter adaptor = new OleDbDataAdapter(strExcel, strConn))
                    {
                        DataSet ds = new DataSet();
                        adaptor.Fill(ds);
                        Excel_UserInfo = ds.Tables[0];
                    }
      

  2.   

    动态生成SQL语句,这是个好方法 啊
      

  3.   

    我正好做过这样的东西,我们的工资表是一个excel文件,每月上传一次,我不用数据库,直接连接excel,excel工资表第一行是列表,其中有个账号字段是必须的,也是查询工资用的主键字段,其它字段没有任何限制,可以随便删除也可以随便添加,我将其通过DataAdapter填充到DataTable中,查询后显示每个字段和对应的值即可,非常灵活,为了提高效率,DataTable被缓存起来,所以查询基本上只在内存中进行,速度很快。