以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  我建立了一个临时列来计算数据付给一个列但是,总是提示列已经建立,我加了判断,为何没用呀,顺便问问,我不用临时列我可以有方法直接计算数据吗?比如我分析得到字符串"0.8*0.8*9"有方法可以直接计算吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65564)

--  作者:a937775799
--  发布时间:2015/3/18 14:56:00
--  我建立了一个临时列来计算数据付给一个列但是,总是提示列已经建立,我加了判断,为何没用呀,顺便问问,我不用临时列我可以有方法直接计算数据吗?比如我分析得到字符串"0.8*0.8*9"有方法可以直接计算吗

我建立了一个临时列来计算数据付给一个列但是,总是提示列已经建立,我加了判断,为何没用呀,顺便问问,我不用临时列我可以有方法直接计算数据吗?比如我分析得到字符串"0.8*0.8*9"有方法可以直接计算吗

这段代码在对应表的dataColchanged里面

Dim b As List(Of DataRow) = DataTables("表达式列表").Select("表名 =\'" + e.DataTable.Name+"\'"  )
Dim tarb As DataTable = e.DataTable

\'表达式分析
Dim temp,temp_s,temp_ss As String
Dim str As String
Dim s,en As Integer
Dim lz() As String \'分析表达式后存放列名称数组
Dim s_ls As String = "临时计算列"
Dim temp_col As DataCol = Nothing  \'临时计算列

For Each br As DataRow In b

    If IsNothing (temp_col)
       \' MessageBox.Show("1")
        temp_col = e.DataTable.DataCols.Add(s_ls, Gettype(Double) )  \'建立临时计算列
    End If

    temp_col.Expression =  br("表达式")  \'设置计算列
    For Each r As DataRow In tarb.DataRows
        r(br("列名")) = r(s_ls)
    Next
Next

[此贴子已经被作者于2015/3/18 15:02:17编辑过]

--  作者:有点甜
--  发布时间:2015/3/18 14:59:00
--  

呃。

 

For Each br As DataRow In b
    For Each r As DataRow In tarb.DataRows
        r(br("列名")) = Eval(br("表达式"))
    Next
Next

http://www.foxtable.com/help/topics/1277.htm

 


--  作者:有点甜
--  发布时间:2015/3/18 15:02:00
--  
For Each br As DataRow In b
    If DataTables("表A").DataCols.Contains(s_ls) Then
        DataTables("表A").DataCols.Remove(s_ls)
    End If
    e.DataTable.DataCols.Add(s_ls, Gettype(Double), br("表达式")  )  \'建立临时计算列
    For Each r As DataRow In tarb.DataRows
        r(br("列名")) = r(s_ls)
    Next
    DataTables("表A").DataCols.Remove(s_ls)
Next

--  作者:a937775799
--  发布时间:2015/3/18 15:20:00
--  

For Each br As DataRow In b
    If tarb.DataCols.Contains(s_ls) Then
        tarb.DataCols.Delete(s_ls)
    End If

    temp_col = e.DataTable.DataCols.Add(s_ls, Gettype(Double),br("表达式")   )  \'建立临时计算列
    For Each r As DataRow In tarb.DataRows
        r(br("列名")) = r(s_ls)
    Next  
Next

 

用临时列计算这样就可以了


--  作者:a937775799
--  发布时间:2015/3/18 15:27:00
--  

这个也可以

不过感觉

For Each br As DataRow In b
    For Each r As DataRow In tarb.DataRows
        r(br("列名")) = Eval(br("表达式"))
    Next
Next
更简单呢

谢谢 你了


--  作者:a937775799
--  发布时间:2015/3/18 16:10:00
--  
用eval 根本不刷新界面 还是这个好