以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 一个按钮,同时修改:2万行的数据 ,可以吗 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=88210) |
-- 作者:yancheng -- 发布时间:2016/7/28 22:13:00 -- 一个按钮,同时修改:2万行的数据 ,可以吗 Dim r As Row = Tables("材料").Current If r Is Nothing Then Return Else systemReady = False For Each dr As DataRow In DataTables("材料").DataRows If dr.IsNull("成本价")=False And dr("成本价") > 0 Then dr("增值税率") = r("增值税率") dr("挂靠管理费率")=r("挂靠管理费率") dr("利润率") = r("利润率") dr("主材损耗率") = r("主材损耗率") dr("运杂费") = r("运杂费") End If Next systemReady = True \'DataTables("材料").Save() End If e.Form.Close 马上:FT 未响应了。有没有什么好办法解决?
[此贴子已经被作者于2016/7/28 22:13:27编辑过]
|
-- 作者:pyh6918 -- 发布时间:2016/7/28 22:39:00 -- 我是这样做的:第一不死机,第二可了解进度。 还发现个问题:当前表焦点离开要遍历的表,速度要快很多。 Dim ggg As WinForm.Label = e.Form.Controls("Label1") Dim sss As Double = 0 Dim hh As Double Dim rs As Double For Each dr As DataRow In DataTables("表A").DataRows .................................................................... sss = sss + 1 If sss Mod 100 =0 Then ggg.Text = sss End If Application.DoEvents Next ggg.Text = "OK"
|
-- 作者:jspta -- 发布时间:2016/7/29 8:56:00 -- u pdate A set 增值税率 = xx,挂靠管理费率 = xx where 成本价 is null or 成本价 > 0 秒更新
|
-- 作者:Hyphen -- 发布时间:2016/7/29 9:59:00 -- 这种简单更新的建议使用3楼的用法 |
-- 作者:yancheng -- 发布时间:2016/7/29 12:46:00 -- .N ET Fra mework 版本:2.0.50727.5485 Foxtable 版本:2016.7.8.1 错误所在事件:窗口,材料维护,含税竞争费率,Click 详细错误信息: 从字符串“主材损耗率”到类型“D ouble”的转换无效。 输入字符串的格式不正确。 |
-- 作者:yancheng -- 发布时间:2016/7/29 12:46:00 -- Dim qb As Win Form.CheckBox = e.Fo rm.Controls("全表") If qb.Checked = False Then Dim r As Row = Tables("材料").Current If r Is Nothing Then Return Else r("增值税率")=0.05 r("挂靠管理费率")=0.25 r("利润率")=0.4 r("主材损耗率")=1 r("运杂费")=0.05 r.Save() End If Else Dim count As In teger Dim cmd As new S QL Command cm d.Con necti cmd.Comma dText= "U PDA TE {材料} S ET 增值税率 = 0.05,挂靠管理费率 = 0.25 ,利润率 = 0.4,主材损耗率 = 1 ,运杂费 = 0.05 w here 成本价 > 0" count = cmd.ExecuteNonQuery() DataTables("材料").load() Messag eBox.Sh ow("全表\'成本价>0\'的 & Count & 行,费率修改完成!") qb.Checked = False DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged( "主材损耗率" > 0) e.Fo rm.Close End If 麻烦大虾帮我看一下,上面这样定有哪些问题,谢谢 DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged( "主材损耗率" > 0) 是这一条没执行,执行错误。材损耗率 数据类型是:双精度 小数 LOAD 了,但是没有执行 DataColChanged的代码。所以我想用RaiseDataColChanged来更新一下。
[此贴子已经被作者于2016/7/29 13:27:22编辑过]
|
-- 作者:程兴刚 -- 发布时间:2016/7/29 13:37:00 -- s et第二个字符空格有影响吗?我没测试! |
-- 作者:程兴刚 -- 发布时间:2016/7/29 13:39:00 -- W here也多一空格! |
-- 作者:Hyphen -- 发布时间:2016/7/29 14:35:00 -- DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged( "主材损耗率 > 0") |
-- 作者:yancheng -- 发布时间:2016/8/2 21:46:00 -- Dim qb As WinForm.CheckBox = e.F orm.Controls("全表") If qb.Checked = False Then Dim r As Row = Tables("材料").Current If r Is Nothing Then Return Else r("增值税率")=0.05 r("挂靠管理费率")=0.25 r("利润率")=0.4 r("主材损耗率")=1 r("运杂费")=0.05 r.Save() End If Else Dim count As Integer Dim cmd As new SQLCommand cmd.C cmd.CommandText= "U PDATE {材料} SET 增值税率 = 0.05,挂靠管理费率 = 0.25 ,利润率 = 0.4,主材损耗率 = 1 ,运杂费 = 0.05 where 成本价 > 0" count = cmd.ExecuteNonQuery() DataTables("材料").load() MessageBox.Show("全表\'成本价>0\'的 "& Count &" 行,费率修改完成!") qb.Checked = False SystemReady = False DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged("主材损耗率>0") SystemReady = True e.Form.Close End If 这个代码:DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged("主材损耗率>0") 执行,就未响应了。
|