以文本方式查看主题

-  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
图片点击可在新窗口打开查看
附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table

好不容易装上了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的更经典!~