设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3053|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
16#
发表于 2012-1-4 13:26:08 | 只看该作者
把上面的代码中
sSQL=这句换成下面这句,就不管你有什么科目
  1. sSQL = "SELECT 学生档案.*, " & _
  2.            Me.ComboBiao & ".* FROM 学生档案 INNER JOIN " & _
  3.            Me.ComboBiao & "  ON 学生档案.ID = " & Me.ComboBiao & _
  4.            ".ID WHERE 入学时间 between #" & start & "# and #" & endt & "#"
复制代码
15#
发表于 2012-1-4 13:19:36 | 只看该作者
对,如果科目变化,还要修改!
14#
 楼主| 发表于 2012-1-4 13:00:05 | 只看该作者
本帖最后由 秒弑 于 2012-1-4 13:03 编辑

谢谢版主,请问一下,这样的话是不是只要考试表的课目不变就没有问题?
13#
发表于 2012-1-4 12:55:36 | 只看该作者
不需要临时表
  1. Private Sub CommandFind_Click()
  2.     Dim Qdf As DAO.QueryDef
  3.     Dim start As Date, endt As Date
  4.     Dim sSQL As String
  5.     If IsNull(Me.ComboBiao) Then
  6.         MsgBox "请选择考试时间"
  7.         Exit Sub
  8.     End If
  9.     If Not IsNull(Me.TextTup) Then
  10.         start = Me.TextTup
  11.     Else
  12.         MsgBox "请输入开始日期"
  13.         Exit Sub
  14.     End If
  15.     If Not IsNull(Me.TextTDown) Then
  16.         endt = Me.TextTDown
  17.     Else
  18.         MsgBox "请输入结束日期"
  19.         Exit Sub
  20.     End If
  21.     Set Qdf = CurrentDb.QueryDefs("A")
  22.     sSQL = "SELECT 学生档案.ID, 姓名, 入学时间, 语文, 数学, 英语 FROM 学生档案 INNER JOIN " & _
  23.            Me.ComboBiao & "  ON 学生档案.ID = " & Me.ComboBiao & _
  24.            ".ID WHERE 入学时间 between #" & start & "# and #" & endt & "#"
  25.     Qdf.SQL = sSQL
  26.     Me.ChildShow.SourceObject = "查询.A"
  27.     Qdf.Close
  28.     Set Qdf = Nothing
  29. End Sub
复制代码

本帖子中包含更多资源

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

x
12#
 楼主| 发表于 2012-1-4 11:17:52 | 只看该作者
已经解决了,不过不知道代码对不对,麻烦版主帮我看看,在第一页。
11#
发表于 2012-1-4 10:09:26 | 只看该作者
建议你使用子窗体或者查询来实现
Me.ChildShow.SourceObject = 查询对象或者其他对象.

点击这里给我发消息

10#
发表于 2012-1-4 10:04:52 | 只看该作者
子窗体的源对象只能是窗体、表或查询,可以建临时表或临时查询作为子窗体体的源对象
9#
 楼主| 发表于 2012-1-4 09:35:27 | 只看该作者
我在网上查了,是不是只能通过按下按钮建立一个临时的查询表,再显示在子窗体里面?
8#
 楼主| 发表于 2012-1-4 09:31:02 | 只看该作者
想实现让总表和考试表交叉显示在子窗体中,版主怎么实现呢?找了一通宵百度了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-3 10:19 , Processed in 0.293530 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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