Foxtable(狐表)用户栏目专家坐堂 → [求助]数据转换错误


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

主题:[求助]数据转换错误

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


加好友 发短信
等级:幼狐 帖子:53 积分:481 威望:0 精华:0 注册:2018/8/27 22:35:00
[求助]数据转换错误  发帖心情 Post By:2021/8/29 11:49:00 [只看该作者]

老师,数据转换的时候提示错误,请帮忙看下下面代码什么地方出错了,谢谢


.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.8.20.1
错误所在事件:表,入库明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法将类型为“System.String”的对象强制转换为类型“System.Collections.Generic.List`1[System.String]”。


Select Case e.DataCol.Name '入库后用入库明细更新验收验收记录
    Case "入库数量"
        If e.DataRow("未入库数量") < 0 Then
            MessageBox.Show("入库数量不能超过验收数量","请确认")
            e.DataRow("入库数量") = e.DataRow("验收数量")
        Else
            Dim dr As DataRow
            Dim f As String = "到货日期 = #" & e.DataRow("到货日期") & "# and 物资合同编码 = '" & e.DataRow("物资合同编码") & "' and 验收日期 = #" & e.DataRow("验收日期") & "#"
            dr = DataTables("验收明细").find(f)
            If dr IsNot Nothing Then
                Dim rqs As List(of String) = dr("过账日期")
                Dim pzs As List(of String) = dr("入库凭证号")
                Dim rq As String = CStr(e.DataRow("过账日期"))
                Dim pz As String = e.DataRow("入库凭证号")
                If rqs.Contains(rq) = False Then '判断是否存在当前日期
                    rqs.Add(rq)
                End If
                If pzs.Contains(pz) = False Then '判断是否存在当前凭证
                    rqs.Add(pz)
                End If
                 dr("入库数量") = e.DataTable.Compute("sum(入库数量)",f)
            Else
                MessageBox.Show("验收明细中没找到对应记录,无法更新过账日期/入库凭证号/入库数量信息!")
            End If
        End If
End Select








 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/29 20:16:00 [只看该作者]

                Dim rqs As List(of String) = dr("过账日期")
                Dim pzs As List(of String) = dr("入库凭证号")

一个是日期一个是字符串,无法转换为集合。没看懂要做什么功能,使用文字描述一下

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/8/29 22:25:00 [只看该作者]

可以考虑用 hashset

 dim rqs as new hashset(of string)  ' Dim rqs As List(of String) = dr("过账日期")   ----这是导致错误的原因。 Dim rqs As new   List(of String) 
 dim pzs as new hashset(of string)   'Dim pzs As List(of String) = dr("入库凭证号") ----这是导致错误的原因。 Dim pzs As new   List(of String) 
                Dim rq As String = CStr(e.DataRow("过账日期"))
                Dim pz As String = e.DataRow("入库凭证号")
               ' If rqs.Contains(rq) = False Then '判断是否存在当前日期
                    rqs.Add(rq)
                'End If
               ' If pzs.Contains(pz) = False Then '判断是否存在当前凭证
                    rqs.Add(pz)
              '  End If
                 dr("入库数量") = e.DataTable.Compute("sum(入库数量)",f)
[此贴子已经被作者于2021/8/29 22:26:37编辑过]

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


加好友 发短信
等级:幼狐 帖子:53 积分:481 威望:0 精华:0 注册:2018/8/27 22:35:00
回复:(有点蓝)         ...  发帖心情 Post By:2021/8/30 13:29:00 [只看该作者]

是想把表A多次的时间,记录到表B的一个单元格中

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/30 13:46:00 [只看该作者]

Select Case e.DataCol.Name '入库后用入库明细更新验收验收记录
    Case "入库数量"
        If e.DataRow("未入库数量") < 0 Then
            MessageBox.Show("入库数量不能超过验收数量","请确认")
            e.DataRow("入库数量") = e.DataRow("验收数量")
        Else
            Dim dr As DataRow
            Dim f As String = "到货日期 = #" & e.DataRow("到货日期") & "# and 物资合同编码 = '" & e.DataRow("物资合同编码") & "' and 验收日期 = #" & e.DataRow("验收日期") & "#"
            dr = DataTables("验收明细").find(f)
            If dr IsNot Nothing Then
                Dim rqs As List(of String) = dr.Lines("过账日期")
                Dim pzs As List(of String) = dr.Lines("入库凭证号")
                Dim rq As String = CStr(e.DataRow("过账日期"))
                Dim pz As String = e.DataRow("入库凭证号")
                If rqs.Contains(rq) = False Then '判断是否存在当前日期
                    rqs.Add(rq)
dr.Lines("过账日期") = rqs
                End If
                If pzs.Contains(pz) = False Then '判断是否存在当前凭证
                    pzs.Add(pz)
dr.Lines("入库凭证号") = pzs
                End If
                 dr("入库数量") = e.DataTable.Compute("sum(入库数量)",f)
            Else
                MessageBox.Show("验收明细中没找到对应记录,无法更新过账日期/入库凭证号/入库数量信息!")
            End If
        End If
End Select

 回到顶部