以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 求大神看看这段代码,问题在那里?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89138)

--  作者:18523982317
--  发布时间:2016/8/16 10:29:00
--  [求助] 求大神看看这段代码,问题在那里?
For Each  dr As Row In Tables("工资导入").Rows
    Dim gr As DataRow = DataTables("工资总表").SQLFind("年份 = " & dr("年份") & " And 月份 = " & dr("月份") & " And 姓名1 = \'" & dr("姓名1") & "\'")
    msgbox("年份 = " & dr("年份") & " And 月份 = " & dr("月份") & " And 姓名1 = \'" & dr("姓名1") & "\'")
    If gr IsNot Nothing  Then
        For Each dc As DataCol In DataTables("工资导入").DataCols
            If  dr.IsNull(dc.name) = False Then
                gr(dc.name) = dr(dc.name)
            End If
        Next
    Else
        Dim gr1 As Row = Tables("工资总表").AddNew
        For Each dc As DataCol In DataTables("工资导入").DataCols
            gr1(dc.name) = dr(dc.name)
        Next
    End If
Next


问题:当gr存在的时候,本来应该gr(dc.name) = dr(dc.name),但是运行后发现数据没变,但是当gr不存在的时候,运行结果正常!
        我用msgbox读取gr(dc.name)得到的结果又是正常的,但是代码运行完了,数据却没变,求解?

--  作者:Hyphen
--  发布时间:2016/8/16 11:31:00
--  
SQLFind查找的是后台数据,保存后重新加载才可以看到。如果数据已经加载用Find就可以
--  作者:18523982317
--  发布时间:2016/8/16 13:57:00
--  
以下是引用Hyphen在2016/8/16 11:31:00的发言:
SQLFind查找的是后台数据,保存后重新加载才可以看到。如果数据已经加载用Find就可以

用 find  果真可以解决了。。。我用的外部数据源accss,按道理用sqlfind可以啊。。。奇怪了


--  作者:大红袍
--  发布时间:2016/8/16 14:17:00
--  
For Each  dr As Row In Tables("工资导入").Rows
    Dim gr As DataRow = DataTables("工资总表").Find("年份 = " & dr("年份") & " And 月份 = " & dr("月份") & " And 姓名1 = \'" & dr("姓名1") & "\'")
    If gr Is Nothing Then
        gr = DataTables("工资总表").sqlFind("年份 = " & dr("年份") & " And 月份 = " & dr("月份") & " And 姓名1 = \'" & dr("姓名1") & "\'")
    End If
    If gr IsNot Nothing  Then
        For Each dc As DataCol In DataTables("工资导入").DataCols
            If  dr.IsNull(dc.name) = False Then
                gr(dc.name) = dr(dc.name)
            End If
        Next
        gr.Save
    Else
        Dim gr1 As Row = Tables("工资总表").AddNew
        For Each dc As DataCol In DataTables("工资导入").DataCols
            gr1(dc.name) = dr(dc.name)
        Next
    End If
Next