以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【SQLQuery】如何实现按钮代码将当前窗体中SQLQuery表中的数据进行显示为代码中的数据呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103480)

--  作者:李孝春
--  发布时间:2017/7/9 22:11:00
--  【SQLQuery】如何实现按钮代码将当前窗体中SQLQuery表中的数据进行显示为代码中的数据呢?
【SQLQuery】如何实现按钮代码将当前窗体中SQLQuery表中的数据进行显示为代码中的数据呢?
麻烦老师们指导下,谢谢!
代码如下:

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = " Select 类别,货名,品牌,产品,规格,单位,代码,(Select top 1 实时库存 fro m {库存查询_Table1} As b where a.货名=b.货名 order by [_Identify] desc) As 实时库存 fro m {库存查询_Table1} As a group by 类别,货名,品牌,产品,规格,单位,代码 "
dt = cmd.ExecuteReader()
Dim b As WinForm.Table = e.Form.Controls("Table1")
…………
…………
[此贴子已经被作者于2017/7/9 22:56:29编辑过]

--  作者:有点甜
--  发布时间:2017/7/9 23:23:00
--  
 b.table.DataSource = dt
--  作者:李孝春
--  发布时间:2017/7/9 23:41:00
--  回复:(有点甜)?b.table.DataSource = dt
 窗体在加载后运行如下代码
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = " Select 类别,货名,品牌,产品,规格,单位,代码,(Select top 1 实时库存 fro m {库存查询_Table1} As b where a.货名=b.货名 order by [_Identify] desc) As 实时库存 fro m {库存查询_Table1} As a group by 类别,货名,品牌,产品,规格,单位,代码 "
dt = cmd.ExecuteReader()
Dim b As WinForm.Table = e.Form.Controls("Table1")
 b.table.DataSource = dt 

Dim t As Table = e.Form.controls("Table1").Table
Dim width As Double = t.grid.width
Dim sum As Double = 0
For Each c As object In t.grid.cols
    If c.visible = True Then
        sum += c.widthdisplay
    End If
Next
For Each c As object In t.grid.cols
    If c.visible = True Then
        c.width = c.widthdisplay/sum*width
    End If
Next
让当前表格中的列自动充满table

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

按钮中代码如下 运行后  当前表格列不自动充满了 

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
 
按钮每执行一次上面代码 是否可以先清除之前的数据在自动充满呢?
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = " Select 类别,货名,品牌,产品,规格,单位,代码,(Select top 1 实时库存 fro m {库存查询_Table1} As b where a.货名=b.货名 order by [_Identify] desc) As 实时库存 fro m {库存查询_Table1} As a group by 类别,货名,品牌,产品,规格,单位,代码 "
dt = cmd.ExecuteReader()
Dim b As WinForm.Table = e.Form.Controls("Table1")
b.table.DataSource = dt

[此贴子已经被作者于2017/7/10 8:41:27编辑过]

--  作者:有点甜
--  发布时间:2017/7/10 8:43:00
--  

拷贝3楼的代码,再执行一次,不就好了?

 

重复使用到的代码,建议提取,弄成函数来调用。


--  作者:李孝春
--  发布时间:2017/7/10 8:50:00
--  回复:(有点甜)拷贝3楼的代码,再执行一次,不就好了...
再执行就会出现下面的效果图   序号列不断扩大显示列宽了?有没有办法保持原来比例呢?

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:44.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/7/10 8:50:51编辑过]

--  作者:有点甜
--  发布时间:2017/7/10 9:04:00
--  

改代码

 

Dim t As Table = e.Form.controls("Table1").Table
Dim width As Double = t.grid.width - t.grid.cols(0).widthdisplay
Dim sum As Double = 0
For Each c As object In t.grid.cols
    If c.index > 0 andalso c.visible = True Then
        sum += c.widthdisplay
    End If
Next
For Each c As object In t.grid.cols
    If c.index > 0 AndAlso c.visible = True Then
        c.width = c.widthdisplay/sum*width
    End If
Next


--  作者:李孝春
--  发布时间:2017/7/10 9:18:00
--  回复:(有点甜)改代码 Dim t As Table = e...
谢谢!