Office中国论坛/Access中国论坛

标题: 一个子窗体查询的问题,请高人指点下 谢谢! [打印本页]

作者: olderdream2007@    时间: 2013-1-29 22:25
标题: 一个子窗体查询的问题,请高人指点下 谢谢!
[attach]51226[/attach]

[attach]51227[/attach]

组合框里的"ABC“ 代表表名,想通过先选择表  点击'查询'按钮,下面的子窗体显示相对应表的内容。
如:选择A  后点击"查询”  下面的子窗体(子表)显示A表的内容。

不过现在存在2个问题,请高人指点:

1.组合框 里的内容会重复(如出现ABCABC,实际上应该只有ABC)(用.Clear老报错--)
2.点击'查询‘, 子窗体(子表)会更新。


请会的高人指点一下,谢谢----{:soso_e100:}




作者: olderdream2007@    时间: 2013-1-29 22:28
补充,这个是其中的一点VBA代码,请高人看看是否问题出在其中。 谢谢!


Private Sub Combo0_GotFocus()
With Combo0
'.Clear
.AddItem "A"
.AddItem "B"
.AddItem "C"
End With
End Sub

Private Sub Command2_Click()
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Requery
End Sub

作者: roych    时间: 2013-1-30 11:31
1、表名称建议通过MsysObjests来获取。记得前面在VBA动态查询的帖子里已经把红尘的实例链接发给你了,看来楼主并没有仔细研读。
2、clear不是组合框的方法。如果没记错的话,可以用RemoveItem方法来清空原有数据再AddItem。
3、附件我看了,但是诚如之前提到的,手头上的版本打不开,所以只给了上述的建议。
作者: smilingkiss    时间: 2013-1-30 17:43
本帖最后由 smilingkiss 于 2013-1-30 17:48 编辑

Private Sub Combo0_GotFocus()
With Combo0
For j = .ListCount - 1 To 0 Step -1
.RemoveItem j
Next

.AddItem "A"
.AddItem "B"
.AddItem "C"
End With

End Sub

Private Sub Command2_Click()
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Form.RecordSource = "select * from " & Me.Combo0.Value
Me.Requery
End Sub

效果是做出来了,Me.SUBQ1.Form.RecordSource 等于 查询Q1 这一句不知道怎么写,呵呵,就重复了上面一句了,我是菜鸟,还请各位大大指点,



作者: olderdream2007@    时间: 2013-1-30 20:09
roych 发表于 2013-1-30 11:31
1、表名称建议通过MsysObjests来获取。记得前面在VBA动态查询的帖子里已经把红尘的实例链接发给你了,看来楼 ...

谢谢版主的指点 学习中 前面推荐的链接  看了 只是还看不太懂   估计要些日子

谢谢 smilingkiss  的代码,学习消化中


谢谢两位
作者: smilingkiss    时间: 2013-1-30 22:29
olderdream2007@ 发表于 2013-1-30 20:09
谢谢版主的指点 学习中 前面推荐的链接  看了 只是还看不太懂   估计要些日子

谢谢 smilingkiss  的 ...

为了避免combo0为空导致出错,严谨一点,还要加上:If Nz(Combo0, 0) <> 0 Then,如下:
Private Sub Command2_Click()
If Nz(Combo0, 0) <> 0 Then
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Form.RecordSource = "select * from " & Me.Combo0.Value
Me.Requery
end if
End Sub
作者: olderdream2007@    时间: 2013-1-31 18:52
smilingkiss 发表于 2013-1-30 22:29
为了避免combo0为空导致出错,严谨一点,还要加上:If Nz(Combo0, 0)  0 Then,如下:
Private Sub Command2_ ...

谢谢高人的指点  非常感谢 学习中
作者: olderdream2007@    时间: 2013-1-31 18:59
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Form.RecordSource = "select * from " & Me.Combo0.Value
好像这两行代码中,第一行和要实现的效果没关系

第二行代码起了作用
作者: smilingkiss    时间: 2013-1-31 21:24
olderdream2007@ 发表于 2013-1-31 18:59
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Form.RecordSource = "se ...

是的,不过我不知道你的查询“Q1”是否还有其它用处,所以保留了第一行,毕竟第二行是不能让Q1发生改变的
作者: olderdream2007@    时间: 2013-2-2 09:32
smilingkiss 发表于 2013-1-31 21:24
是的,不过我不知道你的查询“Q1”是否还有其它用处,所以保留了第一行,毕竟第二行是不能让Q1发生改变的

谢谢高人指点 明白了 呵呵 非常感谢
作者: smilingkiss    时间: 2013-2-2 12:07
olderdream2007@ 发表于 2013-2-2 09:32
谢谢高人指点 明白了 呵呵 非常感谢

呵呵,不要称我高人啊,我是菜鸟
我在这里学习了很多,这里的版主和元老们都非常乐意助人,多些向他们学习请教吧
我也仅仅是力所能及才能给予你这帖的意见,相比各位版主,可能他们还有更好的更简练的办法

作者: olderdream2007@    时间: 2013-2-8 22:37
smilingkiss 发表于 2013-2-2 12:07
呵呵,不要称我高人啊,我是菜鸟
我在这里学习了很多,这里的版主和元老们都非常乐意助人,多些向他们学习请 ...

呵呵 我刚入门  谢谢你们的指点 节日快乐
作者: redtxd    时间: 2016-8-11 14:04
谢谢分享,强烈要求学习




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