以文本方式查看主题

-  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=28252)

--  作者:yyzlxc
--  发布时间:2013/1/23 15:10:00
--  [求助]如何修改代码,使取值符合要求(已解决)

当表A年月为201201至201203时,单位取值为1;年月为201204至201207时,单位取值为4;年月为201208至201209时;单位取值为8,年月为201209至201210时,单位取值为10。要达到上述要求,以下代码应该如何修改,请各位老师指教。谢谢!

 

\'填充单位
Dim pr As DataRow
For Each dr1 As DataRow In DataTables("表A").DataRows
    If dr1.IsNull("编号")  Then
        dr1("单位") = Nothing
    Else
        pr = DataTables("表B").Find("编号 = \'" & dr1("编号") & "\' And 年月 >= \'" & dr1("年月") & "\'")
        If pr IsNot Nothing Then
            dr1("单位") = pr("单位")
        Else
            dr1("单位") = Nothing
        End If
    End If
Next

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2013-1-24 19:38:24编辑过]

--  作者:yyzlxc
--  发布时间:2013/1/23 15:38:00
--  
用>=肯定不对,但是用<=,只能取值1,不符要求。实际就是取小于dr1("年月")数集中的最大值,不知应该如何来实现,请各位老师指教,谢谢。
--  作者:lin_hailun
--  发布时间:2013/1/23 15:41:00
--  
 这样吧,简单处理一下。


Dim pr As DataRow
For Each dr1 As DataRow In DataTables("表A").DataRows
    If dr1.IsNull("编号")  Then
        dr1("单位") = Nothing
    Else
        Dim drs As List(Of datarow) = DataTables("表B").Select("编号 = \'" & dr1("编号") & "\' And 年月 <= \'" & dr1("年月") & "\'", "年月 desc")
        if drs.Count > 0 Then
            pr = drs(0)
            dr1("单位") = pr("单位")
        Else
            dr1("单位") = Nothing
        End If
    End If
Next

--  作者:yyzlxc
--  发布时间:2013/1/23 15:56:00
--  
谢谢林老师,问题解决了,再次衷心感谢!!