以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何把表的所有字段名加入到某comlist控件中  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28603)

--  作者:sdhasee
--  发布时间:2013/2/4 18:48:00
--  如何把表的所有字段名加入到某comlist控件中

如何把表的所有字段名加入到某comlist控件中

正解:在comlist控件的enter事件中加入如下代码

方法一:

For Each c As DataCol In DataTables("表名").datacols
    If e.sender.items.contains(c.name) = False Then
        e.sender.items.add(c.name)
    End If
Next


方法二:

Dim str As String
For Each c As col In Tables("表A").cols
    str  = Str & "|" & c.Name
Next
e.Sender.Combolist = str

注:方法二不能写在comlist控件的enter事件中
[此贴子已经被作者于2013-2-5 22:12:31编辑过]

--  作者:sdhasee
--  发布时间:2013/2/4 22:57:00
--  

我在combolist控件的Enter事件中这样写的

For Each c As col In Tables("基本信息表").cols
    e.sender.items.Insert(0,c.name)
Next

 

但是最终生成的结果是在Combolist控件中,出现了基本信息表中的所有字段名,各两次

为什么?

正确的写法?


--  作者:lin_hailun
--  发布时间:2013/2/5 8:49:00
--  
 我测试了一下,如果打开窗口以后,这个控件首先获得焦点的话,就会激发enter事件两次,如果不是,鼠标点击获得焦点的话,就只会激发一次。

 解决代码。

For Each c As col In Tables("表A").cols
    If e.Sender.Items.Contains(c.name) = False Then
        e.sender.items.Insert(0,c.name)
    End If
Next

--  作者:blackzhu
--  发布时间:2013/2/5 12:01:00
--  
Dim str As String
For Each c As col In Tables("表A").cols
    str  = Str & "|" & c.Name
Next
e.Sender.Combolist = str