设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1942|回复: 4
打印 上一主题 下一主题

[ADO/DAO] 这题,真系难........,红尘如烟又不在.....

[复制链接]
跳转到指定楼层
1#
发表于 2009-6-24 20:23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Private Sub Command43_Click()
Dim rsm As ADODB.Recordset
Dim mysql As String, aq As String, AAA总计 As String
Dim tyu As String
Set rsm = New ADODB.Recordset

'AAA总计是新增的字段名
If IsNull(Me.Combo12) Then Exit Sub
tyu = Combo12.Value
mysql = " TRANSFORM Sum(末归类明细.AAA)
AS " & "AAA
之总计" & _


" SELECT
末归类明细.日期, 末归类明细.凭证号, Sum(末归类明细.AAA) AS " & " AAA总计 " & _


" FROM
末归类明细" & _


" WHERE
总账科目 ='" & tyu & "'" & _


" GROUP BY
末归类明细.日期, 末归类明细.凭证号 " & _


" PIVOT
末归类明细.明细科目"


'" INTO aq " & _

rsm.Open mysql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
mm = rsm.RecordCount
MsgBox " '" & mm, vbInformation

上述代码是创建一个有参数的交叉表查询,测试通过了,我的问题是把这个有参数的交叉表查询命名,再以此查询生成表,表名是组合框选定的值,有什么好法???请问红尘如烟,帮帮则个。这个任务在SQL中很好解决,用代码不知行不?????

Dim rsmm As ADODB.Recordset
Dim mysqln As String, aqq As String
Set rsmm = New ADODB.Recordset
mysqln = " SELECT mysql.日期,mysql.凭证号,mysql.AAA总计 " & _

" INTO aqq " & _


" FROM mysql"



rsmm.Open mysqln, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

DoCmd.Rename Me.Combo12 & "
明细帐", acTable, "aqq"

End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2009-6-24 22:13:53 | 只看该作者
答案:   综合运用DAO与ADO
Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim strSQL As String
Dim tyu As String
tyu = Combo12.Value
   Set dbs = CurrentDb
   strSQL = " TRANSFORM Sum(末归类明细.AAA)  AS " & "AAA之总计" & _
         " SELECT 末归类明细.日期, 末归类明细.凭证号, 末归类明细.摘要, Sum(末归类明细.AAA) AS [总计 AAA] " & _
         " FROM   末归类明细" & _
         " WHERE  总账科目 ='" & tyu & "'" & _
         " GROUP BY 末归类明细.日期, 末归类明细.凭证号, 末归类明细.摘要 " & _
         " PIVOT 末归类明细.明细科目"

Set qdf = dbs.CreateQueryDef("五项原则", strSQL)

           Dim rsm As ADODB.Recordset
          Dim mysql As String, aq As String
          Set rsm = New ADODB.Recordset

           tyu = Combo12.Value
           mysql = " SELECT *" & _
           " INTO aq " & _
           " FROM 五项原则 "
rsm.Open mysql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'更改表名"aq"为组合框的值"tyu产"
DoCmd.Rename tyu & "明细帐", acTable, "aq"
3#
发表于 2009-6-24 23:31:23 | 只看该作者
本帖最后由 红尘如烟 于 2009-6-24 23:32 编辑

不用那么麻烦,下面这几句代码就行了:
Private Sub Command0_Click()
    Dim strSQL As String

    strSQL = " TRANSFORM Sum(AAA) AS AAA之总计" & _
                  " SELECT        日期, 凭证号, 摘要, Sum(AAA) AS [总计 AAA] " & _
                  " FROM           末归类明细" & _
                  " WHERE        总账科目 ='" & 条件文本框 & "'" & _
                  " GROUP BY    日期, 凭证号, 摘要 " & _
                  " PIVOT          明细科目"
    CurrentDb.CreateQueryDef "交叉表查询", strSQL

    strSQL = "SELECT * INTO " & 表名组合框 & " FROM 交叉表查询"
    CurrentDb.Execute strSQL
End Sub
4#
 楼主| 发表于 2009-6-25 12:26:49 | 只看该作者
高手就是高!!!
但会有一问题,每次生新表时,如有相同名的表,不会复盖它,面是停止执行,因此每次执行前还要删除作为过程使用的查询和已存在的表,当然这不难了.
非常感谢红尘如烟!!!!!!!!
5#
发表于 2010-3-14 00:04:43 | 只看该作者
高手就是高!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 20:08 , Processed in 0.083391 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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