以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助] 关于datatable 的方法 select 运用中的问题。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1170)
|
-- 作者:wcs
-- 发布时间:2008/11/18 23:32:00
-- [求助] 关于datatable 的方法 select 运用中的问题。
我在当前表事件 datacolchanged 中写了如下代码: If e.DataCol.Name = "结账" and e.NewValue = -1 Then For Each dr As DataRow In DataTables("会计凭证").Select("[月] = "& e.DataRow("月") and "[年] = "& e.DataRow("年")) dr("结账") = -1 Next end if
执行结果出错,如图:
此主题相关图片如下:未命名.jpg
提示是[月]= 10 的 类型不合法。
但是,我将 select 里面的条件颠倒一下:DataTables("会计凭证").Select("[年] = "& e.DataRow("年") and "[月] = "& e.DataRow("月")) 则执行结果出错,如图:
此主题相关图片如下:未命名1.jpg
提示是[年]= 2008 的 类型不合法。
可见总是第一个条件出错,不任顺序,这是不是bug?
同时,如果将select里面的两个条件去掉一个,是可以正常执行的。 实在是不明白啊!
注:我的两个表都是外部数据库ACCESS,年、月列的类型全部为整型。
|
-- 作者:smileboy
-- 发布时间:2008/11/18 23:44:00
--
If e.DataCol.Name = "结账" and e.NewValue = -1 Then For Each dr As DataRow In DataTables("会计凭证").Select("[月] = " & e.DataRow("月") & " and [年] = " & e.DataRow("年")) dr("结账") = -1 Next end if
[此贴子已经被作者于2008-11-18 23:44:15编辑过]
|
-- 作者:wcs
-- 发布时间:2008/11/19 19:54:00
--
为什么要这样?
能说明一下理由吗?
为保证以后不再有疑问。
|
-- 作者:程兴刚
-- 发布时间:2008/11/19 22:48:00
--
看看这一段就知道了: "& e.DataRow("月") and "[年] = "&
|
-- 作者:wcs
-- 发布时间:2008/11/20 0:12:00
--
程的理解有误啊!
"[月] = " & e.DataRow("月") & " and [年] = " & e.DataRow("年")
这样才能理解。
凡表达式,要"" 凡E参数,不要""
帮助例子中一般只有一组条件,多组条件,并有E参数时,就这样搞定!
|
-- 作者:程兴刚
-- 发布时间:2008/11/20 0:21:00
--
您把您一楼的公式和二楼对比一下,看看是少了啥? 看看您只用几个&二楼用了几个&?
[此贴子已经被作者于2008-11-20 0:23:04编辑过]
|