以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]组合框初始值(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10948)

--  作者:yyzlxc
--  发布时间:2011/7/1 9:24:00
--  [求助]组合框初始值(已解决)

一个案例,第一列为年月系列值,在窗口事件AfterLoad加入如下代码,要求打开项目后,在组合框内的初始值为年月系列值中最大值并取前四位,应该如何设置代码?请各位老师指教,谢谢!!

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT DISTINCT 第一列 From {表A}"
dt = cmd.ExecuteReader()
cmb = e.Form.Controls("ComboBox1")
cmb.ComboList= dt.GetComboListString("第一列")

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目90.table

[此贴子已经被作者于2011-7-1 14:26:44编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/7/1 9:47:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT TOP 4 第一列 From {表A} Order by 第一列 DESC"
dt = cmd.ExecuteReader()
cmb = e.Form.Controls("ComboBox1")
cmb.ComboList= dt.GetComboListString("第一列")

--  作者:ybil
--  发布时间:2011/7/1 9:57:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT TOP 4 * FROM (SELECT DISTINCT 第一列 From {表A} ORDER BY 第一列 DESC)"
dt = cmd.ExecuteReader()
cmb = e.Form.Controls("ComboBox1")
cmb.ComboList= dt.GetComboListString("第一列","","第一列 Desc")
cmb.Value = dt.DataRows(0)("第一列")

--  作者:yyzlxc
--  发布时间:2011/7/1 10:13:00
--  
谢谢两位老师的热情帮助,可能是我没有表述清楚,要求是:打开项目,组合框内即显示年月系列值的最大值,并只显示最大值的前四位,本例为2011即可。如何实现?还请指教。
--  作者:狐哥
--  发布时间:2011/7/1 10:25:00
--  

可以使用SubString方法获得从指定位置开始的、指定长度的字符串。
SubString第一个参数指定开始位置,第二个参数可选,用于指定长度,如果省略这个参数,则返回自指定位置开始的全部字符,例如:

Dim s As String = "I Like Foxtable"
Output.Show(s.SubString(
0,6)) \'获得左边6个字符: I Like
Output.Show(s.SubString(s.Length -
8)) \'获得右边8个字符:Foxtable
Output.Show(s.SubString(
2,4)) \'获得从第3个字符开始的4个字符: Like


--  作者:狐狸爸爸
--  发布时间:2011/7/1 10:26:00
--  

Dim cmd As New SQLCommand
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT Max(Left(第一列,4)) From {表A}"
cmb = e.Form.Controls("ComboBox1")
cmb.Value = cmd.ExecuteScalar


--  作者:yyzlxc
--  发布时间:2011/7/1 12:32:00
--  
狐爸的代码还是有问题,应该还可以选择2010才对。请再想想办法。
--  作者:ybil
--  发布时间:2011/7/1 13:20:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT DISTINCT Left(第一列,4) As 第一列 From {表A}"
dt = cmd.ExecuteReader()
cmb = e.Form.Controls("ComboBox1")
cmb.ComboList= dt.GetComboListString("第一列","","第一列 Desc")
cmb.Value = cmb.ComboList.split("|")(0)
[此贴子已经被作者于2011-7-1 13:52:04编辑过]

--  作者:yyzlxc
--  发布时间:2011/7/1 14:26:00
--  

谢谢ybil老师的指教,完全符合要求,又学了一招,万分感谢ybil老师的帮助,当然也要感谢狐爸的帮助。