Office中国论坛/Access中国论坛

标题: 请教高手!导入表如何与原表合并? [打印本页]

作者: 程研    时间: 2010-9-10 09:46
标题: 请教高手!导入表如何与原表合并?
请教高手!导入表1如何与原表1合并?
作者: hjb016    时间: 2010-9-10 09:57
可以直接复制过去的.
作者: 程研    时间: 2010-9-10 19:42
回复 hjb016 的帖子

谢谢!这个办法有了,但想做一个按钮实现如何实现?
   
作者: todaynew    时间: 2010-9-10 20:24
本帖最后由 todaynew 于 2010-9-10 20:25 编辑

试试这个子程序:

Sub MyInsert(tbname as string,Stbname as string,SPath as string)
'功能:将外部表数据追加到目标表中
'参数: tbname--目标表名称字符串
‘       Stbname--源表名称字符串
'       Spath--原表所在数据库完成文件名(含路径)
'示例: MyInsert  "学生表","学生资料","F:\成绩管理系统.mdb"
dim ssql as string
ssql="INSERT INTO " & tbname
ssql=ssql & " select * from " & stbname
ssql=ssql & " in " & Spath
docmd.runsql ssql
end sub

作者: 程研    时间: 2010-9-13 12:03
回复 todaynew 的帖子
好的,试试。感谢版主了!

   
作者: 程研    时间: 2010-9-13 12:06
回复 hjb016 的帖子
这种办法试过,但如何解决重复项信息?查询重复项,再删除?想做个按钮,一次搞定!指教帮助一下!

   
作者: hjb016    时间: 2010-9-13 13:03
dim ssql as string
dim strWhere as string
dim rs as dao.recordset
on error resume next   '这个必须加,这样如果记录重复,自动循环下一条记录
set rs=currentdb.openrecordset("select * from " & stbname)

ssql="INSERT INTO 目标表"
ssql=ssql & " select * from 源表 "
do While Not Rs.EOF

    strWhere="条件"   '比如某个主关键字=当前记录的主关键字值.
    docmd.runsql ssql & strWhere     
    Rs.MoveNext
Loop
rs.close
set rs=nothing
作者: todaynew    时间: 2010-9-13 13:53
本帖最后由 todaynew 于 2010-9-13 13:54 编辑
回复
这种办法试过,但如何解决重复项信息?查询重复项,再删除?想做个按钮,一次搞定!指教帮助一下!
...
程研 发表于 2010-9-13 12:06



Sub MyInsert(tbname as string,Stbname as string,SPath as string,WH as string)
'功能:将外部表数据追加到目标表中
'参数: tbname--目标表名称字符串
'      Stbname--源表名称字符串
'      Spath--原表所在数据库完成文件名(含路径)
'      WH--两表比较字数串
'示例: MyInsert  "学生表","学生资料","F:\成绩管理系统.mdb","b.姓名=a.姓名 and b.性别=a.性别"
dim ssql as string
ssql="INSERT INTO " & tbname
ssql=ssql & " select * from " & stbname & " as a"
ssql=ssql & " in " & Spath
ssql=ssql & " where not EXISTS (select * from " & tbname & " as b where " & WH & " )"
docmd.runsql ssql
end sub


作者: roych    时间: 2010-9-13 14:00
按我的思路来说,我更愿意把导入表直接导入到某个临时表(T_Tem)里,然后追加到基础表里,再刷新数据。
按钮嘛,设置一个宏,包含:
1、SetWarning
选项:否(为防止追加和删除时弹出对话框)
2、TransferSpreadsheet
选项:
迁移类型:导入;电子表格类型:Microsoft Excel 8-10;表名称:T_Tem;
文件名称:C:\导入表.xls(这里假定导入表路径在C盘,如果经常变动,则建议把路径放在根目录下,改为:CurrentProject.path&"\导入表.xls“)
字段:否(T_Tem表里已经有字段了,因此选否)
3、运行查询(这一点,你自己看书了噢,这里不再示例)
OpenQuery
(查询表名:下拉选框里选择;其余默认即可)
4、RunSQL(DELETE T_Tem.* FROM T_Tem;)
(清空临时表数据,方便下一次工作)
5、Msgbox
(消息:已成功导入数据;标题:导数成功,其余默认)
作者: 程研    时间: 2010-9-13 17:12
回复 roych 的帖子

好的!多谢!
   
作者: liuxiangyucdpc    时间: 2012-8-16 19:15
roych 发表于 2010-9-13 14:00
按我的思路来说,我更愿意把导入表直接导入到某个临时表(T_Tem)里,然后追加到基础表里,再刷新数据。
按钮 ...

稀饭这个方法,有才
作者: mackle    时间: 2015-3-5 17:08
长知识了




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