查询数据到dataGridView,再以dataGridView里的数据做条件,批量对比另一个表数据!

jackyqin1984 2012-06-04 02:18:51
大家好,
求助大家一个问题,
比如我查询A表,得出以下数据:

编码 单号 款号 需求数 状态
A1 B1 C1 1000
A2 B2 C2 1000
A3 B3 C3 1000
A4 B4 C4 1000

再以dataGridView表里的编码 单号 款号 做条件,对比B表的数据,把B表里的出库数SUM起来,大于需求数
就在A表的状态列标上YES,小于需求数就标上NO!

编码 单号 款号 出库数
A1 B1 C1 200
A1 B1 C1 500
A2 B2 C2 800
A2 B2 C2 200
A3 B3 C3 100
A3 B3 C3 200
希望能得到大家的帮助!

...全文
137 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
恭喜你学会一种方法,因为我没做计算的东西,所以,没例子马上给你,SQL又懒得去查了,呵呵。
jackyqin1984 2012-06-08
  • 打赏
  • 举报
回复
用循环我最终还是没有能力做出来,还是谢谢xianfajushi的帮助,谢谢
jackyqin1984 2012-06-08
  • 打赏
  • 举报
回复
经一高人指点,其实只要改下SQL语句就可以了,不用做循环那么麻烦,
直接查询出来就可以了,
我帖出来是想让日后刚好有急需要的兄弟看到,能让你参考一下,
大道理不多说,只希望能帮助有需要的人,我是个刚刚入门的新手,
也希望日后我有难题的时候也能看到的会是一些例子,谢谢大家的帮助!

select 编码,单号,款号,需求数,(case when 需求数 >=(select sum(出库数) from 表B where 编码=表A.编码 and 单号=表A.单号 and 款号=表A.款号) then 'yes' else 'no' end)'状态' from 表A
  • 打赏
  • 举报
回复
写程序无他,即是:解读、构思、调试,我们平常是如何解读的按步骤进行分析转换成代码,就这么简单。
写程序的魅力就在解读、构思过程,快乐在成功之后。
对于不懂的或尚未接触过的知识就查找资料看,动手是成功的捷径。
  • 打赏
  • 举报
回复
你是怎么构思来实现的?难道脑中没有执行步骤?
1、循环A表读第一行数据
2、嵌套循环B表全部数据行与A表的第一行数据进行比较,条件相等则取数据进行减法
3、检查减后剩余数值
4、判断剩余数值,大于需求数就在A表的状态列标上YES,小于需求数就标上NO!
直到A表循环完毕,按照这样的步骤去写代码,难道不是?
代码都是自己去写的,是不?
int 剩余值=0;
foreach (DataRow 数据1 in A.Rows)
{
foreach (DataRow 数据2 in B.Rows)
{
if(数据2[0]==数据1[0]&&数据2[1]==数据1[1]&&数据2[2]==数据1[2])
剩余值=数据1[3]-数据2[3]
}
if(剩余值>?)dataGridView.某列.状态=真;else....
}
http://blog.csdn.net/xianfajushi/article/details/7591330
http://blog.csdn.net/xianfajushi/article/details/7532771
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
只能自己再顶
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
自己顶
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

foreach (DataRow 加节点 in 数据)
{
for (int 续 = 0; 续 < 列集.Count; 续++)//无极树大功告成...
{ if (..) { ... }
...
}
[/Quote]
新手来的,正在学习,看了你的帖,不是很了解,只是这个很急,能否具体一点,万分感谢
  • 打赏
  • 举报
回复
foreach (DataRow 加节点 in 数据)
{
for (int 续 = 0; 续 < 列集.Count; 续++)//无极树大功告成...
{ if (..) { ... }
...
}
  • 打赏
  • 举报
回复
你要是连基础都不会那就去找资料学习哦
http://blog.csdn.net/xianfajushi/article/details/7550084
上面的也是我最近新学的,改成自己需要实现目的的,递归循环判断。
自己学去
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

DataTable 提示 = 数据源.提示;
//ArrayList 内容
foreach (DataRow 数据 in 提示.Rows)
{
for (int 列 = 0; 列 < 内容.Count; 列++)
{
------------
}//下面设计相隔天数

}
[/Quote]
这个是用在第二个循环吗?
  • 打赏
  • 举报
回复
DataTable 提示 = 数据源.提示;
//ArrayList 内容
foreach (DataRow 数据 in 提示.Rows)
{
for (int 列 = 0; 列 < 内容.Count; 列++)
{
------------
}//下面设计相隔天数

}
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

那就看你是要循环数据表,还是循环控件数据了
首先对B表进行合计生成临时新表
循环A表
嵌套循环新表进行对比
结果对A表状态设置
---------------
循环B表进行合计
合计后作为条件循环A表对比后设置A表

有多种方法,这个看个人风格不定
[/Quote]
我是新手,能不能给点代码啊
  • 打赏
  • 举报
回复
那就看你是要循环数据表,还是循环控件数据了
首先对B表进行合计生成临时新表
循环A表
嵌套循环新表进行对比
结果对A表状态设置
---------------
循环B表进行合计
合计后作为条件循环A表对比后设置A表

有多种方法,这个看个人风格不定
jackyqin1984 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

2个循环搞定
[/Quote]
大哥给多点提示,我只会做一个循环,不会两个
  • 打赏
  • 举报
回复
2个循环搞定

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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