以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  数据替换不成功  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=141891)

--  作者:gudao123456
--  发布时间:2019/10/13 18:15:00
--  数据替换不成功
以下代码:
Dim i As Integer=0
Dim dr As DataRow
For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
    dr=DataTables("xszxztb").SQLfind("sfzhm=" & dr1("身份证号码"))
    If dr IsNot Nothing Then
        dr("yhkh")=dr1("银 行卡号")
        dr.save()
        i=i+1
    End If
Next
MessageBox.show("共替换成功" & i & "条记录")

执行完毕,查看数据表,但数据替换不成功,重新打开项目后也没发现替换的数据。问题在那?

--  作者:程兴刚
--  发布时间:2019/10/13 19:34:00
--  
您的系统执行上面的代码会不会很慢?
--  作者:程兴刚
--  发布时间:2019/10/13 19:34:00
--  
发示例文件!
--  作者:有点蓝
--  发布时间:2019/10/13 20:00:00
--  
dr=DataTables("xszxztb").SQLfind("sfzhm=\'" & dr1("身份证号码") & "\'")
--  作者:有点蓝
--  发布时间:2019/10/13 20:02:00
--  
这样效率应该会高一点

Dim i As Integer=0
Dim dr As DataRow
For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
    DataTables("xszxztb").SQLReplaceFor("yhkh",dr1("银 行卡号"),"sfzhm=" & dr1("身份证号码"))
    i=i+1
Next
MessageBox.show("共替换成功" & i & "条记录")

--  作者:程兴刚
--  发布时间:2019/10/13 20:36:00
--  
DataTables("学生信息导入样表").StopRedraw
Dim i As Integer = 0
Dim dr As DataRow
For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
    DataTables("xszxztb").SQLReplaceFor("yhkh",dr1("银 行卡号"),"sfzhm= \'" & dr1("身份证号码") & "\'")
    i=i+1
Next
DataTables("学生信息导入样表").Save()
DataTables("学生信息导入样表").ResumeRedraw
MessageBox.show("共替换成功" & i & "条记录")

--  作者:程兴刚
--  发布时间:2019/10/13 20:38:00
--  
如果不是您的条件值表达式错误导致没有找到行,您的代码会耗时很长!
--  作者:gudao123456
--  发布时间:2019/10/14 10:58:00
--  
谢谢两位斑竹!
如果是要替换多列,列名称储存在集合lms中,如何才能知道替换了几条?替换过的在源表,即“学生信息导入样表” 的是否替换成功做记录呢。代码入下:
   DataTables("学生信息导入样表").StopRedraw
Dim i ,y As Integer = 0
        Dim dr As DataRow
        For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
            For y=0 To lms.count-1
                DataTables("xszxztb").SQLReplaceFor(lms(y),dr1(nms(y)),"sfzhm= \'" & dr1("身份证号码") & "\'")
            Next
            i=i+1
            
        Next
        DataTables("学生信息导入样表").Save()
        DataTables("学生信息导入样表").ResumeRedraw
        MessageBox.show("共替换成功" & i & "条记录")

这里的 i 显然不是替换了的行数,dr1("是否替换成功")=true 又插下那呢?
谢谢!

[此贴子已经被作者于2019/10/14 11:49:11编辑过]

--  作者:gudao123456
--  发布时间:2019/10/14 11:36:00
--  
谢谢两位斑竹!
如果是要替换多列,列名称储存在集合lms中,如何才能知道替换了几条?替换过的在源表,即“学生信息导入样表” 的是否替换成功做记录呢。代码入下:
   DataTables("学生信息导入样表").StopRedraw
Dim i ,y As Integer = 0
        Dim dr As DataRow
        For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
            For y=0 To lms.count-1
                DataTables("xszxztb").SQLReplaceFor(lms(y),dr1(nms(y)),"sfzhm= \'" & dr1("身份证号码") & "\'")
            Next
            i=i+1
            
        Next
        DataTables("学生信息导入样表").Save()
        DataTables("学生信息导入样表").ResumeRedraw
        MessageBox.show("共替换成功" & i & "条记录")

这里的 i 显然不是替换了的行数,dr1("是否替换成功")=true 又插下那呢?
谢谢!

[此贴子已经被作者于2019/10/14 11:46:47编辑过]