以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]数据转换错误 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171413) |
-- 作者:zrb1007 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2021/8/29 20:16:00 -- Dim rqs As List(of String) = dr("过账日期") Dim pzs As List(of String) = dr("入库凭证号") 一个是日期一个是字符串,无法转换为集合。没看懂要做什么功能,使用文字描述一下
|
-- 作者:chnfo -- 发布时间: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 -- 发布时间:2021/8/30 13:29:00 -- 回复:(有点蓝) ... 是想把表A多次的时间,记录到表B的一个单元格中 |
-- 作者:有点蓝 -- 发布时间: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
|