以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于减库存问题!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=33617)

--  作者:xietan417
--  发布时间:2013/5/21 17:26:00
--  关于减库存问题!

Dim dr As DataRow
Dim cr As Row = Tables("领料单_主表.领料单_明细").Current
dr = DataTables("仓库物料表_主表").Find("料号 = \'" & cr("料号") &  "\'")
If dr IsNot Nothing Then
    dr("实时库存") = dr("实时库存") - cr("领用数量")
End If

 

 

做了一个确定键,但是只能保存一行的数据,哪位高手指点一下如何更上面的代码!


--  作者:ericsky
--  发布时间:2013/5/21 17:31:00
--  
有关联吗?
有的话用datarow的GetChildRows
没有的话,用datatable的select的方法找出主表的料号集合,然后遍历并赋值。

--  作者:xietan417
--  发布时间:2013/5/21 19:27:00
--  
select case?
--  作者:y2287958
--  发布时间:2013/5/21 19:42:00
--  
你声明的dr就是一行
结果也自然就是一行了

--  作者:xietan417
--  发布时间:2013/5/21 19:59:00
--  

这个我也知道!历遍所有的行的话!那就用FOR EACH啦!

 

Dim dr As DataRow
For Each cr As Row In Tables("领料单_主表.领料单_明细").Rows
dr = DataTables("仓库物料表_主表").Find("料号 = \'" & cr("料号") &  "\'")
If dr IsNot Nothing Then
    dr("实时库存") = dr("实时库存") - cr("领用数量")
End If
Next

 

这样应该没有问题了吧?

[此贴子已经被作者于2013-5-21 20:01:03编辑过]

--  作者:gsnake
--  发布时间:2013/5/21 21:25:00
--  
以下是引用ericsky在2013-5-21 17:31:00的发言:
有关联吗?
有的话用datarow的GetChildRows
没有的话,用datatable的select的方法找出主表的料号集合,然后遍历并赋值。

 你查一下GetChildRows

 

Select(Filter)
Select(Filter,Sort) 是select 方法啊!

 

你的遍历效率太低了!

 


--  作者:xietan417
--  发布时间:2013/5/21 22:04:00
--  
哦?我运行起来了也不觉得有多慢啊!