Foxtable(狐表)用户栏目专家坐堂 → 关于sql表达式列的保存问题?


  共有2060人关注过本帖树形打印复制链接

主题:关于sql表达式列的保存问题?

帅哥哟,离线,有人找我吗?
luodang2050
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
关于sql表达式列的保存问题?  发帖心情 Post By:2017/3/23 16:32:00 [只看该作者]

如下,引用了sql的数据表,其内含有表达式列,方便数据分析,但保存时会提示表达式列无法保存,现通过如下语句将表达式列的数据还原来避免对应列保存事件的发生,但新增行仍然无效报错,请问应该怎么解决?
For Each dc As DataCol In edt.DataCols
    If dc.Name.StartsWith("exp_") '撤销表达式列修改
        msgbox(edr(dc.Name))
        msgbox(edr.OriginalValue(dc.Name))
        If edr.OriginalValue(dc.Name)<> edr(dc.Name)
            edr(dc.Name) = edr.OriginalValue(dc.Name)
            msgbox(dc.Name)
        
        End If
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 17:32:00 [只看该作者]

For Each dc As DataCol In edt.DataCols
    If dc.Expression = "" Then
        If edr.RowState = DataRowState.Added Then
            '新增额外处理
        ElseIf edr.OriginalValue(dc.Name)<> edr(dc.Name)
            edr(dc.Name) = edr.OriginalValue(dc.Name)
            msgbox(dc.Name)            
        End If
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/3/23 17:43:00 [只看该作者]

'新增额外处理
这里需要怎么处理?因默认空置也会保存,一样会报错

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 17:52:00 [只看该作者]

不明白你这样做的意图,你要做什么?

 

如果你想撤销保存,直接rejectchanges http://www.foxtable.com/webhelp/scr/1538.htm

 

如果你根本就不需要保存,你可以用sqlQuery查询表。


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/3/23 17:57:00 [只看该作者]

我是为了方便数据的分析,如sql增加了表达式列exp_姓首字母,如此能够根据此列生成筛选树,这样能够快速检索人员。
([dbo].[fn_GetPy]([姓名]))

采用rejectchanges ,会整行撤销,我的目的是指定该表达式列不保存,防止报错

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 18:37:00 [只看该作者]

试试

 

If edr.RowState = DataRowState.Added Then
    edr(dc.Name) = DBNull.Value
End If

 

如果不行,就是不支持了。你用foxtable的代码处理拼音 http://www.foxtable.com/webhelp/scr/1270.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/3/23 18:56:00 [只看该作者]

哎,还是不行,拼音是可用代码处理,但是我需要后台跨表调用其他数据。
比如人员归类登记在一张表,学历登记表会增加计算列“exp_人员归类”,其通过sql函数自动计算引用,这样我在处理毕业证表时,可方便的知道其人员性质,且能够对此进行数据筛选。
现计划如下替代方案:
1、后台计算列不加载,表临时增加表达式列,其值引用后台计算列?
2、后台不需要计算列,表临时增加表达式列,直接后台调用其他表的数据?
以上两种方案都要引用后台数据列,应该怎么设置表达式列呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 21:06:00 [只看该作者]

 数据表不要加载你那些列,单独查一个临时表。添加临时列,把临时表的值填写进去。


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/3/23 21:13:00 [只看该作者]

以下是引用有点色在2017/3/23 21:06:00的发言:

 数据表不要加载你那些列,单独查一个临时表。添加临时列,把临时表的值填写进去。


是临时表达式列么?

还是通过代码批量更新临时普通列?一般设置在哪个事件好?draw事件可行?

[此贴子已经被作者于2017/3/23 21:14:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/23 22:01:00 [只看该作者]

添加列,参考

 

http://www.foxtable.com/webhelp/scr/1428.htm

 

 

一次性赋值,不能写到drawcell事件。比如可以写到窗口的AfterLoad、AfterLoadTableSetting

 


 回到顶部
总数 13 1 2 下一页