Foxtable(狐表)用户栏目专家坐堂 → 查询得到数据在窗口的table中逻辑列不能选中


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

主题:查询得到数据在窗口的table中逻辑列不能选中

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
查询得到数据在窗口的table中逻辑列不能选中  发帖心情 Post By:2012/9/21 8:31:00 [只看该作者]

各位老师,

 

如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20120921-001.jpg
图片点击可在新窗口打开查看

代码如下:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
'用SQL语句生成临时表
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "Select 选择,{生产单}.生产单号,{生产单}.唛头,生产厂,产品编码,规格,数量,计量单位,交货日期,累计入库,累计出库,累计退货 FROM {生产明细} LEFT JOIN {生产单} ON {生产明细}.生产单号= {生产单}.生产单号"
dt = cmd.ExecuteReader()
tr.BuildTree(dt, "唛头|生产单号")
tr.Nodes.Insert("显示所有",0)

Tables("入库产品选择_Table1").DataSource = dt
Tables("入库产品选择_Table1").AutoSizeCols()

 

 

用查询得到数据绑定到窗口中的Table,数据源中有增加一列逻辑列,但在窗口中不能选中,要怎么办?

 

另外一个问题,有没有办法通过SQL查询语句直接增加一逻辑列用于多选数据用,而不用在源数据中增加?

 

谢谢!


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/9/21 8:40:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/21 8:42:00 [只看该作者]

  生成的查询表,默认是不能编辑的,需要加上一句

  td.AllowEdit = true


 

  增加临时列语法

  dt.DataCols.Add("临时", Gettype(Boolean))

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/21 9:16:00 [只看该作者]

谢谢两位

 

因为是从多表得到数据,所以不能绑定,同时选择不同的目录树节点,先前的选择状态还要保持,所以不能用2楼的办法,

在代码中加入了3楼的代码,但还是不可以选中选择列,

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
'用SQL语句生成临时表
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "Select 选择,{生产单}.生产单号,{生产单}.唛头,生产厂,产品编码,规格,数量,计量单位,交货日期,累计入库,累计出库,累计退货 FROM {生产明细} LEFT JOIN {生产单} ON {生产明细}.生产单号= {生产单}.生产单号"
dt = cmd.ExecuteReader()
tr.BuildTree(dt, "唛头|生产单号")
tr.Nodes.Insert("显示所有",0)

dt.AllowEdit = True '让得到的查询表可编辑

dt.DataCols.Add("临时", Gettype(Boolean))

Tables("入库产品选择_Table1").DataSource = dt

Tables("入库产品选择_Table1").AutoSizeCols()

 

如果加了红色的这行,运行后还会出错如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20120921-003.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/21 9:37:00 [只看该作者]

 哦哦,不能用变量dt去访问。

 这样用

 Tables("入库产品选择_Table1").AllowEdit = true

 
Tables("入库产品选择_Table1").DataTable.DataCols.Add("临时", Gettype(Boolean))

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/21 10:58:00 [只看该作者]

基本上可以了,但是临时列增加进去了,选择时还是会出错

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20120921-004.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/21 12:48:00 [只看该作者]

 不行的话,就转换下思路,参考下面。

Dim dtb As New DataTableBuilder("临时表")
dtb.Build()
Dim dt As DataTable = DataTables("临时表")
dt.Fill("Select * from {成绩表}", "数据源", True)   '把查询表填充到临时表
dt.DataCols.Add("临时", Gettype(Boolean))
Tables("窗口2_Table1").DataSource = dt
Tables("窗口2_Table1").AllowEdit = True

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/21 12:59:00 [只看该作者]

这样可以了,就不用在每个来源表中再去增加一列逻辑列。

 

谢谢!


 回到顶部