Foxtable(狐表)用户栏目专家坐堂 → [求助]批量更新表中某一字段问题


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

主题:[求助]批量更新表中某一字段问题

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
[求助]批量更新表中某一字段问题  发帖心情 Post By:2017/6/8 13:32:00 [只看该作者]

请教老师,看看下面代码有什么问题

代码在DataColChanged事件中

            Dim biaoming As String = e.DataRow("表名称")
            Dim lieming As String = e.DataRow("字段名称") 
            Dim cmd As new SQLCommand
            cmd.ConnectionName = gs_strActiveConn
            cmd.CommandText="se lect _Identify," & lieming & " from " & biaoming
            Dim dt As DataTable = cmd.ExecuteReader(True)
            If dt.DataRows.Count > 0 Then
                Forms("提示窗口").Visible = True
                Dim p As WinForm.ProgressBar = Forms("提示窗口").Controls("Bar1")
                p.Visible = True
                p.Maximum =dt.DataRows.Count '设置最大值
                p.Minimum = 0 '设置最小值
                p.Value = 0 '设置当前值
                Dim j As Integer =0
                Dim str As String = ""
                _KQSJ = False
                For Each dr As DataRow In dt.DataRows
                    If e.OldValue = "" Then
                        str = e.NewValue & dr(lieming)
                    Else
                        str = dr(lieming).Replace(e.OldValue,e.NewValue)
                    End If
                    dr(lieming) = str
                    j=j+1
                    p.Value = j
                Next
                _KQSJ = True
                dt.Save()
                p.Visible = False
                Forms("提示窗口").Visible = False
            End If
            If DataTables.Contains(e.DataRow("表名称")) = True Then
                DataTables(e.DataRow("表名称")).Load
            End If

dt有5000条记录,不执行红色部分代码时,运行很快结束,包括红色部分代码时,进度条只显示一点就停了,整个运行过程要十多分钟才结束,请老师看看有什么问题?

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/6/8 13:48:00 [只看该作者]

要达到的目的是:

表A有5000条记录,其中字段【编号】的值为  前缀1+自动数字,现在要将 前缀1改为前缀2,如何写代码?

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/6/8 15:06:00 [只看该作者]

请老师看看

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/8 15:15:00 [只看该作者]

直接在sql里面更新不就行了

cmd.CommandText="update  from " & biaoming & "set " & lieming & " = Replace(" & lieming & ",'" & e.OldValue & "','" & e.NewValue & "') "

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/6/8 15:48:00 [只看该作者]

提示错误:  from附近有语法错误

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/6/8 15:52:00 [只看该作者]

取掉 from就可以了,但e.OldValue 是空(即原来没有前缀现在要加前缀)的时候怎么办

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/8 16:22:00 [只看该作者]

if e.OldValue > "" then
cmd.CommandText="update  " & biaoming & "set " & lieming & " = Replace(" & lieming & ",'" & e.OldValue & "','" & e.NewValue & "') "
else
cmd.CommandText="update  " & biaoming & "set " & lieming & " = '" & e.NewValue & "' + " & lieming
endif

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


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/6/8 17:11:00 [只看该作者]

谢谢老师

 回到顶部