Foxtable(狐表)用户栏目专家坐堂 → 自定义函数问题


  共有3446人关注过本帖树形打印复制链接

主题:自定义函数问题

帅哥哟,离线,有人找我吗?
affixed
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
自定义函数问题  发帖心情 Post By:2015/5/8 16:05:00 [显示全部帖子]

Dim oldV = args(0)
Dim newV = args(1)
Dim r As Row = CurrentTable.Current
Dim colIndex As Integer = CurrentTable.ColSel
Dim colName As String = CurrentTable.Cols(colIndex).Name
For Each dt As DataTable In DataTables
    For Each dCol As DataCol In dt.DataCols
        If dCol.Name = colName Then
            For Each dr As DataRow In dt.Select("[" & colName & "] = '" & oldV & "'")  
                dr(colName) = newV
            Next
        End If
    Next
    dt.Save
Next

这段代码,执行后会显示数据类型转换错误,具体状况如下,不知道如何修改。

---------------------------
错误
---------------------------
自定义函数"同步更新数据函数"执行出错,错误信息如下:



System.Data.EvaluateException: 无法在 System.Decimal 和 System.String 上执行“=”操作。

   在 System.Data.BinaryNode.SetTypeMismatchError(Int32 op, Type left, Type right)

   在 System.Data.BinaryNode.BinaryCompare(Object vLeft, Object vRight, StorageType resultType, Int32 op, CompareInfo comparer)

   在 System.Data.Select.Eval(BinaryNode expr, DataRow row, DataRowVersion version)

   在 System.Data.Select.Evaluate(Int32 record)

   在 System.Data.Select.FindFirstMatchingRecord()

   在 System.Data.Select.GetBinaryFilteredRecords()

   在 System.Data.Select.SelectRows()

   在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates)

   在 Foxtable.DataTable.Select(String filterExpression, String Sort, DataViewRowState RowState)

   在 Foxtable.DataTable.Select(String filterExpression)

   在 UserCode.A0mHatAwMtDcXrvv4(Object[] Args)
---------------------------
确定   
---------------------------


 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:11:00 [显示全部帖子]

那请问该如何判断列类型是否与NewV的类型是否匹配呢

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:15:00 [显示全部帖子]

我是想通过自定义函数来同步所有表中的内容。
不想在每个表的datacolchanged里写代码。

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:17:00 [显示全部帖子]

我是在项目设置的datacolchanged里调用这个函数。
Functions.Execute("同步更新数据函数",e.OldValue,e.NewValue)

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:18:00 [显示全部帖子]

如果不遍历所有列的话,程序怎么判断当前表中内容已改变的列在其他表中的位置呢

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:24:00 [显示全部帖子]

表A中有:物料编码,物料名称,最小包装量,最小起订量
表B中有:物料编码,物料名称,库存数量
表C中有:物料编码,物料名称,含税单价

如果我改变了表A中某行的物料名称,希望系统自动把表B和表C中对应的记录数据改变更为最新的物料名称。

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:27:00 [显示全部帖子]

没明白Bin老师的意思

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:30:00 [显示全部帖子]

现在改用If dt.DataCols.Contains(colName) Then 是可以不遍历了,但是还未解决数据类型的问题。

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:46:00 [显示全部帖子]

主要我不知道如何去判断数据类型。

 回到顶部
帅哥哟,离线,有人找我吗?
affixed
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/5/8 16:57:00 [显示全部帖子]

是啊,我也是这么想的。但实际操作时就遇到类型不匹配的问题了。



 回到顶部
总数 11 1 2 下一页