以文本方式查看主题 - 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=165285) |
|
-- 作者:edisontsui -- 发布时间:2021/5/12 16:11:00 -- 一段代码老是不起作用 If e.DataCol.name ="套数" Then If e.DataRow("生产票号") IsNot Nothing AndAlso e.DataRow("制造产品号") IsNot Nothing AndAlso e.DataRow("开料参数") IsNot Nothing Then \'判断是否有同生产票号/同制造产品号/同开料参数的行 Dim dr920 As DataRow = e.DataRow If e.DataTable.Find("生产票号 = \'" & dr920("生产票号") & "\' And 制造产品号 = \'" & dr920("制造产品号") & "\' And 开料参数 = \'" & dr920("开料参数") & "\' ") IsNot Nothing Then Dim dr922 As DataRow = DataTables("现场任务单").Find("生产票号 = \'" & e.DataRow("生产票号") & "\' and 制造产品号 = \'" & e.DataRow("制造产品号") & "\' " ) If dr922 IsNot Nothing Then dr922("开料参数重复") = "重复" End If Else Dim dr923 As DataRow = DataTables("现场任务单").Find("生产票号 = \'" & e.DataRow("生产票号") & "\' and 制造产品号 = \'" & e.DataRow("制造产品号") & "\' " ) If dr923 IsNot Nothing Then dr923("开料参数重复") = "不重复" End If End If End If End If 上面这段代码,不管否有同生产票号/同制造产品号/同开料参数的行,执行的结果都是“重复”。请问是哪里有问题呢?
|
|
-- 作者:有点蓝 -- 发布时间:2021/5/12 16:23:00 -- 单元格是否为空值建议使用isnull判断:http://www.foxtable.com/webhelp/topics/0595.htm
Dim dr920 As DataRow = e.DataTable.Find("生产piao号 = \'" & e.DataRow("生产piao号") & "\' And 制造产品号 = \'" & e.DataRow("制造产品号") & "\' And 开料参数 = \'" & e.DataRow("开料参数") & "\' and _Identify<>" & e.DataRow("_Identify")) Dim dr922 As DataRow = DataTables("现场任务单").Find("生产piao号 = \'" & e.DataRow("生产piao号") & "\' and 制造产品号 = \'" & e.DataRow("制造产品号") & "\' " ) If dr922 IsNot Nothing Then If dr920 IsNot Nothing Then dr922("开料参数重复") = "重复" else dr922("开料参数重复") = "不重复" End If End If End If End If |
|
-- 作者:lgzhao -- 发布时间:2021/5/12 16:49:00 -- e.DataRow("制造产品号") IsNot Nothing 不能这样用。改成 e.datarow.isnull("制造产品号") 或者 e.DataRow("制造产品号") =nothing试试
|
|
-- 作者:有点蓝 -- 发布时间:2021/5/12 17:03:00 -- 如果是对象类型,可以使用:e.DataRow("制造产品号") Is Nothing ;如果是值类型要使用:e.DataRow("制造产品号") = Nothing 但是不管什么类型都可以使用e.datarow.isnull("制造产品号"),所以建议使用isnull
|
|
-- 作者:edisontsui -- 发布时间:2021/5/12 17:44:00 -- DataTables("弯头开料单").DataCols("套数").RaiseDataColChanged(vars("filter")) 上面的代码用于当删除一行数据的时候,我希望重新计算一次"开料参数重复"那栏是否为“重复”。但是出现如下警告: .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2020.5.29.8 错误所在事件:表,弯头开料单,DataRowDeleted 详细错误信息: 调用的目标发生了异常。 重载决策失败,因为没有最适合这些参数的 Public“RaiseDataColChanged”: \'Public Sub RaiseDataColChanged(Filter As String)\': 不是最特定的。 \'Public Sub RaiseDataColChanged(dr As Foxtable.DataRow)\': 不是最特定的。 请问是什么问题?
|
|
-- 作者:edisontsui -- 发布时间:2021/5/12 18:06:00 -- 或者说,当我删除一行后,再重置“套数”一列时,2楼的代码也不起作用了。 |
|
-- 作者:有点蓝 -- 发布时间:2021/5/13 8:36:00 -- dim s as string = vars("filter") DataTables("弯头开料单").DataCols("套数").RaiseDataColChanged(s)
|