以文本方式查看主题

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

--  作者:hongye
--  发布时间:2020/3/14 0:03:00
--  帮我看看哪里错了?
    Dim dt As DataTable =  DataTables(fr & gps(i) &"核价")   
    Dim drs = dt.Select("款号 = \'" & kss & "\'and 样衣号 like \'%" & yks & "%\'","_sortkey")     
    For Each dr As DataRow In drs
        Dim r As  DataRow = DataTables("临时核价表").AddNew()
        r("款号") = dr("款号")
        r("样衣款号") = dr("样衣号")
        r("项目名称") = dr(gps(i) & "名称")
        r("分类") = gps(i) &"核价"
        For Each dc As DataCol In dt.DataCols
            If dc.Name = "规格" Then
                r("规格") = dr("规格")
            Else
                r("规格") = Nothing
            End If
        Next   
    Next
为什么r("规格")里没有数据,DataTables(fr & gps(i) &"核价")   有dc.Name = "规格"的列,并且有数据
红色部分要求的意思是,如果有DataTables(fr & gps(i) &"核价") 表里"规格"的列,则r("规格") = dr("规格")否则r("规格") = Nothing

[此贴子已经被作者于2020/3/14 0:07:56编辑过]

--  作者:sloyy
--  发布时间:2020/3/14 0:10:00
--  
Dim drs =  datarow
--  作者:hongye
--  发布时间:2020/3/14 0:17:00
--  
应该是
        If dt.DataCols.Contains("规格") Then
            r("规格") = dr("规格")
        Else
            r("规格") = Nothing
        End If

--  作者:程兴刚
--  发布时间:2020/3/14 1:55:00
--  
  Dim drs = dt.Select("款号 = \'" & kss & "\'and 样衣号 like \'%" & yks & "%\'","_sortkey")     
这一句没有指明定义drs变量的类型!应为  Dim drs As Iist(Of datarow) = ……
[此贴子已经被作者于2020/3/14 1:55:45编辑过]

--  作者:程兴刚
--  发布时间:2020/3/14 2:04:00
--  
       For Each dc As DataCol In dt.DataCols
            If dc.Name = "规格" Then
                r("规格") = dr("规格")
            Else
                r("规格") = Nothing
            End If
        Next   
您这个循环不但脱了裤子放屁,还会导致系统逻辑错误,如果遍历的最后一列不是规格列,会导致规格列永远为空!只需这一句即可:
         r("规格") = dr("规格")

[此贴子已经被作者于2020/3/14 2:04:39编辑过]

--  作者:程兴刚
--  发布时间:2020/3/14 7:13:00
--  
按理,作为开发者,您在设计时应该很清楚地知道又没有“规格”这一列,您应该不会让用户手动删除吧?如果确实需要判断,这样即可:

if dt.dataCols.Contains("规格") = true
    r("规格") = dr("规格")
end if