以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]批量更新表中某一字段问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=101852)

--  作者:lzzhx
--  发布时间: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
--  发布时间:2017/6/8 13:48:00
--  
要达到的目的是:

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

--  作者:lzzhx
--  发布时间:2017/6/8 15:06:00
--  
请老师看看
--  作者:有点蓝
--  发布时间:2017/6/8 15:15:00
--  
直接在sql里面更新不就行了

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

--  作者:lzzhx
--  发布时间:2017/6/8 15:48:00
--  
提示错误:  from附近有语法错误
--  作者:lzzhx
--  发布时间:2017/6/8 15:52:00
--  
取掉 from就可以了,但e.OldValue 是空(即原来没有前缀现在要加前缀)的时候怎么办
--  作者:有点蓝
--  发布时间: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
--  发布时间:2017/6/8 17:11:00
--  
谢谢老师