Foxtable(狐表)用户栏目专家坐堂 → 一个按钮,同时修改:2万行的数据 ,可以吗


  共有2669人关注过本帖树形打印复制链接

主题:一个按钮,同时修改:2万行的数据 ,可以吗

帅哥哟,离线,有人找我吗?
yancheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
一个按钮,同时修改:2万行的数据 ,可以吗  发帖心情 Post By:2016/7/28 22:13:00 [只看该作者]

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1128 积分:11035 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/7/29 8:56:00 [只看该作者]

u pdate A set 增值税率 = xx,挂靠管理费率 = xx where 成本价 is null or 成本价 > 0 
秒更新

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/7/29 9:59:00 [只看该作者]

这种简单更新的建议使用3楼的用法


 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/7/29 12:46:00 [只看该作者]

.N ET Fra mework 版本:2.0.50727.5485
Foxtable 版本:2016.7.8.1
错误所在事件:窗口,材料维护,含税竞争费率,Click
详细错误信息:
从字符串“主材损耗率”到类型“D ouble”的转换无效。
输入字符串的格式不正确。




 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40608 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2016/7/29 13:37:00 [只看该作者]

s et第二个字符空格有影响吗?我没测试!

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40608 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2016/7/29 13:39:00 [只看该作者]

W here也多一空格!

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/7/29 14:35:00 [只看该作者]

DataTables("材料").Datacols("主材损耗率").RaiseDataColChanged( "主材损耗率 > 0")

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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")  执行,就未响应了。

 回到顶部
总数 15 1 2 下一页