Office中国论坛/Access中国论坛

标题: 导入并自动编号 [打印本页]

作者: ycxchen    时间: 2008-8-19 15:11
标题: 导入并自动编号
在例子中,C店为总店,A、B店为分店,现C店要将A店导出的“A店货物”表导入,以便于总店汇总。“A店货物”表的记录如下:
ID      商场ID                    日期
货物
  1           1           2008-01-03            
白糖
  2           1          2008-01-16              
饼干
  3           1          2008-01-20              
手巾


C店的“商场进货”表记录如下:
ID      商场ID               日期
货物
  1        A                2008-01-03            
白糖
  2        B                2008-01-03             白糖
  3        B                2008-01-13            饮料
4         B                 2008-01-15            大米
5        C                2008-01-11             酱油
但在导入时,因导出的“A店货物”表与C店的“商场进货”表中的ID为2、3的相互重复,不能导入,而我的目的是想将A店导出的“A店货物”表导入到C店的“商场进货”表后,
其记录能重新编号,排序如下:
ID      商场ID               日期
货物
  1        A                2008-01-03            
白糖
  2        A              2008-01-16               饼干
  3       A                 2008-01-20              
手巾


4         B                2008-01-03              白糖
5        B                2008-01-13               饮料
6        B                 2008-01-15             大米
7        C                2008-01-11              酱油
请问,如何写导入语句才能导入数据并能重新编号?盼大家指教!
[attach]31640[/attach]

作者: heqing3000    时间: 2008-8-19 15:16
首先要明白重新编号的目的, 用来干嘛, 给我的感觉重新编号对你的数据没帮助.
作者: ycxchen    时间: 2008-8-19 15:22
自动编号对在查询中运用FIRST等函数有用,请帮忙
作者: liwen    时间: 2008-8-19 15:43
自动编号字段在导入时不需导入,系统会自动添加。
作者: ycxchen    时间: 2008-8-19 16:06
但导入时提示主键重复,不能导入,如何解决?
作者: ycxchen    时间: 2008-8-19 20:03
各位,帮忙一下好呀
作者: ycxchen    时间: 2008-8-19 23:32
问题真的这么难?
作者: beenet    时间: 2008-8-20 02:18
ID不需要导入
作者: kevin5433    时间: 2008-8-20 04:52
ID不需要导入,  你的"商场ID"就可以用来区别各个分店了, ID其实对你没什么用,
作者: ycxchen    时间: 2008-8-20 08:35
ID有作用的,对以后检查进货记录的正确性或在查询中运用LAST等函数有很大的作用。A店导出的表现为XLS格式,有办法按要求导入数据吗?
另,如果不导入ID,那导入代码如何写?我对VBA是初学者,盼帮我修改代码,谢谢。
作者: liwen    时间: 2008-8-20 16:44
DoCmd.TransferSpreadsheet acImport, 8, "商场进货表", Application.CurrentProject.Path & "\A店进货.XLS", True, "B:D"
作者: ycxchen    时间: 2008-8-20 22:41
十分感谢liwen版主的指教!现就您修改的代码向您请教三个方面的问题:
1、access2003在引用excel模块时,DoCmd.TransferSpreadsheet acImport, 8, "商场进货表", Application.CurrentProject.Path & "\A店进货.XLS", True, "B"这句话中的“8”为何不是“10”或“11”?
2、DoCmd.TransferSpreadsheet acImport, 8, "商场进货表", Application.CurrentProject.Path & "\A店进货.XLS", True, "B"这句话中的“B:D”是什么意思?
3、导入数据后如下记录重复,如何去除重复的数据?
A店   2008-1-3     白糖
盼继续指点,不胜感谢!
作者: ycxchen    时间: 2008-8-21 11:37
我原来回贴时并没有在句子中加入表情图标的,为何在12楼的会自动加入了?
作者: liwen    时间: 2008-8-21 15:10
8是指导入的表格类型即类型的默认值“Microsoft Excel 8-10”,如不清楚表格类型,可通过在宏中设置TransferSpreadsheet再转换成代码(将宏另存为模块)。
“B:D“是指excel表格的范围B列到D列
重复记录除非将那三项都设定主键不允许重复外,在导入时如果不想重复导入,只能借助临时表,先判断再导入。
对于己经重复导入的,你可先搜索一下论坛或网上的相关文章。



本论去默认的是开启表情符号代码,可通过旁边的“禁用Smilies"来禁用表情图标。

[ 本帖最后由 liwen 于 2008-8-21 15:13 编辑 ]
作者: ycxchen    时间: 2008-8-21 15:54
十分感谢版主的指教! 我再请教一个问题:
在原来语句“DoCmd.TransferSpreadsheet acImport, 11, "商场进货表", Me.xls_path, True,”中,为何用“Application.CurrentProject.Path & "\A店进货.XLS", ”代替“Me.xls_path?”这样做有好处?
作者: liwen    时间: 2008-8-21 16:47
不必这样代替,只是我写代码时没注意你是选取的单个文件导入。
但如果你想一次导入文件夹下的所有EXCEL文件可以考虑这样的方式。
作者: ycxchen    时间: 2008-8-21 17:57
多谢版主!




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