设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 求助:参数查询 SQL查询(我自己出问题的例子在9楼,拜托大家给看看)

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-12 10:34:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小鸡快跑 于 2010-8-18 14:36 编辑

http://www.office-cn.net/forum.p ... 2725&extra=page%3D2
我的问题来自于上面这个帖子中的例子。琢磨了好几天没明白。帖子主人也迟迟没出现,只好在这里询问。
在这个例子中,主窗体选择了周次和班级,点击录入后,打开录入窗体。
在录入窗体的加载事件中,定义了缺勤子窗体的数据来源sql。
我发现这个子窗体的查询跟我以前接触的不一样,就是你点击子窗体的记录源,打开的查询界面,会发现:周次和班级的参数不是字段的名字,而是具体字段的值。也就是,每次主窗口选择不同的班级和周次,到这里查看参数都会变成具体的值,比如周次变成'2009-2010-9',班级变成'07高车一'。这是怎么做到的呢?
我自己也试着做一个这样的窗体,也定义了加载时的SQL,但是一直也没成功,因为不知道子窗体的记录源怎么来做?不知问题出在哪里。

在这里向大家请教,希望得到指点!先谢谢了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-8-12 11:44:50 | 只看该作者
本帖最后由 styhs 于 2010-8-12 11:46 编辑

Private Sub Form_Load()
Me.txt_周次 = Forms!主窗体!cmb_周次
Me.txt_班级 = Forms!主窗体!cmb_班级.Column(1)

SQL = "SELECT * FROM 缺勤表 WHERE 学期周次 =  '" & Me.txt_周次 & "'  And 班级名称 = '" & Me.txt_班级 & "' order by 学号"
Me.缺勤表_子窗体.Form.RecordSource = SQL
End Sub

窗体在加载时,赋值文本框值等于主窗体的相应列表框值,在拼装SQL语句,作为子窗体的数据。
在 Me.缺勤表_子窗体.Form.RecordSource = SQL 语句之前,插入 Debug.Print SQL 就可以清晰看到SQL语句的内容。
赋值窗体数据源(数据来自本地表)一般都是这样做,楼主是采用ADO或DAO记录集赋值(Set Me.缺勤表_子窗体.Form.RecordSet = ADODB.RecordSet)还是其他方法,能否告知?
3#
 楼主| 发表于 2010-8-12 13:19:20 | 只看该作者
本帖最后由 小鸡快跑 于 2010-8-12 13:25 编辑

2楼,谢谢你的解答,我有许多还是不明白,因为我没有接触到ADO之类的东东。我现在不明白的是子窗体的记录源是自动加上的sql语句,还是作者写的?关键是他写的原文是什么?原来的参数是怎么定义的。
我也很希望那个帖子的主人尽快出现来解答呢!
4#
 楼主| 发表于 2010-8-12 14:53:18 | 只看该作者
我照样子做,怎么子窗体的记录源里的参数不变化呢?到底子窗体的记录源sql该怎么写,或者这里需要调用其他什么功能才能实现子窗体的参数变成具体的值?
5#
 楼主| 发表于 2010-8-13 21:42:16 | 只看该作者
没人知道吗?没人知道吗?
6#
发表于 2010-8-14 17:51:43 | 只看该作者
2楼,谢谢你的解答,我有许多还是不明白,因为我没有接触到ADO之类的东东。我现在不明白的是子窗体的记录源 ...
小鸡快跑 发表于 2010-8-12 13:19


2楼已解释得很清楚了,设计子窗体时先编写数据源和控件,然后在子窗体的加载事件中、拼装SQL字符串,再赋值作为子窗体的数据源,怎么会不明白...
将附件上传吧

7#
 楼主| 发表于 2010-8-14 23:49:21 | 只看该作者
先谢谢你的回复。我的问题来自一楼链接中的那个帖子。里面有例子。就是这个例子中,缺勤子窗体的记录源你打开看看,是“SELECT * FROM 缺勤表 WHERE 学期周次='2009-2010-9' And 班级名称='07高车一' ORDER BY 学号;”这里的学期周次和班级名称是个具体的值,就是你在主窗口中选择了什么周次和班级,这里的记录源中的参数就会变成什么,我就是想知道这是怎么做到的?最开始写好的记录源内容里,这两个参数是怎么定义的?


2楼已解释得很清楚了,设计子窗体时先编写数据源和控件,然后在子窗体的加载事件中、拼装SQL字符串,再 ...
styhs 发表于 2010-8-14 17:51



8#
发表于 2010-8-16 14:36:59 | 只看该作者
1、开始的定义:SELECT * FROM 缺勤表
2、窗体加载:
Me.txt_周次 = Forms!主窗体!cmb_周次
Me.txt_班级 = Forms!主窗体!cmb_班级.Column(1)
SQL = "SELECT * FROM 缺勤表 WHERE 学期周次 =  '" & Me.txt_周次 & "'  And 班级名称 = '" & Me.txt_班级 & "' order by 学号"
Me.缺勤表_子窗体.Form.RecordSource = SQL
3、结果为:
变量SQL即为"SELECT * FROM 缺勤表 WHERE 学期周次='2009-2010-9' And 班级名称='07高车一' ORDER BY 学号"
9#
 楼主| 发表于 2010-8-17 16:41:09 | 只看该作者
我把我的例子发上来,麻烦你看看问题出在哪里?
1、首先,考勤日期201008和201009两个月考勤数据已录入,可是却看不到。
2、我这个子窗体的记录源怎么就是不变?

多谢多谢!

回复 styhs 的帖子

本帖子中包含更多资源

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

x
10#
 楼主| 发表于 2010-8-18 14:37:12 | 只看该作者
来人哪,帮忙啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 11:44 , Processed in 0.102711 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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