以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  查询得到数据在窗口的table中逻辑列不能选中  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23829)

--  作者:zpx_2012
--  发布时间:2012/9/21 8:31:00
--  查询得到数据在窗口的table中逻辑列不能选中

各位老师,

 

如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下: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查询语句直接增加一逻辑列用于多选数据用,而不用在源数据中增加?

 

谢谢!


--  作者:lin_hailun
--  发布时间:2012/9/21 8:42:00
--  
  生成的查询表,默认是不能编辑的,需要加上一句

  td.AllowEdit = true


 

  增加临时列语法

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

--  作者:zpx_2012
--  发布时间: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
--  发布时间:2012/9/21 9:37:00
--  
 哦哦,不能用变量dt去访问。

 这样用

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

 
Tables("入库产品选择_Table1").DataTable.DataCols.Add("临时", Gettype(Boolean))
--  作者:zpx_2012
--  发布时间:2012/9/21 10:58:00
--  

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

 


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

--  作者:lin_hailun
--  发布时间: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
--  发布时间:2012/9/21 12:59:00
--  

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

 

谢谢!