以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]多条记录复制问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=115681)

--  作者:lzzhx
--  发布时间:2018/3/12 14:53:00
--  [求助]多条记录复制问题
请教老师:
      如果表A有50个字段(其中一个字段是标记年代的,如值是2017),5000条记录,现在想把这5000条记录全部复制为新记录(总记录数就是10000条了),且将新记录的标记年代的字段值改为2018,如何才能实现?

--  作者:有点甜
--  发布时间:2018/3/12 15:12:00
--  

Dim dt As DataTable = DataTables("表A")
For Each dr As DataRow In dt.Select("标记年代 = \'2017\'")
    Dim ndr As DataRow = dt.AddNew
    For Each dc As DataCol In dt.DataCols
        ndr(dc.name) = dr(dc.name)
    Next
    ndr("标记年代") = 2018
Next


--  作者:lzzhx
--  发布时间:2018/3/12 15:18:00
--  
谢谢有点甜老师,这段代码执行下来是否时间很长?有没有在后台用SQL Server语句执行的代码?
--  作者:有点甜
--  发布时间:2018/3/12 15:34:00
--  
以下是引用lzzhx在2018/3/12 15:18:00的发言:
谢谢有点甜老师,这段代码执行下来是否时间很长?有没有在后台用SQL Server语句执行的代码?

 

代码你测试过才知道

 

systemready = false
Dim dt As DataTable = DataTables("表A")
dt.ResumeRedraw
dt.StopRedraw
For Each dr As DataRow In dt.Select("标记年代 = \'2017\'")
    Dim ndr As DataRow = dt.AddNew
    For Each dc As DataCol In dt.DataCols
        ndr(dc.name) = dr(dc.name)
    Next
    ndr("标记年代") = 2018
Next
dt.ResumeRedraw
systemready = True

 

如果要用sql语句处理,这样写,如

 

insert into {表A} (第一列, 第二列, 第三列) select 第一列, 第二列, \'2018\' from {表A} where 第三列 = \'2017\'