以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]datacolchange多列连续发生变化 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74819) |
-- 作者:huhu -- 发布时间:2015/9/19 20:49:00 -- [求助]datacolchange多列连续发生变化 我想问一下,是不是A列值发生变化,B列自动从某个表取出某个值。那就是说B列也发生了变化,那么C列值也应该可以从另外一个表取出某个值吧。 代码如下:可是没有实现,是怎么回事。 发生变化的列是怀疑模块,那么模块维护人邮箱从模块名称库取出值。 发生变化的列是模块维护人邮箱,希望研发分机号从技术支持信息表取出手机号码的值。 datacolchange代码: If e.DataCol.Name = "怀疑模块" Then Dim nms() As String = {"模块维护人","模块维护人邮箱","研发组长","研发组长邮箱","研发组名","研发部门"} If e.NewValue Is Nothing Then For Each nm As String In nms e.DataRow(nm) = Nothing Next Else Dim dr As DataRow dr = DataTables("模块名称库").Find("[模块名称] = \'" & e.NewValue & "\'") If dr IsNot Nothing For Each nm As String In nms e.DataRow(nm) = dr(nm) Next End If End If End If If e.DataCol.Name = "模块维护人邮箱" Then If e.NewValue Is Nothing Then e.DataRow("研发分机号") = Nothing Else Dim dr As DataRow dr = DataTables("技术支持信息表").Find("[name] = \'" & e.NewValue & "\'") If dr IsNot Nothing e.DataRow("研发分机号") = dr("手机号码") End If End If End If |
-- 作者:大红袍 -- 发布时间:2015/9/20 12:46:00 -- For Each nm As String In nms e.DataRow(nm) = dr(nm)
Next
改成
SystemReady = False
For Each nm As String In nms
e.DataRow(nm) = dr(nm)
Next SystemReady = True
|
-- 作者:huhu -- 发布时间:2015/9/21 10:19:00 -- 改为这样还是不显示研发分机号。请问哪里不对? If e.DataCol.Name = "怀疑模块" Then Dim nms() As String = {"模块维护人","模块维护人邮箱","研发组长","研发组长邮箱","研发组名","研发部门"} If e.NewValue Is Nothing Then For Each nm As String In nms e.DataRow(nm) = Nothing Next Else Dim dr As DataRow dr = DataTables("模块名称库").Find("[模块名称] = \'" & e.NewValue & "\'") If dr IsNot Nothing Systemready = False For Each nm As String In nms e.DataRow(nm) = dr(nm) Next Systemready = True End If End If End If If e.DataCol.Name = "模块维护人邮箱" Then If e.NewValue Is Nothing Then e.DataRow("研发分机号") = Nothing Else Dim dr As DataRow dr = DataTables("技术支持信息表").Find("[name] = \'" & e.NewValue & "\'") If dr IsNot Nothing Systemready = False e.DataRow("研发分机号") = dr("手机号码") Systemready = True End If End If End If
|
-- 作者:大红袍 -- 发布时间:2015/9/21 10:21:00 -- 你修改 模块维护人邮箱 列,才会去查手机号码赋值。如果不赋值,你加入msgbox,看是否查找到数据。 |
-- 作者:huhu -- 发布时间:2015/9/21 11:10:00 -- 之前模块维护人邮箱列值为空,现在怀疑模块有值,同时模块维护人邮箱也有值了。也就说说模块维护人邮箱的值变动了,那么应该在技术支持信息表,取出对应的手机号码。可实际上红色代码没执行。 If e.DataCol.Name = "怀疑模块" Then Dim nms() As String = {"模块维护人","模块维护人邮箱","研发组长","研发组长邮箱","研发组名","研发部门"} If e.NewValue Is Nothing Then For Each nm As String In nms e.DataRow(nm) = Nothing Next Else Dim dr As DataRow dr = DataTables("模块名称库").Find("[模块名称] = \'" & e.NewValue & "\'") If dr IsNot Nothing Systemready = False For Each nm As String In nms e.DataRow(nm) = dr(nm) Next Systemready = True msgbox(e.DataRow("模块维护人邮箱")) End If End If End If If e.DataCol.Name = "模块维护人邮箱" Then If e.NewValue Is Nothing Then e.DataRow("研发分机号") = Nothing Else Dim dr As DataRow dr = DataTables("技术支持信息表").Find("[name] = \'" & e.NewValue & "\'") If dr IsNot Nothing msgbox(1) Systemready = False e.DataRow("研发分机号") = dr("手机号码") Systemready = True msgbox(e.DataRow("研发分机号")) End If End If End If
|
-- 作者:大红袍 -- 发布时间:2015/9/21 11:12:00 -- 加入msgbox看弹出什么。是不是你的条件不对,查不到值啊 |
-- 作者:huhu -- 发布时间:2015/9/21 16:05:00 -- 因为是分页加载,find改为了SQLFind,可以了。多谢。这个错误之前我也同样犯过。 dr = DataTables("技术支持信息表").SQLFind("[Name] = \'" & e.NewValue & "\'")
|