以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用户自定义列表项目名称更改后如何更新表中引用过的数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23412) |
||||
-- 作者:zpx_2012 -- 发布时间:2012/9/11 16:30:00 -- 用户自定义列表项目名称更改后如何更新表中引用过的数据 各位老师,继续昨天的那个问题
我设计了如下代码想在子节点重命名后更新表中相关列的所有旧数据: If e.NewText = "" Then
但红色那句通不过,意思是在表中找到目标列后,用e.NewText替换掉dc.name列中 = \'" & pth(1) & "\'的值,请指点
谢谢!
|
||||
-- 作者:czy -- 发布时间:2012/9/11 18:37:00 -- 这样?
DataTables(tb).ReplaceFor(dc.name,e.NewText,dr(dc.name) & " = \'" & pth(1) & "\'") |
||||
-- 作者:czy -- 发布时间:2012/9/11 18:39:00 -- DataTables(tb).ReplaceFor(dc.name,e.NewText,dr(dc.name) = & "\'" & pth(1) & "\'") |
||||
-- 作者:zpx_2012 -- 发布时间:2012/9/11 19:32:00 -- 还是不可以。同样的出错提示 |
||||
-- 作者:czy -- 发布时间:2012/9/11 19:58:00 -- DataTables(tb.name) |
||||
-- 作者:zpx_2012 -- 发布时间:2012/9/11 20:57:00 -- 谢谢CZY,编码那里是通过了,但打开窗口后随便修改一个“币别”或“计量单位”下的值,也提示出错。
做了一个例子,请老师指点
谢谢! |
||||
-- 作者:czy -- 发布时间:2012/9/11 21:24:00 -- If e.NewText = "" Then e.Cancel = True Return End If Dim pth() As String = e.Node.FullPath.Split("\\") Select Case e.node.Level Case 0 DataTables("项目分类").ReplaceFor("项目名称",e.NewText,"项目名称 = \'" & pth(0) & "\'") Case 1 DataTables("项目分类").ReplaceFor("罗列值",e.NewText,"项目名称 = \'" & pth(0) & "\' And 罗列值 = \'" & pth(1) & "\'") For Each tb As DataTable In DataTables For Each dc As DataCol In tb.DataCols If dc.name = e.node.ParentNode.Text Then DataTables(tb.name).ReplaceFor(dc.name,e.NewText,dc.name & " = \'" & pth(1) & "\'") End If Next Next End Select e.Node.Name = e.NewText |
||||
-- 作者:zpx_2012 -- 发布时间:2012/9/11 21:45:00 -- 谢谢CZY版主,可以了。 只是这句 DataTables(tb.name).ReplaceFor(dc.name,e.NewText,dc.name & " = \'" & pth(1) & "\'")
再次谢谢了。 |
||||
-- 作者:czy -- 发布时间:2012/9/11 22:02:00 -- dc.name如果用引号就是字符,不加引号是变量值。 这行代码中多个地方用到变量,道理是一样的 DataTables(tb.name).ReplaceFor(dc.name,e.NewText,dc.name & " = \'" & pth(1) & "\'")
动态合成表达式是基础,所以建议你充分理会下面的帮助页面
http://www.foxtable.com/help/topics/1284.htm
|