以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 一个关于行定位的奇怪问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61055) |
-- 作者:huangczm -- 发布时间:2014/12/6 9:45:00 -- 一个关于行定位的奇怪问题 Dim cb As String = e.Form.Controls("ComboBox1").Value Dim tb As String = e.Form.Controls("ComboBox2").Value If cb = "生产号码" Dim ii As Integer Dim sz1 As String Dim zf1 As String For ii = 0 To tb.Length - 1 If Char.IsDigit(tb.Chars(ii)) Then sz1 = sz1 + tb.Chars(ii) Else zf1 = zf1 + tb.Chars(ii) End If Next Dim cmd As new SQLCommand cmd.C Dim dr As DataTable cmd.CommandText = "Select 生产单号,条码起始号,订单总数量 from {新建订单} where 条码起始号 is not null order by [条码起始号]" dr = cmd.ExecuteReader() Dim hh As Integer = dr.DataRows.Count For i As Integer = 0 To hh - 1 Dim qsh1 As String = dr.datarows(i)("条码起始号") Dim zsl As Long = dr.datarows(i)("订单总数量") Dim sz2 As String = "" Dim zf3 As String = "" For ii = 0 To qsh1.Length - 1 If Char.IsDigit(qsh1.Chars(ii)) Then sz2 = sz2 + qsh1.Chars(ii) Else zf3 = zf3 + qsh1.Chars(ii) End If Next If Clng(sz1) >= Clng(sz2) And Clng(sz1) <= (Clng(sz2) + zsl) Dim scd As Long = dr.datarows(i)("生产单号") DataTables("新建订单").LoadFilter = " 生产单号 = " & scd & " " DataTables("新建订单").Load Dim sch As Integer = Tables("新建订单.生产号码表").rows.Count For iii As Integer = 0 To sch - 1 Dim jsh1 As String = Tables("新建订单.生产号码表").rows(iii)("生产号码_结束") Dim sz3 As String = "" For ii = 0 To jsh1.Length - 1 If Char.IsDigit(jsh1.Chars(ii)) Then Sz3 = sz3 + jsh1.Chars(ii) End If Next If Clng(sz1) <= Clng(sz3) Tables("新建订单.生产号码表").Position = iii \'定位到找到的行 (这里定位是对的,运行时可以看到已经标识到当前行,但下一刻又自动回到第一行,不知道为什么?即使把这段定位代码放到程序最后一行也是一样!) Exit For End If Next Exit For End If Next End If |
-- 作者:程兴刚 -- 发布时间:2014/12/6 9:50:00 -- 代码逻辑问题,重新加载造成的,您这样循环加载表多少次? |
-- 作者:huangczm -- 发布时间:2014/12/6 9:59:00 -- 判断符合条件才加载的,应该只是加载一次才对 |
-- 作者:huangczm -- 发布时间:2014/12/6 10:52:00 -- 追踪过了,表只加载了一次,而且 Tables("新建订单.生产号码表").Position = 变量 放在循环外,代码最后一行也是同样的结果。这样不论表加载多少次也应该没有影响吧?变量的值也是对的,在代码结束前并不是等于0。 |