以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]引用中的DataTable类型 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=15092) |
||||
-- 作者:daishunhui -- 发布时间:2011/12/12 18:26:00 -- [求助]引用中的DataTable类型 If e.DataCol.Name = "回路代码"Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow Select Case e.DataRow("回路类型") Case "电动机" dr = DataTables("电动机").Find("回路代码= " & "\'" & e.DataRow("回路代码") & "\'" ) Case "馈线" dr = DataTables("馈线").Find("回路代码= " & "\'" & e.DataRow("回路代码") & "\'" ) End Select If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("属性1")= dr("属性1") e.DataRow("属性2")= dr("属性2") End If End If
如图所示,需要在“回路类型”的数据表中查找“回路代码”,取相关数据,上面代码能够实现需要功能,但是需要查找的表如果很多就需要很多Case语句,能不能根据“回路类型”即数据表名用一句来实现。 dr = DataTables(e.DataRow("回路类型")).Find("回路代码= " & "\'" & e.DataRow("回路代码") & "\'" ) 会报错,结果好像对的。
[此贴子已经被作者于2011-12-12 18:28:44编辑过]
|
||||
-- 作者:daishunhui -- 发布时间:2011/12/13 9:45:00 -- 那位热心朋友帮帮忙,使用 dr = DataTables(e.DataRow("回路类型")).Find("回路代码= " & "\'" & e.DataRow("回路代码") & "\'" )
如果“回路类型”没有空行是对的,有空行运行会报错,增加空判断 If e.DataRow("回路类型") IsNot Nothing dr = DataTables(e.DataRow("回路类型")).Find("回路代码= " & "\'" & e.DataRow("回路代码") & "\'" )
End If 运行时还是会报错 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/12/13 10:22:00 -- 这样就不需要好多Case了:
If e.DataCol.Name = "回路代码"Then
另外: 如果数据结构基本一样,没有必要分开这么多个表。 |
||||
-- 作者:daishunhui -- 发布时间:2011/12/13 10:49:00 -- 谢谢狐狸爸爸 |