Access中VBA代码执行后无结果,未生成表或查询求助
解决Access VBA代码执行后无可见表/查询的问题
你的代码其实已经成功执行了交叉查询逻辑,但问题在于OpenRecordset只是在内存中创建了一个临时的记录集对象——它不会自动在Access的导航窗格里生成可查看的表或保存的查询,这就是你看不到结果的核心原因。
下面给你两种实用的解决方案,按需选择:
方案1:创建保存的交叉查询(导航窗格可见)
修改代码,用CreateQueryDef把交叉查询保存成一个命名查询,这样你就能在Access里直接查看、编辑或复用这个查询了:
Option Compare Database Sub TransformX1() Dim strSQL As String Dim dbs As DAO.Database Set dbs = CurrentDb strSQL = "" strSQL = strSQL & "TRANSFORM Sum(BAR1.[TON]) AS SumOfTON " & vbCrLf strSQL = strSQL & "SELECT BAR1.[MABD], Sum(BAR1.[TON]) AS [Total Of TON] " & vbCrLf strSQL = strSQL & "FROM BAR1 " & vbCrLf strSQL = strSQL & "WHERE (((BAR1.[MABD])<1300) AND ((BAR1.[MAGH])<1300) AND ((BAR1.G)=1)) " & vbCrLf strSQL = strSQL & "GROUP BY BAR1.[MABD] " & vbCrLf strSQL = strSQL & "PIVOT BAR1.[MAGH];" ' 先删除已存在的同名查询(避免报错) On Error Resume Next dbs.QueryDefs.Delete "CrossQuery_BAR1" On Error GoTo 0 ' 创建并保存查询 dbs.CreateQueryDef "CrossQuery_BAR1", strSQL MsgBox "交叉查询已创建完成,可在导航窗格中找到!" End Sub
方案2:将查询结果生成新表
如果需要把结果永久保存成数据表,可修改SQL为SELECT...INTO格式,直接生成新表:
Option Compare Database Sub TransformX1_ToTable() Dim strSQL As String Dim dbs As DAO.Database Set dbs = CurrentDb strSQL = "" strSQL = strSQL & "SELECT * INTO CrossTable_BAR1 " & vbCrLf strSQL = strSQL & "FROM (" & vbCrLf strSQL = strSQL & " TRANSFORM Sum(BAR1.[TON]) AS SumOfTON " & vbCrLf strSQL = strSQL & " SELECT BAR1.[MABD], Sum(BAR1.[TON]) AS [Total Of TON] " & vbCrLf strSQL = strSQL & " FROM BAR1 " & vbCrLf strSQL = strSQL & " WHERE (((BAR1.[MABD])<1300) AND ((BAR1.[MAGH])<1300) AND ((BAR1.G)=1)) " & vbCrLf strSQL = strSQL & " GROUP BY BAR1.[MABD] " & vbCrLf strSQL = strSQL & " PIVOT BAR1.[MAGH]" & vbCrLf strSQL = strSQL & ");" ' 执行SQL创建表,出错时抛出提示 dbs.Execute strSQL, dbFailOnError MsgBox "结果表已创建完成,可在导航窗格中找到!" End Sub
额外调试小技巧
如果你只是想临时查看记录集内容,不需要保存成对象,可以在Set rst = dbs.OpenRecordset(strSQL)后添加这段代码,然后打开VBA编辑器的立即窗口(Ctrl+G)查看输出:
If Not rst.EOF Then rst.MoveFirst Do Until rst.EOF Debug.Print rst!MABD, rst![Total Of TON] rst.MoveNext Loop End If rst.Close Set rst = Nothing
内容的提问来源于stack exchange,提问作者Mojtaba
相关产品推荐
相关产品推荐

