设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3806|回复: 12
打印 上一主题 下一主题

[查询] 一个子窗体查询的问题,请高人指点下 谢谢!

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-29 22:25:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




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

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

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


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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2013-1-29 22:28:05 | 只看该作者
补充,这个是其中的一点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
3#
发表于 2013-1-30 11:31:29 | 只看该作者
1、表名称建议通过MsysObjests来获取。记得前面在VBA动态查询的帖子里已经把红尘的实例链接发给你了,看来楼主并没有仔细研读。
2、clear不是组合框的方法。如果没记错的话,可以用RemoveItem方法来清空原有数据再AddItem。
3、附件我看了,但是诚如之前提到的,手头上的版本打不开,所以只给了上述的建议。
4#
发表于 2013-1-30 17:43:19 | 只看该作者
本帖最后由 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 这一句不知道怎么写,呵呵,就重复了上面一句了,我是菜鸟,还请各位大大指点,


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

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

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


谢谢两位
6#
发表于 2013-1-30 22:29:34 | 只看该作者
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
7#
 楼主| 发表于 2013-1-31 18:52:58 | 只看该作者
smilingkiss 发表于 2013-1-30 22:29
为了避免combo0为空导致出错,严谨一点,还要加上:If Nz(Combo0, 0)  0 Then,如下:
Private Sub Command2_ ...

谢谢高人的指点  非常感谢 学习中
8#
 楼主| 发表于 2013-1-31 18:59:25 | 只看该作者
CurrentDb.QueryDefs("Q1").SQL = "select * from " & Me.Combo0.Value
Me.SUBQ1.Form.RecordSource = "select * from " & Me.Combo0.Value
好像这两行代码中,第一行和要实现的效果没关系

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

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

谢谢高人指点 明白了 呵呵 非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 21:32 , Processed in 0.085551 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表