以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动复制行报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=71829)

--  作者:一笑
--  发布时间:2015/7/18 21:21:00
--  自动复制行报错
表“时间”有个“选择”逻辑列,选中此逻辑列,自动将选中的所有行行复制到表“月”。“地面”列为表达式列
窗口中的“复制”按钮中代码如下:

Dim drs As List(of DataRow) = DataTables("时间").Select("选择 = True") 
For Each dr As DataRow In drs
    Dim dr1 As DataRow = DataTables("月").AddNew
    For Each dc As DataCol In DataTables("月").DataCols
        dr1(dc.Name) = dr(dc.Name)
    Next
Next

以前运行正常,最近出报错“地面”列为只读,不明白其意思,求解。

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图15年07月18日2110_1.jpg
图片点击可在新窗口打开查看


--  作者:y2287958
--  发布时间:2015/7/18 21:27:00
--  
如果"地面"这个表达式列已经存在表达式,是无法再赋值的。
--  作者:大红袍
--  发布时间:2015/7/19 10:27:00
--  

 简单判断一下

 

Dim drs As List(of DataRow) = DataTables("时间").Select("选择 = True")
For Each dr As DataRow In drs
    Dim dr1 As DataRow = DataTables("月").AddNew
    For Each dc As DataCol In DataTables("月").DataCols
        If dc.Expression = "" Then
            dr1(dc.Name) = dr(dc.Name)
        End If
    Next
Next

 

----------------

 

严谨的判断

 

Dim dc As DataCol  = DataTables("表C").DataCols("c")
Dim pi As System.Reflection.PropertyInfo = dc.Gettype.getproperty("IsTemporary",Reflection.BindingFlags.nonpublic Or Reflection.BindingFlags.Instance)
output.show( pi.getvalue(dc,Nothing))