Office中国论坛/Access中国论坛

标题: 关于列表框的记录源查询问题! [打印本页]

作者: petrelai    时间: 2004-3-30 19:32
标题: 关于列表框的记录源查询问题!
在一个窗体上有一个列表框和一个组合框,组合框的记录源是商品类别表中的“类别ID”,“商品类别”。列表框的记录源是商品信息表和商品类别表两个表组合的,它们之间的联系是“类别ID”。现在我想当我选择组合框的内容,列表框就会出现与组合框的相应的记录。请问如何实现?
作者: 宿命的风    时间: 2004-3-30 19:54
用查询做好了,更新组合框时,对列表框刷新。
作者: Ajoe    时间: 2004-3-30 19:56
在组合框中用更新后事件就可以:
Private Sub 组合框名_AfterUpdate()
    Me.列表框名 = Me.组合框名.Column()
End Sub

注:Column()括号里面可以填写组合框里第几列的内容,但是0表示第一列,1表示第二列.....

或者在列表框里用获得焦点事件:
Private Sub 列表框名_GotFocus()
    Me.列表框名.RowSource = "SELECT 类别ID,商品类别  FROM 商品类别表 WHERE (类别ID = '" & Me.组合框名.Column(0) & "')"
End Sub




[此贴子已经被作者于2004-3-30 12:05:28编辑过]


作者: petrelai    时间: 2004-3-30 21:18
谢谢!我已解决了。我是用查询的。
作者: petrelai    时间: 2004-3-30 22:16
我想再问一下,如果这个列表框有有7列字段,我想把当我点击它时,这个列表框的7个字段分别赋值给7个不同的文本框。请问如何实现?
作者: Ajoe    时间: 2004-3-30 22:20
Private Sub 组合框名_AfterUpdate()
    Me.文本框1 = Me.组合框名.Column(0)
    Me.文本框2 = Me.组合框名.Column(1)
    Me.文本框3 = Me.组合框名.Column(2)
..........................
End Sub

使用时注意,你要把你的组合框的“列数”设为7,在“列宽”中,把不必显示出来的列宽设为0(例:2;3;0;0;0;0;0),这样你的数据才有效。

[此贴子已经被作者于2004-3-30 14:21:29编辑过]


作者: petrelai    时间: 2004-3-30 22:31
哦!怪我一运行时,没有高列宽呀。谢谢您呀!
作者: wang1999    时间: 2004-3-30 22:33
你这样的应用没有任何意义,因为查询后列表框返回的字段是不固定的
你还不如用组合框选择更新后的作为一个事件,达到你所需的,
参考代码如下( 关键代码 Me.Filter = strSearch    Me.FilterOn = True):

Private Sub cmdPC编号_AfterUpdate()
    Dim strSearch As String
    strSearch = cmdPC编号.Value
    DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70    '撤消“PC编号”的数据更新
    strSearch = "C编号='" & strSearch & "'"
    Me.Filter = strSearch
    Me.FilterOn = True
End Sub

作者: petrelai    时间: 2004-3-30 22:37
呵^^^^
8楼先生,你说你的我不是很懂,你的目的在哪呀?
作者: wang1999    时间: 2004-3-30 23:00
以下是引用petrelai在2004-3-30 14:16:10的发言:
我想再问一下,如果这个列表框有有7列字段,我想把当我点击它时,这个列表框的7个字段分别赋值给7个不同的文本框。请问如何实现?


其实就是让你的7个文本框控件与窗体记录绑订后,再利用窗体的过滤器来定位记录。
不知我有没有正确理解你的意思
作者: petrelai    时间: 2004-3-30 23:14
我明白你的意思,但我是需要把这个7个框的内容复制到另一个窗体的文本框中的.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3