以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 2个问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2912) |
||||
-- 作者:hlxz -- 发布时间:2009/5/25 17:21:00 -- 2个问题 问题 : 此主题相关图片如下:1212.bmp 附件:
好不容易装上了5.12更新的程序 请大家帮忙 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/5/25 17:36:00 -- 1、参数列设置了表达式: Parent(A).参数值 这样该列的值就等于父表参数列的值,这是无法更改的。 2、表达式列是不会触发DataColChanged的事件的,既然该列的值来自于父表,那么实际上该列的值就取决于关联列“参数代号”,所以代码可以改为: Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "参数代号" dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" End Select |
||||
-- 作者:hlxz -- 发布时间:2009/5/25 17:42:00 -- 那用什么方法 才能解决 比如: 得到sc2-sc1 的值呢 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/5/25 18:04:00 -- 你的规律是什么? 不是单单就是这两行吧? |
||||
-- 作者:mr725 -- 发布时间:2009/5/25 18:10:00 -- 1. 不明白你的意思!~ 再说,你的父表没有 CS2-CS1 子表怎么会有??? 2. 代码应放在‘参数明细’表里:datacolchanged::::: Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "参数值" dr= datatables("表达式明细").find("[参数代号] = \'" & currentTable.Current("参数代号") & "\'") If dr IsNot Nothing Then dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" end if End Select 上面只对找到的子表的一条记录有效,要对所有‘参数代码’相同的行有效,这样: Select Case e.DataCol.Name Case "参数值" Dim drs As List(Of DataRow) drs = DataTables("表达式明细").Select("[参数代号] = \'" & currentTable.Current("参数代号") & "\'") For Each dr As Datarow In drs dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" Next End Select [此贴子已经被作者于2009-5-25 18:28:08编辑过]
|
||||
-- 作者:don -- 发布时间:2009/5/25 18:39:00 -- 参数值列改为:数据列,字符型: Dim T,T1 As String Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "参数代号" if dr.Isnull("参数代号")=False then if dr("参数代号").Contains("-") then for each T1 In dr("参数代号").split("-") T = T & "-" & DataTables("参数明细").Find("参数代号 = \'" & T1 & "\'")("参数值") Next T = T.Trim("-") else T = DataTables("参数明细").Find("参数代号 = \'" & dr("参数代号") & "\'")("参数值") end if dr("参数值") = T dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" else dr("参数值") = Nothing dr("表达式") = "" end if End Select [此贴子已经被作者于2009-5-25 18:41:34编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2009/5/25 18:40:00 -- 以下是引用hlxz在2009-5-25 17:42:00的发言:
那用什么方法 才能解决 比如: 得到sc2-sc1 的值呢 这个值是从父表中取得的(Parent(A).参数值),父表是要输入的呀~ ? |
||||
-- 作者:hlxz -- 发布时间:2009/5/25 20:55:00 -- 很感謝各位的幫忙,特別鳴謝 mr725 特理解我的思路,呵呵 Select Case e.DataCol.Name Case "参数值" Dim drs As List(Of DataRow) drs = DataTables("表达式明细").Select("[参数代号] = \'" & currentTable.Current("参数代号") & "\'") For Each dr As Datarow In drs dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" Next End Select 要对所有‘参数代码’相同的行有效,这样: Select Case e.DataCol.Name Case "参数值" Dim drs As List(Of DataRow) drs = DataTables("表达式明细").Select("[参数代号] = \'" & currentTable.Current("参数代号") & "\'") For Each dr As Datarow In drs dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2" Next End Select |
||||
-- 作者:mr725 -- 发布时间:2009/5/26 10:08:00 -- 我这个代码属于小儿科,6楼don的更经典!~ |