以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 从字符串“”到类型“Integer”的转换无效 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179424) |
-- 作者:edisontsui -- 发布时间:2022/8/23 8:50:00 -- 从字符串“”到类型“Integer”的转换无效 Dim Int1 As Integer = CInt(e.DataRow("销售单行号")) dr1 = DataTables("销售单").Find("产品代号 = \'" & e.DataRow("物料编号") & "\' And 销售单号 = \'" & e.DataRow("销售单号") & "\' And 销售单行号 = \'" & Int1 & "\'") 上面是“出入库”这个表格的 datacolchanged 里面的代码。因为"销售单"这个表的列"销售单行号"是整数,而出入库”这个表的列"销售单行号"是字符,所以我要把“出入库”的e.DataRow("销售单行号") 转化为整数再与"销售单"的列"销售单行号"进行比较。但是,执行时出现如下警告: 错误所在事件:表,出入库2,DataColChanged 详细错误信息: 调用的目标发生了异常。 从字符串“”到类型“Integer”的转换无效。 输入字符串的格式不正确。 请问要怎样修改代码?谢谢。 |
-- 作者:洮沙 -- 发布时间:2022/8/23 8:53:00 -- http://www.foxtable.com/webhelp/topics/1513.htm 看一下,能否解决。 CInt 转换为整数(Integer)。
|
-- 作者:edisontsui -- 发布时间:2022/8/23 8:54:00 -- 如果我不进行转换,而用 dr1 = DataTables("销售单").Find("产品代号 = \'" & e.DataRow("物料编号") & "\' And 销售单号 = \'" & e.DataRow("销售单号") & "\' And 销售单行号 = \'" & e.DataRow("销售单行号") & "\'") 的话,就会出现如下警告: 无法在 System.int32 和 system.String 上执行“=”操作。
|
-- 作者:有点蓝 -- 发布时间:2022/8/23 9:00:00 -- 应该是单元格没有值导致的,应该加上判断 if e.DataRow.isnull("销售单行号") = false Dim Int1 As Integer = CInt(e.DataRow("销售单行号")) dr1 = DataTables("销售单").Find("产品代号 = \'" & e.DataRow("物料编号") & "\' And 销售单号 = \'" & e.DataRow("销售单号") & "\' And 销售单行号 = " & Int1) endif 表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。 例如: Tables("订单").Filter = "[产品] = \'PD01\'" \'字符用单引号括起来 |
-- 作者:edisontsui -- 发布时间:2022/8/23 9:23:00 -- 谢谢。是要先判断"销售单行号"是否为空值才行,而且不需要把字符转换为整数都可以。 |