以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教循环遍历结构问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14721) |
-- 作者:RandyBoy -- 发布时间:2011/11/29 21:50:00 -- 请教循环遍历结构问题 由于temptable表是在递归函数中动态增加记录的,所以不能用FOR each 遍历,会出现异常。
循环遍历temptable临时表,读取行记录后删除行,直到该表记录行为空,用以下格式遍历,应该怎么样写如下两个语句: 1.终止条件 2.下一条记录指令
do while (终止条件【表中无记录时】) ’读取当前记录 ’删除当前记录 ’下一条记录指令 loop |
-- 作者:狐狸爸爸 -- 发布时间:2011/11/29 22:16:00 -- For each dr dataRow in DataTables("xxx") \'循环读取 next DataTables("xxx").DataRows.Clear \'全部删除 |
-- 作者:mr725 -- 发布时间:2011/11/29 22:17:00 -- 这样可以吗: for i as integer = tables("临时表").count-1 to 0 step -1 .......... next |
-- 作者:RandyBoy -- 发布时间:2011/11/29 22:22:00 -- 呵呵,如果可以这样的话,就不必劳烦大家了 |
-- 作者:mr725 -- 发布时间:2011/11/29 22:38:00 -- 不懂你的问题了,帮您顶···· |
-- 作者:RandyBoy -- 发布时间:2011/11/29 22:42:00 -- For Each r As DataRow In DataTables("tempbom").DataRows
很奇怪,一样的代码,刚刚试是正确的,在之前就是在TEMPBOM中有一条记录无法删除。 |
-- 作者:狐狸爸爸 -- 发布时间:2011/11/29 23:33:00 -- For i As Integer = DataTables("tempbom").DataRows.Count -1 To 0 Step -1 Dim r As DataRow = DataTables("tempbom").DataRow(i) Dim dt1 As DataTable Dim cmd1 As New SQLCommand Dim curgoid As Integer curgoid = r("goid") r.Delete cmd1.CommandText = "Select goid,singletotal,comgoid,sf_nonstock From {cp_singlebom} Inner JOIN {product} ON {product}.[_Identify] = {cp_singlebom}.[goid] where {cp_singlebom}.[goid]=" & CSTR(curgoid) dt1 = cmd1.ExecuteReader() If dt1.DataRows.Count > 0 Then \'循环调用自身函数 Else \'追加到数据表中 Dim r1 As Row = Tables("bomdata").AddNew() r1("goid") = curgoid \' r("singletotal")=dr("singletotal") \' r("sf_summy")= dr("sf_nonstock") \' r("sortkey")= Initcnt End If Next [此贴子已经被作者于2011-11-29 23:32:49编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2011/11/30 11:55:00 -- 没有看懂,避免出错的方法:
Public Function GenProductBom(ByVal rootid As Integer,ByVal goid As Integer,ByVal formatstr As String,ByVal NeedTotal As Double,ByVal onetotal As Double) As Boolean If dt.DataRows.Count > 0 Then Dim cnt As Integer = DataTables("tempbom").DataRows.Count -1 Do While DataTables("tempbom").DataRows.Count > 0 [此贴子已经被作者于2011-11-30 11:55:28编辑过]
|
-- 作者:RandyBoy -- 发布时间:2011/11/30 12:05:00 -- Dim cnt As Integer = DataTables("tempbom").DataRows.Count -1 这句代码是用来做诱的吧。。
哈哈。。还是要感谢你的支持和帮助,只要不出错就OK~
|
-- 作者:狐狸爸爸 -- 发布时间:2011/11/30 12:15:00 -- 这是多余的一行代码,删除即可。 |