Office中国论坛/Access中国论坛

标题: 交叉表查询结果怎样缩减空格 [打印本页]

作者: huanglucy    时间: 2011-12-11 15:50
标题: 交叉表查询结果怎样缩减空格
那位老师,帮我看看我做的菜单怎样缩减空格,从而让菜单更短,更合理,谢谢!
作者: Henry D. Sy    时间: 2011-12-11 16:17
try
ado
作者: roych    时间: 2011-12-11 21:32
不妨参考下猫版的:
打卡记录交叉查询的解决方法
作者: Henry D. Sy    时间: 2011-12-12 01:21
  1. Function IsTblExist(strTableName As String) As Boolean
  2.     Dim obj As AccessObject
  3.     IsTblExist = False
  4.     For Each obj In CurrentData.AllTables
  5.         If obj.Name = strTableName Then
  6.             IsTblExist = True
  7.             Exit For
  8.         End If
  9.     Next
  10. End Function
  11. Private Sub Command0_Click()
  12.     Dim rs As New ADODB.Recordset
  13.     Dim rst As New ADODB.Recordset
  14.     Dim tblrs As New ADODB.Recordset
  15.     Dim cnn As New ADODB.Connection
  16.     Dim intCount As Long
  17.     Dim sSQL As String
  18.     Dim strSQL As String
  19.     Dim strFiledName As String
  20.     Set cnn = CurrentProject.Connection
  21.     If IsTblExist("tbl") Then
  22.         DoCmd.DeleteObject acTable, "tbl"
  23.     End If
  24.     strSQL = "CREATE TABLE tbl(餐次 string,"
  25.     sSQL = "select distinct 周 from 一周菜单 order by 周 desc"
  26.     rs.Open sSQL, cnn, adOpenKeyset, adLockReadOnly
  27.     Do While Not rs.EOF
  28.         strSQL = strSQL & rs.Fields(0) & " string,"
  29.         rs.MoveNext
  30.     Loop
  31.     strSQL = Left(strSQL, Len(strSQL) - 1) & ")"
  32.     cnn.Execute strSQL
  33.     rs.MoveFirst
  34.     tblrs.Open "tbl", cnn, adOpenKeyset, adLockOptimistic
  35.     Do While Not rs.EOF
  36.         strFiledName = rs.Fields(0)
  37.         sSQL = "select 餐次,菜名称,周 from 一周菜单 where 周='" & strFiledName & "'"
  38.         rst.Open sSQL, cnn, adOpenKeyset, adLockReadOnly

  39.         Do While Not rst.EOF
  40.             If rst.Fields("周") = "周一" Then
  41.                 tblrs.AddNew
  42.                 tblrs.Fields("餐次") = rst.Fields("餐次")
  43.             ElseIf intCount = 0 Then
  44.                 tblrs.MoveFirst
  45.                 intCount = intCount + 1
  46.             Else
  47.                 tblrs.MoveNext
  48.             End If
  49.             tblrs.Fields(strFiledName) = rst.Fields("菜名称")
  50.             tblrs.Update
  51.             rst.MoveNext
  52.         Loop
  53.         rst.Close
  54.         rs.MoveNext
  55.     Loop
  56.     rs.Close
  57.     DoCmd.OpenTable "tbl", acViewNormal
  58.     Set rst = Nothing
  59.     Set tblrs = Nothing
  60.     Set rs = Nothing
  61.     Set cnn = Nothing
  62. End Sub
复制代码

作者: huanglucy    时间: 2011-12-12 07:38
非常感谢版主 Henry.D.Sy 给我这么多的帮助。
作者: huanglucy    时间: 2011-12-12 07:38
Henry D. Sy 发表于 2011-12-12 01:21

非常感谢 Henry.D.Sy 给我这么多的帮助。
作者: huanglucy    时间: 2011-12-12 08:35
roych 发表于 2011-12-11 21:32
不妨参考下猫版的:
打卡记录交叉查询的解决方法

谢谢roych
作者: huanglucy    时间: 2011-12-13 20:05
Henry D. Sy 发表于 2011-12-12 01:21

老师,我调试了你给我代码,但当我增加周四,或增加早餐时,程序就出错,能再帮我看看吗,我要求能任意增加餐次,如夜宵,早餐等,要周一到周日,谢谢!
作者: Henry D. Sy    时间: 2011-12-14 00:01
还是用家猫的方法吧!

查询A
  1. SELECT id, 餐次, 菜名称, 周, "菜单" & DCount("id","一周菜单","周='" & [周] & "' And 餐次='" & [餐次] & "' And id<=" & [id]) AS 菜单
  2. FROM 一周菜单
复制代码
  1. TRANSFORM Last(A.菜名称) AS 菜名称之最后一条记录
  2. SELECT A.餐次, A.周
  3. FROM A
  4. GROUP BY A.餐次, A.周
  5. PIVOT A.菜单;
复制代码

作者: huanglucy    时间: 2011-12-14 12:35
Henry D. Sy 发表于 2011-12-14 00:01
还是用家猫的方法吧!

查询A

非常谢谢老师,我在琢磨琢磨。
作者: huanglucy    时间: 2011-12-17 21:25
Henry D. Sy 发表于 2011-12-11 16:17
try
ado

老师好,我做了几个查询,实现了那个菜单,但是虽然每个查询运算都很快,但做了个选择查询后,查询速度很慢,超过一分钟,其中我用了Dcount,帮我看看好吗,怎样让速度块一些,谢谢!
作者: huanglucy    时间: 2011-12-24 20:18
Henry D. Sy 发表于 2011-12-11 16:17
try
ado

Henry D.Sy老师,我想在主窗体上做个按钮来刷新子窗体的数据,怎么做,谢谢!Refresh怎么用?
作者: Henry D. Sy    时间: 2011-12-24 22:27
.rrquery
作者: huanglucy    时间: 2011-12-24 22:59
我做了个入库订单的窗体,入库订单子窗体上有个货品字段,是个查阅字段,它的查阅下拉内容是个以入库订单上供应商为参数的查阅字段,但是当主窗体上供应商改变时,子窗体上的货品查阅内容不会随之改变,我用过requery,也用过refresh,都不行,帮我看看我的附件好吗?谢谢!




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