【发布时间】:2014-03-29 17:58:36
【问题描述】:
这是我第一次使用 c# 和 sql server 编写一个简单的月度报告应用程序,它将报告打印到纸上。 一切都很好,但是在比较两个值时对我来说有一个复杂的问题。
假设每个月有 14 列(原来是 37 列)和 12 行。我用于月份名称的最后一列。
列是:Name, col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,monthName.
从逻辑上讲,一年会有 12 份报告。
col2+col5+col6
和
col7+col10+col11 当前月份的总和
必须与上个月 col4 和 col9-12 行相同
这是我的主要问题!
例如,如果 monthName 有 January(作为过去的月份)并且我正在填写当前月份 February 。有一个名为“验证”的按钮。
如果我点击验证,那么 2 月份的 3 列总和将与 1 月份的 1 列总和进行比较,如上所述。
我尝试了一些 sql 查询,例如 select * from table1 where sum(col4)=sum(col2+col5+col6) and sum(col9)=sum(col7+col10+col11)
但是我的逻辑和知识完全有缺陷,因为它没有按预期工作。
其次,我认为将 sql 查询结果中的数据附加到 List<> 并比较 col4/col9 是一个想法,但又存在缺陷,因为无法保证 Name 列的值不会被打乱,这将导致比较错误数据,我也没有信心。
我需要 c# 和 sql 数据库专家的帮助来获得这样做的想法,因为我不确定我的选择是什么!
更新:我正在 Visual Studio 中做一些实验。所有代码都很难看,但如果有人愿意尝试,我会将其上传到 Dropbox。
【问题讨论】:
-
您是否考虑过设置单元格的样式,例如使用红色有条件地设置验证按钮?
-
我试图编辑你的问题。您能否从您描述的表格中添加示例数据以及您期望的输出?
-
您需要阅读表格设计,特别强调第一、第二和第三范式。关系表规范化。它比名称所暗示的要简单得多。你描述的桌子设计很疯狂。
-
@AndreiD,是的,突出显示不匹配的值或只是消息框。
-
@rene,我还没有开始的例子,因为我才刚刚开始!
标签: c# sql sql-server sql-server-2008