以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]加载行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95285) |
-- 作者:zcgmxf -- 发布时间:2017/1/15 19:31:00 -- [求助]加载行 老师,很忏愧,后面的加载 dr 代码竟然不会写了 Dim drs As List(of DataRow) = DataTables("一类疫苗出库单").SQLSelect("出入库类型 = \'3\'") For Each dr As DataRow In drs If dr IsNot Nothing Then Dim zs As List(of DataRow) = dr.GetChildRows("一类疫苗出库表") If zs.Count <= 0 Then MessageBox.Show("有出库单没有出库明细,请及时删除!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If 要加载 dr 代码
[此贴子已经被作者于2017/1/15 20:43:34编辑过]
|
-- 作者:有点色 -- 发布时间:2017/1/16 3:42:00 --
DataTables("一类疫苗出库表").RemoveFor("_Identify = \'" & dr("_Identify") & "\'") |
-- 作者:zcgmxf -- 发布时间:2017/1/19 17:40:00 -- 老师,怎么这两段代码都只加载第一行而不是找到的符合条件的行?MessageBox.Show 还是执行了,就是后面的加载行没执行,用 loadfilter 也一样。 Dim drs As List(of DataRow) = DataTables("一类疫苗出库单").SQLSelect("出入库类型 = \'3\'")
For Each dr As DataRow In drs
If dr IsNot Nothing Then
Dim zs As List(of DataRow) = dr.GetChildRows("一类疫苗出库表")
If zs.Count <= 0 Then
MessageBox.Show("有出库单没有出库明细,请及时删除!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
DataTables("一类疫苗出库单").RemoveFor("_Identify = \'" & dr("_Identify") & "\'") return End If
end if
next
Dim drs As List(of DataRow) = DataTables("一类疫苗出库单").SQLSelect("出入库类型 = \'3\' and 确认开单 = \'" & True & "\'")
For Each dr As DataRow In drs If dr IsNot Nothing Then For i As Integer = 0 To drs.Count - 1 Dim crs As List(of DataRow) = drs(i).GetChildRows("一类疫苗出库表") If crs.Count <=0 Then MessageBox.Show("有出库单没有明细,请删除或添加明细后新增!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) DataTables("一类疫苗出库单").RemoveFor("出库单编号 = \'" & drs(i)("出库单编号") & "\'") DataTables("一类疫苗出库单").AppendLoad("出库单编号 = \'" & drs(i)("出库单编号") & "\'") Return End If Next End If Next |
-- 作者:有点色 -- 发布时间:2017/1/19 17:58:00 --
把 return去掉
|
-- 作者:zcgmxf -- 发布时间:2017/1/19 21:34:00 -- 老师,去掉return 就进入死循环了。
算了,我自己再花点时间研究研究。谢谢你! [此贴子已经被作者于2017/1/19 21:34:54编辑过]
|
-- 作者:有点色 -- 发布时间:2017/1/20 0:37:00 -- 你代码写在哪里?怎么会死循环?
最好做个例子上来测试吧。 |
-- 作者:zcgmxf -- 发布时间:2017/1/20 8:30:00 -- 老师,代码放在按钮里面。目的就是增加行之前判断数据库中是否存没有明细的出库单,如果存在就提示并且加载该行。避免出现空单。 |
-- 作者:有点蓝 -- 发布时间:2017/1/20 9:01:00 -- 1、如果drs没有东西,for each里面的代码是不会执行的,如果有,里面的所有DataRow都不会是空的,所以下面判断代码是多余的 If dr IsNot Nothing Then 2、第二个SQLSelect后面的代码用了二个for循环,不明白有什么作用,第二个 For i As Integer = 0 To drs.Count - 1有什么意义? For Each dr As DataRow In drs If dr IsNot Nothing Then For i As Integer = 0 To drs.Count - 1 3、drs(i).GetChildRows("一类疫苗出库表")------自己和自己关联?不建议这样用,尽量分成父子表的模式 4、不知道你表结构怎么样,我觉得二个SQLSelect可以拼成一个用的
|