Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
当把第一个表的内容引用到第二个表的时候,但是在引用的时候会出现第二表比第一个表多内容这时候就会出现引用出错查找不出,会弹出如图,请狐狸爸爸帮助我一下如何进行写判断才能解决这个问题
Select Case e.DataCol.name
Case "牌号"
Dim dr As DataRow = DataTables("理化厂标").Find("牌号 = '" & e.NewVAlue & "'")
If dr IsNot Nothing Then
e.DataRow("原料指标_MgO镁_厂标") = dr("原料指标_MgO镁")
e.DataRow("原料指标_SiO2硅_厂标") = dr("原料指标_SiO2硅")
e.DataRow("原料指标_CaO钙_厂标") = dr("原料指标_CaO钙")
e.DataRow("原料指标_Fe2O3铁_厂标") = dr("原料指标_Fe2O3铁")
e.DataRow("原料指标_Al2O3铝_厂标") = dr("原料指标_Al2O3铝")
e.DataRow("原料指标_CaO比SiO2_厂标") = dr("原料指标_CaO比SiO2")
e.DataRow("原料指标_Cr2O3铬_厂标") = dr("原料指标_Cr2O3铬")
e.DataRow("原料指标_FeO加Fe2O3_厂标") = dr("原料指标_FeO加Fe2O3")
e.DataRow("原料指标_Na2O氧化钠_厂标") = dr("原料指标_Na2O氧化钠")
e.DataRow("原料指标_BD体密_厂标") = dr("原料指标_BD体密")
e.DataRow("原料指标_AP气孔_厂标") = dr("原料指标_AP气孔")
e.DataRow("原料指标_CR比FE_厂标") = dr("原料指标_CR比FE")
e.DataRow("成品指标_MgO镁_厂标") = dr("成品指标_MgO镁")
e.DataRow("成品指标_Cr2O3铬_厂标") = dr("成品指标_Cr2O3铬")
e.DataRow("成品指标_Fe2O3铁_厂标") = dr("成品指标_Fe2O3铁")
e.DataRow("成品指标_Al2O3铝_厂标") = dr("成品指标_Al2O3铝")
e.DataRow("成品指标_CaO钙_厂标") = dr("成品指标_CaO钙")
e.DataRow("成品指标_SiO2硅_厂标") = dr("成品指标_SiO2硅")
e.DataRow("成品指标_BD体密_厂标") = dr("成品指标_BD体密")
e.DataRow("成品指标_AP气孔_厂标") = dr("成品指标_AP气孔")
e.DataRow("成品指标_LOI烧碱_厂标") = dr("成品指标_LOI烧碱")
e.DataRow("成品指标_CCS耐压_厂标") = dr("成品指标_CCS耐压")
e.DataRow("成品指标_抗折_常温_厂标") = dr("成品指标_抗折_常温")
e.DataRow("成品指标_抗折_高温_厂标") = dr("成品指标_抗折_高温")
e.DataRow("成品指标_热震_水泠_厂标") = dr("成品指标_热震_水泠")
e.DataRow("成品指标_热震_风泠_厂标") = dr("成品指标_热震_风泠")
e.DataRow("成品指标_RUL菏软_厂标") = dr("成品指标_RUL菏软")
Else
e.DataRow("原料指标_MgO镁_厂标") = Nothing
e.DataRow("原料指标_SiO2硅_厂标") = Nothing
e.DataRow("原料指标_CaO钙_厂标") = Nothing
e.DataRow("原料指标_Fe2O3铁_厂标") = Nothing
e.DataRow("原料指标_Al2O3铝_厂标") = Nothing
e.DataRow("原料指标_CaO比SiO2_厂标") = Nothing
e.DataRow("原料指标_Cr2O3铬_厂标") = Nothing
e.DataRow("原料指标_FeO加Fe2O3_厂标") = Nothing
e.DataRow("原料指标_Na2O氧化钠_厂标") = Nothing
e.DataRow("原料指标_BD体密_厂标") = Nothing
e.DataRow("原料指标_AP气孔_厂标") = Nothing
e.DataRow("原料指标_CR比FE_厂标") = Nothing
e.DataRow("成品指标_MgO镁_厂标") = Nothing
e.DataRow("成品指标_Cr2O3铬_厂标") = Nothing
e.DataRow("成品指标_Fe2O3铁_厂标") = Nothing
e.DataRow("成品指标_Al2O3铝_厂标") = Nothing
e.DataRow("成品指标_CaO钙_厂标") = Nothing
e.DataRow("成品指标_SiO2硅_厂标") = Nothing
e.DataRow("成品指标_BD体密_厂标") = Nothing
e.DataRow("成品指标_AP气孔_厂标") = Nothing
e.DataRow("成品指标_LOI烧碱_厂标") = Nothing
e.DataRow("成品指标_CCS耐压_厂标") = Nothing
e.DataRow("成品指标_抗折_常温_厂标") = Nothing
e.DataRow("成品指标_抗折_高温_厂标") = Nothing
e.DataRow("成品指标_热震_水泠_厂标") = Nothing
e.DataRow("成品指标_热震_风泠_厂标") = Nothing
e.DataRow("成品指标_RUL菏软_厂标") = Nothing
End If
Case "原料指标_MgO镁_实测","原料指标_SiO2硅_实测","原料指标_CaO钙_实测","原料指标_Fe2O3铁_实测","原料指标_Al2O3铝_实测","原料指标_CaO比SiO2_实测","原料指标_Cr2O3铬_实测","原料指标_FeO加Fe2O3_实测","原料指标_Na2O氧化钠_实测","原料指标_BD体密_实测","原料指标_AP气孔_实测","原料指标_CR比FE_厂标","成品指标_MgO镁_实测","成品指标_Cr2O3铬_实测","成品指标_Fe2O3铁_实测","成品指标_Al2O3铝_实测","成品指标_CaO钙_实测","成品指标_SiO2硅_实测","成品指标_BD体密_实测","成品指标_AP气孔_实测","成品指标_LOI烧碱_实测","成品指标_CCS耐压_实测","成品指标_抗折_常温_实测","成品指标_抗折_高温_实测","成品指标_热震_水泠_实测","成品指标_热震_风泠_实测","成品指标_RUL菏软_实测"
Dim dr As DataRow = DataTables("理化厂标").Find("牌号 = '" & e.DataRow("牌号") & "'")
If dr IsNot Nothing AndAlso e.newvalue Then
Dim nm As String = e.DataCol.Name.SubString(0,e.DataCol.Name.LastIndexof("_"))
Dim ov As String = dr(nm)
If Isnumeric(ov) Then
Dim v As Double = ov
If e.NewValue = v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
ElseIf e.NewValue > v Then
e.DataRow(nm & "_" & "厂标" ) = e.newvalue -v
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf ov.IndexOf("-") > 0 Then
Dim vls() As String = ov.split("-")
Dim v1 As Double = vls(0)
Dim v2 As Double = vls(1)
If e.newvalue >= v1 AndAlso e.newvalue <= v2 Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
ElseIf e.newvalue < v1 Then
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v1
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v2
End If
Else
Dim o As String = ov.SubString(0,1)
Dim v As Double = val(ov.SubString(1))
If o = ">" Then
If e.NewValue > v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf o = "<"
If e.NewValue < v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v
End If
ElseIf o = "≥" Then
If e.NewValue >= v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf o = "≤"
If e.NewValue <= v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v
End If
End If
End If
End If
End Select
二个表一个一表A有5列 表B有10列
表B的10列为1、2、3、4、5、6、7、8、9、10
从表A引用到表B的数据是 2、4、6、8、10
而后在1、3、5、7、9中输放内容进行运算
但是表A中有可能只输放了4列内容 那么引用到表B中就会引用一个空数到 2、4、6、8、10其中一个数中
这时候在表B中输入数据是会全部输入内容 这时候就会有一个空数进行运算 这样是运算不了的因为这个代码只识别大于小于之类的不识别空所以就出现如图的问题。
如果在原料指标_SiO2硅_实测输入值,但是你的理化厂表中原料指标_SiO2硅是空值,而你的代码又没有判断,不出错才奇怪。
加上判断即可:
Select Case e.DataCol.name
Case "原料指标_MgO镁_实测","原料指标_SiO2硅_实测","原料指标_CaO钙_实测","原料指标_Fe2O3铁_实测","原料指标_Al2O3铝_实测","原料指标_CaO比SiO2_实测","原料指标_Cr2O3铬_实测","原料指标_FeO加Fe2O3_实测","原料指标_Na2O氧化钠_实测","原料指标_BD体密_实测","原料指标_AP气孔_实测","原料指标_CR比FE_厂标","成品指标_MgO镁_实测","成品指标_Cr2O3铬_实测","成品指标_Fe2O3铁_实测","成品指标_Al2O3铝_实测","成品指标_CaO钙_实测","成品指标_SiO2硅_实测","成品指标_BD体密_实测","成品指标_AP气孔_实测","成品指标_LOI烧碱_实测","成品指标_CCS耐压_实测","成品指标_抗折_常温_实测","成品指标_抗折_高温_实测","成品指标_热震_水泠_实测","成品指标_热震_风泠_实测","成品指标_RUL菏软_实测"
Dim dr As DataRow = DataTables("理化厂标").Find("牌号 = '" & e.DataRow("牌号") & "'")
If dr IsNot Nothing AndAlso e.newvalue Then
Dim nm As String = e.DataCol.Name.SubString(0,e.DataCol.Name.LastIndexof("_"))
If dr.IsNull(nm) =False Then
Dim ov As String = dr(nm)
If Isnumeric(ov) Then
Dim v As Double = ov
If e.NewValue = v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
ElseIf e.NewValue > v Then
e.DataRow(nm & "_" & "厂标" ) = e.newvalue -v
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf ov.IndexOf("-") > 0 Then
Dim vls() As String = ov.split("-")
Dim v1 As Double = vls(0)
Dim v2 As Double = vls(1)
If e.newvalue >= v1 AndAlso e.newvalue <= v2 Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
ElseIf e.newvalue < v1 Then
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v1
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v2
End If
Else
Dim o As String = ov.SubString(0,1)
Dim v As Double = val(ov.SubString(1))
If o = ">" Then
If e.NewValue > v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf o = "<"
If e.NewValue < v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v
End If
ElseIf o = "≥" Then
If e.NewValue >= v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = v - e.newvalue
End If
ElseIf o = "≤"
If e.NewValue <= v Then
e.DataRow(nm & "_" & "厂标" ) = "合格"
Else
e.DataRow(nm & "_" & "厂标" ) = e.newvalue - v
End If
End If
End If
End If
End If
End Select
建议看看:
http://www.foxtable.com/help/topics/1485.htm
狐狸爸爸这段代码只能针对引用过去的是字符类型的数据 如果我想改变成单精度小数如何在代码中更改 修改那一段代码 亲亲
单精度如何输入 _ >=这些符号?