设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 求解答子窗体显示SQL查询内容的问题。

[复制链接]
跳转到指定楼层
1#
发表于 2012-1-4 07:46:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 秒弑 于 2012-1-4 11:16 编辑

如图,窗体出下:

窗体载入时,子窗体显示学生档案表,输入入学时间段后,再选择考试时间,按按钮得到入学时间段内某次考试的结果并显示在子窗体中。
问题1:子窗体不能显示非固定列的SQL查询结果,且报错。如图:

问题2:学生档案与成绩的交叉查询如何通过SQL代码实现?
附近上传,求高手解答,谢谢。


————————————————————————————

谢谢版主,已经解决了,用ADO那间临时表实现的。代码上传一下。里面有几句关于ADO的代码不太明白,不知道是否有不合理的地方。
  1. Option Compare Database

  2. Private Sub ComboBiao_change()
  3. 'Dim strBiaoname As String
  4. 'strBiaoname = DLookup("表名", "学生成绩_表名", "说明 = '" & Me.ComboBiao.Value & "'")
  5. 'Me.ChildShow.SourceObject = "表." & strBiaoname
  6. 'Me.ChildShow.Requery
  7. End Sub

  8. Private Sub CommandClear_Click()
  9. Me.ChildShow.SourceObject = "表.学生档案"
  10. Me.ChildShow.Requery
  11. ComboBiao.Value = ""
  12. End Sub

  13. Private Sub CommandFind_Click()
  14. Dim rs As New ADODB.Recordset
  15. Dim strfind, strBiaoname As String
  16. Dim strTup, strTdown As Date

  17. Me.ChildShow.SourceObject = ""

  18. If Me.ComboBiao.Value <> "" Then
  19.     strTup = Me.TextTup.Value
  20.     strTdown = Me.TextTDown.Value
  21.     strBiaoname = DLookup("表名", "学生成绩_表名", "说明 = '" & Me.ComboBiao.Value & "'")

  22.     '删除临时表
  23.     strfind = "drop table 临时表_成绩查询"
  24.     rs.Open strfind, CurrentProject.Connection, 1, 3

  25.     '建立临时表并显示
  26.     strfind = "select 学生档案.ID,学生档案.姓名," & strBiaoname & ".语文," & strBiaoname & ".数学," & strBiaoname & ".英语 into 临时表_成绩查询 from 学生档案 INNER JOIN " & strBiaoname & " ON 学生档案.ID = " & strBiaoname & ".ID where 学生档案.入学时间 between # " & strTup & " # and #" & strTdown & "# "
  27.     rs.Open strfind, CurrentProject.Connection, 1, 3

  28.     Me.ChildShow.SourceObject = "表.临时表_成绩查询"
  29.     Me.ChildShow.Requery
  30.    
  31.     Set rs = Nothing
  32. Else
  33.     MsgBox "没有选择考试时间!"
  34. End If

  35. End Sub

  36. Private Sub Form_load()
  37. Me.ChildShow.SourceObject = "表.学生档案"
  38. End Sub
复制代码

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2012-1-4 07:48:26 | 只看该作者
查询按钮的VBA代码是这样的:
  1. Private Sub CommandFind_Click()
  2. Dim strfind As String
  3. Dim strTup, strTdown As Date
  4. strTup = Me.TextTup.Value
  5. strTdown = Me.TextTDown.Value
  6. strfind = "select * from 学生档案 where 学生档案.入学时间 between # " & strTup & " # and #" & strTdown & "# "
  7. 'Dim rs As New ADODB.Recordset
  8. 'Set rs = conn.Execute(strfind)
  9. 'Me.ChildShow.Form.Recordset = rs
  10. Me.ChildShow.SourceObject = ""
  11. Me.ChildShow.Form.RecordSource = strfind
  12. End Sub
复制代码
清空子窗体数据源后,就不能显示SQL查询,如果解决呢?
3#
发表于 2012-1-4 08:46:50 | 只看该作者
考试与日期视乎没有关系!
4#
 楼主| 发表于 2012-1-4 08:56:44 | 只看该作者
Henry D. Sy 发表于 2012-1-4 08:46
考试与日期视乎没有关系!

我代码里面没有加入代码。但是如果选中了考试时间,再按时间段显示的话,子窗体就会出错。列数不同。
5#
发表于 2012-1-4 09:11:12 | 只看该作者
说什么呢?
6#
 楼主| 发表于 2012-1-4 09:17:22 | 只看该作者
本帖最后由 秒弑 于 2012-1-4 09:21 编辑
Henry D. Sy 发表于 2012-1-4 09:11
说什么呢?


查询了考试时间,再查入学时间,就显示下图。
7#
 楼主| 发表于 2012-1-4 09:17:45 | 只看该作者
本帖最后由 秒弑 于 2012-1-4 09:18 编辑

本帖子中包含更多资源

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

x
8#
 楼主| 发表于 2012-1-4 09:31:02 | 只看该作者
想实现让总表和考试表交叉显示在子窗体中,版主怎么实现呢?找了一通宵百度了。
9#
 楼主| 发表于 2012-1-4 09:35:27 | 只看该作者
我在网上查了,是不是只能通过按下按钮建立一个临时的查询表,再显示在子窗体里面?

点击这里给我发消息

10#
发表于 2012-1-4 10:04:52 | 只看该作者
子窗体的源对象只能是窗体、表或查询,可以建临时表或临时查询作为子窗体体的源对象
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 22:06 , Processed in 0.114665 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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