以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  高效给临时列赋值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161835)

--  作者:tld
--  发布时间:2021/3/31 11:02:00
--  高效给临时列赋值
老师好。窗体中的一个表tb1,有临时列【委托单位】。目前我有两种方法给委托单位列赋值:第一,通过委托编号与tables(“流水”)建立关联;第二,遍历tb1中所有行,通过委托编号, SQLfind在流水表中查找对应的行,取出委托单位后赋值。
第一种方法,流水表必须加载相应的行,关联才有效;第二种方法效率太低,需要等待的时间达十多秒,太慢。请教老师,有没有更好的方法给tb1中的 委托单位 列赋值?
   
    谢谢!!!

--  作者:有点蓝
--  发布时间:2021/3/31 11:10:00
--  
通过表tb1对应的委托编号,一次性把所有【委托单位】查询出来,然后赋值
--  作者:tld
--  发布时间:2021/3/31 15:03:00
--  
老师,我用的下面的代码实现   ,   还有更好的方法吗?  您说的一次性导入 , 我还是没有理解  谢谢!
Dim lis_wtbh As List(of String) = dtb1.GetValues("委托编号")
Dim drs As List(of DataRow) = DataTables("流水").SQLSelect("[委托编号] In (\'" & String.Join("\',\'",lis_wtbh) & "\')")

Dim lis_dw As new List(of String)
Dim lis_bfl As new List(of Single)
Dim lis_bh As new List(of String)
For Each d As DataRow In drs
    lis_bh.Add(d("委托编号"))
    lis_dw.add(d("委托单位"))
Next

For Each dr As DataRow In dtb1.DataRows
    Dim bh As String = dr("委托编号")
    For i As Integer = 0 To lis_bh.Count - 1
        If bh = lis_bh(i) Then
            dr("委托单位") = lis_dw(i)
            Exit For
        End If
    Next
Next

[此贴子已经被作者于2021/3/31 15:04:01编辑过]

--  作者:有点蓝
--  发布时间:2021/3/31 15:08:00
--  
就是上面的意思