Office中国论坛/Access中国论坛

标题: 如何实现一键数据导入ACCESS [打印本页]

作者: wangxy689    时间: 2011-4-2 06:56
标题: 如何实现一键数据导入ACCESS
本帖最后由 wangxy689 于 2011-7-2 22:57 编辑

我制作了个切换面板,上面要设置了个”数据导入“按钮,就是想将EXCEL中的数据导入到ACCESS中。要让这个按钮实现以下功能:
1、选择路径找到文件,并导入到access中,并命名“测试数据”;
2、将导入access表中的数据中的”预估金额“自动转换为数字格式
要求:如果能用宏实现最好;如果不能,请用VBA代码来实现。期盼!!!!
作者: gxy1000    时间: 2011-4-2 09:18
回复 wangxy689 的帖子

[attach]45248[/attach]你试试看有用吗?
作者: roych    时间: 2011-4-2 11:02
本帖最后由 roych 于 2011-4-2 11:06 编辑

回复 wangxy689 的帖子

1、如果自定义路径的话,应该引用office库之后用filedialog对象来处理。
2、转换格式时可以用转换函数来处理。不过个人认为,最佳方式是在表中设置好字段类型(请留意附件的Order字段类型和Excel文件中的Order单元格格式)。不得已时也可以这样考虑,先导入到临时表,再用转换函数追加到主表。
本应是你而不是我传上附件的……
[attach]45249[/attach]
附件的使用:把内置的excel文件放在任意地方,然后打开access文件,点击“导入数据”按钮来浏览打开即可。如果无法运行,则可能因为office库的缘故,请到VBE界面点击工具\引用重新引用office库(我的是11.0版本的),如下所示:
[attach]45250[/attach]


作者: wangxy689    时间: 2011-4-2 20:20
谢谢楼上的两位老师,感谢了。
作者: wangxy689    时间: 2011-4-2 20:21
回复 roych 的帖子

谢谢老师,在你的帮助下,学习ACCEESS的路上我不再孤单了,谢谢您老师。
作者: 红尘如烟    时间: 2011-4-3 22:36
数据导入一向是个比较让人挠头的问题,尤其是初期数据导入的时候,因为数据经常不符合规范,出状况比较多
作者: gxy1000    时间: 2011-4-4 10:35
回复 wangxy689 的帖子

我可不是老师!!我只是拿别人的实例举一反三而已!!
作者: zxlyf    时间: 2011-4-12 10:16
学习。
作者: dkl88    时间: 2011-4-12 15:21
这个帮了我大忙了。谢谢。
作者: dlchenfeng    时间: 2011-4-12 22:04
跟美女再学习一次.
作者: ceshi001    时间: 2012-5-26 21:54
本帖最后由 ceshi001 于 2012-5-26 21:56 编辑
roych 发表于 2011-4-2 11:02
回复 wangxy689 的帖子

1、如果自定义路径的话,应该引用office库之后用filedialog对象来处理。


请问如果目标文件是csv格式,这一行应该怎么改呢,我试了一下午都不行,
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "临时表", Me.路径.Value, True
作者: roych    时间: 2012-5-27 00:59
ceshi001 发表于 2012-5-26 21:54
请问如果目标文件是csv格式,这一行应该怎么改呢,我试了一下午都不行,
DoCmd.TransferSpreadshee ...

需要修改成:
DoCmd.TransferText acImportDelim, , "临时表", Me.路径.Value,True
这里的csv文件仅为逗号分隔的文本文件。
作者: ceshi001    时间: 2012-5-27 09:04
roych 发表于 2012-5-27 00:59
需要修改成:
DoCmd.TransferText acImportDelim, , "临时表", Me.路径.Value,True
这里的csv文件仅为逗 ...

哈哈,一大早的惊喜啊,谢谢版主~昨晚睡觉前就看到日常重复工作可以用这个工具来接近完美的可能性,太强了~在这还有两个小疑惑:
1、当目标待导入文件字段比“临时表”字段多,只需导入“临时表”字段,该如何实现?
2、目标为TXT文件,为分号分隔,无字段名称且标题行为一长整型(由文件生成时间与文件条数信息组成,实际内容由第二行开始),用TransferText可以吗?
我想要的最终结果,是这两个不同类型文件通过导入的方式分别成为我的两个数据表,之后围绕这两个表的查询就水到渠成了
作者: roych    时间: 2012-5-27 09:47
1、用这个工具必须要把临时表全部字段导入,除非写成ADO,在代码里输入特定字段进行追加。这里给一个按所选字段进行导出工具供参考使用:
[attach]49268[/attach]
2、可以用TransferText,但由于并非标准格式,因此临时表需要保留字段信息,且待导入表需要删除第一行后再进行导入。
作者: ceshi001    时间: 2012-5-28 14:07
本帖最后由 ceshi001 于 2012-5-28 20:49 编辑

