以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  从字符串“部门编号 like '01'”到类型“Long”的转换无效  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65339)

--  作者:lzzhx
--  发布时间:2015/3/13 22:53:00
--  从字符串“部门编号 like '01'”到类型“Long”的转换无效

请教:

窗口中用的是  SQLTable


下面代码执行出错

Dim a As String = e.Form.Controls("借用标签").text

If e.DataCol.Name = "部门" Then

    Dim dr As DataRow

    dr = e.DataTable.Find("部门编号 like \'" & a & "\'" And "len(部门编号) = \'" & len(a) + 3 & "\'"  And "部门 = \'" & e.NewValue & "\'")

End If


错误信息如下:

 

.NET Framework 版本:2.0.50727.5485

Foxtable 版本:2014.11.11.1

错误所在事件:表,部门管理_Table1DataColChanged

详细错误信息:

调用的目标发生了异常。

从字符串“部门编号 like \'01\'”到类型“Long”的转换无效。

输入字符串的格式不正确。

 


 


--  作者:lzzhx
--  发布时间:2015/3/13 22:53:00
--  
部门 和 部门编号 字段全是字符型
--  作者:e-png
--  发布时间:2015/3/13 23:04:00
--  

1、再检查字段类型

2、"部门编号 like \'" & a & "\'"   改为: "部门编号 like \'*" & a & "*\'"


--  作者:lzzhx
--  发布时间:2015/3/13 23:08:00
--  
字段类型没有问题

 dr = e.DataTable.Find("部门编号 like \'" & a & "\'" And "len(部门编号) = \'" & len(a) + 3 & "\'"  And "部门 = \'" & e.NewValue & "\'")
上面三个条件只选任一个条件都没有问题,连在一起就不行了

--  作者:lzzhx
--  发布时间:2015/3/13 23:13:00
--  
字段类型没有问题

 dr = e.DataTable.Find("部门编号 like \'" & a & "\'" And "len(部门编号) = \'" & len(a) + 3 & "\'"  And "部门 = \'" & e.NewValue & "\'")
上面三个条件只选任一个条件都没有问题,只要任选两个条件就不行了

--  作者:e-png
--  发布时间:2015/3/13 23:29:00
--  

试试:

dr = e.DataTable.Find("部门编号 like \'*" & a & "*\' And len(部门编号) = \'" & len(a) + 3 & "\' And 部门 = \'" & e.NewValue & "\'")


--  作者:lzzhx
--  发布时间:2015/3/13 23:47:00
--  
这样做代码执行不出错了,但结果不是我想要的。我的目的是要判断在一个部门中增加一个子部门后,该子部门不能在本部门中重复,请老师再看看
--  作者:lzzhx
--  发布时间:2015/3/14 1:45:00
--  
问题已解决,原来将代码放在 [ DataColChanged某一列的内容被更改后执行,此时列的内容已经是更改后的值]  中,达不到要求,后将代码放在 [ ValidateEdit

结束编辑单元格前执行,通常用于验证输入的内容。]  中就可以。

但不知道原因是什么?


--  作者:Bin
--  发布时间:2015/3/14 8:44:00
--  
Like要有模糊匹配符