以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]按条件批量更新列内容 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111518) |
-- 作者:czquickly -- 发布时间:2017/12/23 15:49:00 -- [求助]按条件批量更新列内容 在dataColChanged写如下代码If e.DataCol.Name = "料件品号" Then
Dim t As DataTable Dim s As String Dim t1 As String = E.NewValue Dim q As new QueryBuilder q.ConnectionName = "ERP" q.TableName = "临时" q.SelectString = " Select MV002 AS 采购员 Fro m {INVMB} LEFT JOIN {CMSMV} ON MB067=MV001 WHERE MB001 = \'" & t1 & "\'" t = q.Build For Each r As DataRow In t.DataRows s = s + r("采购员") Next e.DataRow("采购员") = s DataTables.Unload("临时") End If 实现料件品号变更后,采购员列自动取我们ERP数据库中对应的采购员信息。目前存在的问题就是运行速度太慢,复制几千个料件品号黏贴进狐表后,每秒处理十几行。有其他方法实现类似功能不?或者做个按钮,一下处理全部的行,要怎么实现?麻烦大家了 |
-- 作者:有点蓝 -- 发布时间:2017/12/23 15:59:00 -- 1、如果采购员的数据不多,可以作为查询表一次性加载进来,进行操作,每一行数据都到后台取值是很慢的 2、类似 Dim cmd As New SQLCommand Dim dt As DataTable cmd.ConnectionName = "ERP" cmd.CommandText = "Select MV002 AS 采购员 From {INVMB} LEFT JOIN {CMSMV} ON MB067=MV001" dt = cmd.ExecuteReader() For Each r As Row In Tables("xxx表").Rows r("采购员") = dt.GetComboListString("MB001 = \'" & r("料件品号") & "\'") Next [此贴子已经被作者于2017/12/23 16:00:15编辑过]
|
-- 作者:czquickly -- 发布时间:2017/12/23 16:33:00 -- 料件品号信息台多,10万+,所以全部导进的话,速度也慢。最好是只导进表里存在的料件品号对应采购 |
-- 作者:有点蓝 -- 发布时间:2017/12/23 16:59:00 -- 不是导入料件品号啊,是导入采购员信息啊,采购员大不了几十上百个? 如果采购员只能通过料件品号才能关联查询,那就没有办法了。不知道你业务逻辑是怎样的,只能从逻辑层面来优化了,不是代码能够解决的
|