[attach]49274[/attach]
roych 发表于 2012-5-27 09:47
1、用这个工具必须要把临时表全部字段导入,除非写成ADO,在代码里输入特定字段进行追加。这里给一个按所选 ...


汗,代码这么少也看不懂,更别说ADO了。我即使是全字段导入也遇到问题了,问题有点多啊,版主见谅~
1、当源文件字段超出临时表时,导入不成功;
2、源文件为csv格式,用记事本打开,id_nbr和c_nbr中的小于16位或非数字格式才能正常显示,其他均为科学计数,且有错误表生成;
3、每导入一次数据,即使清除后,ACCESS文件容量不断增加;
4、如将现有临时表字段设为固定,源文件含相关字段则导入,不含则跳过,如何用ADO应用实现?
作者: roych    时间: 2012-5-29 00:52
ceshi001 发表于 2012-5-28 14:07
汗,代码这么少也看不懂,更别说ADO了。我即使是全字段导入也遇到问题了,问题有点多啊,版主见谅~
1、 ...

1、字段超过预设字段必然会导致错误的产生。这个问题在上一个回帖里已经讲得很清楚了,需要用ADO或者其它方式来完成。
2、csv文件的格式问题是一定要处理的。建议身份证部分保存为文本(用Excel打开的时候就会发现数据的格式了)。
3、请在工具\选项\常规里勾选“关闭时压缩”,那么Access文件一般不会变化很大。
4、用“Select [字段1],[字段2],[字段3]……[字段N] From 表A”之类来设置。

但鉴于这个例子,建议不要用导入,而改成链接表会更方便好些。
[attach]49275[/attach]
这里暂时没有处理问题1.
作者: ceshi001    时间: 2012-5-29 23:35
roych 发表于 2012-5-29 00:52
1、字段超过预设字段必然会导致错误的产生。这个问题在上一个回帖里已经讲得很清楚了,需要用ADO或者其它 ...

先谢谢版主耐心的解答,除了类似证件号字段以科学计数显示,其他数据均可按全字段以链接表的形式展示且无须再指定格式,如此后续查询围绕链接表展开即可。只是随机输出几条原数据并据此完成所有工作的预期就由此削减了,因为用到的主要字段还是要以类似证件号来接入,可惜CSV是公司指定输出格式,咨询技术部,无须特别指定生成数据字段格式,不知道还有没其他办法?要不然依据链接表做的查询固然可以解决基本信息查询,但毕竟还是要以其他方式打开源数据表抽取相关字段做某些必要性验证,有点不爽哈~
作者: roych    时间: 2012-5-30 01:13
ceshi001 发表于 2012-5-29 23:35
先谢谢版主耐心的解答,除了类似证件号字段以科学计数显示,其他数据均可按全字段以链接表的形式展示且无 ...

如果贵司的数据库有接口的话,可以通过其它方式把数据追加到Access里的。科学计数法其实是不太能很清晰地表达到身份证号码的(后面的貌似都是0了)。像附件这个问题,也许只能通过ADO通过对格式的转换来完成了(TransferText无法完成这一点)。
作者: ceshi001    时间: 2012-6-6 22:32
roych 发表于 2012-5-30 01:13
如果贵司的数据库有接口的话,可以通过其它方式把数据追加到Access里的。科学计数法其实是不太能很清晰地 ...

[attach]49311[/attach]

有两个地方不懂,是哪一句代码把“临时表”转到“链接表”的?我即便把它删了。还有就是我想新建一个按钮,单击将TXT格式文件导进来,把代码拷过来将CSV改为TXT、“链接表”改为“链接表1”,但是没能按分号分段,应该如何设置?如果可以,若想比对CSV的Order字段与TXT的第一个字段内容是否一致(不一致时显示出来),该如何写查询?呵呵问题好多,我已经在开始看书了,但还是不明白,版主勉为其难再指点一下哈~
作者: ceshi001    时间: 2012-6-7 22:48
额。。。沉得好快哦,版主帮帮我啊
作者: ceshi001    时间: 2012-6-9 10:44
我加了一个链接规格,可以将文本文件按我的要求导入,但发现字段1和“链接表”的Order字段属性不一样,其实我是想要将“链接表”的Order字段也设置为文本来着,但默认就是数字,如此这两个字段就不能用不匹配项查询,除非将规格修改字段1为双精度型,但我总觉得会有问题。额,弹出窗口不要的话要删哪一句代码呢?{:soso_e138:}
作者: ceshi001    时间: 2012-6-9 14:19
本帖最后由 ceshi001 于 2012-6-9 14:20 编辑

哎呀,重复发了。。。
作者: xlb004    时间: 2015-12-5 11:44
qqqqqqqqqqqqqqqqqqq
作者: 清尘    时间: 2022-6-25 16:09
同求,谢谢,两位老师,
作者: 圆圆圈    时间: 2024-3-26 17:35
学习一下




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