设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 追加交叉表查询数据到一个完整的表里

[复制链接]
跳转到指定楼层
1#
发表于 2007-8-19 17:57:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时候做交叉表的时候知道表中有多少的字段,要计算字段与字段之间运算关系的时候,因为交叉表列数是不稳定的,所以我把得到的数据追加到一个固定的表\的字段中然后计算字段之间的关系,这个函数也适合用于追加表标题相同的数据到另一个表中
'参数1:strFromTable 为用交叉表得到数据的查询名称,strInto为你要添加数据的表
Public Function varInsertTable(strFromTable As String, strIntoTable As String)
''追加数据到一个完整的表里
Dim rst As DAO.Recordset
Dim fld As Field
Dim fldName As String
Set rst = CurrentDb.OpenRecordset(strFromTable, dbOpenDynaset)
For Each fld In rst.Fields
fldName = fldName & fld.Name & ","
Next
fldName = Left(fldName, Len(fldName) - 1)
''Debug.Print fldName
strSQL = "INSERT INTO " & strIntoTable & "(" & fldName & " ) SELECT " & fldName & " FROM " & strFromTable & ";"
''Debug.Print strSQL
DoCmd.RunSQL strSQL
End Function

[ 本帖最后由 Victor_Duane 于 2007-8-19 18:00 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-8-19 21:31:24 | 只看该作者
谢谢分享!!
改用Execute  执行查询,不会出现提示语句
3#
发表于 2010-3-19 19:46:58 | 只看该作者
我在2007下试用提示fld 与 rst.Fields类型不匹配,稍作修改如下,通过

'参数1:strFromTable 为用交叉表得到数据的查询名称,strInto为你要添加数据的表
Public Function varInsertTable(strFromTable As String, strIntoTable As String)
''追加数据到一个完整的表里
Dim rst As DAO.Recordset
Dim fld As Field
Dim fldName, strsql As String
Dim i_fld As Integer
Set rst = CurrentDb.OpenRecordset(strFromTable, dbOpenDynaset)
'For Each fld In rst.Fields
For i_fld = 0 To rst.Fields.Count - 1
'fldName = rst.Fields(i_fld).Name
fldName = fldName & rst.Fields(i_fld).Name & ","
Next
fldName = Left(fldName, Len(fldName) - 1)
''Debug.Print fldName
strsql = "INSERT INTO " & strIntoTable & "(" & fldName & " ) SELECT " & fldName & " FROM " & strFromTable & ";"
''Debug.Print strSQL
DoCmd.RunSQL strsql
End Function
4#
发表于 2010-9-8 10:53:51 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-27 06:20 , Processed in 0.144363 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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