Excel数据导入Access时的问题?(200分)

  • 主题发起人 主题发起人 kid
  • 开始时间 开始时间
K

kid

Unregistered / Unconfirmed
GUEST, unregistred user!
Access数据库:cardsdb.mdb,数据表:cardstable,表字段:userid,username,password;
Excel表:工作表Sheet1,内容:
userid username password
1000 lili 111
...

我按网络上找到方法,这样导入数据:
'INSERT INTO CardsTable (msisdn, password, cardtype) SELECT msisdn, password, cardtype FROM [excel 8.0;database=d:/test.xls].[Sheet1$]';
执行结果出错,提示 INSERT 语句语法错误。试了好久发现把语句里字段名password 改为其他名称如psw,数据表里的password也改为psw,就能成功执行并到预期的结果。
问题虽解决但不明白为什么这样用法里用password就会出错??

另外还有一个例子也是用这种方法从excel导入access,出现的问题是:运行程序后,第一次执行这种方法会出错,提示“创建文件失败”,此后执行就不会出错也得到预期的结果。为什么会出现这样的情况。
 
password 是关键字吧,试过 [password] 了吗?
 
1。'INSERT INTO CardsTable (msisdn, password, cardtype) SELECT msisdn, password, cardtype FROM [excel 8.0;database=d:/test.xls].[Sheet1$]';
执行结果出错,提示 INSERT 语句语法错误。试了好久发现把语句里字段名password 改为其他名称如psw,数据表里的password也改为psw,就能成功执行并到预期的结果。
问题虽解决但不明白为什么这样用法里用password就会出错??
--------->>>一般为防止字段名与数据库系统的关键字出现冲突或不被正确识别,可以给字段名加外[],比如你的语句可以写为:
'INSERT INTO CardsTable ([msisdn], [password], [cardtype]) SELECT [msisdn], [password], [cardtype] FROM [excel 8.0;database=d:/test.xls].[Sheet1$]';

2。另外还有一个例子也是用这种方法从excel导入access,出现的问题是:运行程序后,第一次执行这种方法会出错,提示“创建文件失败”,此后执行就不会出错也得到预期的结果。为什么会出现这样的情况
-----------》》》
如果你用上述insert into ... select 格式的SQL语句,应该不会存在创建文件的问题;除非你的目标表还没有建立。
如果你使用了Select ... into 语句的话,该语句的一次执行是要新建一个表名CardsTable并把数据存入,如果多次执行时,该表已经存在,自然无法新建一个同名表,肯定是“创建文件失败”。此时的处理方法:一是判断目标表是否已存在,如果存在则先删除之再执行该插入语句;二是改变SQL语句,判断目标表是否存在,如果存在,就追加插入数据而不是新建插入数据。
 
to bjamn,liqj:多谢,如你们所说。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
751
SUNSTONE的Delphi笔记
S
后退
顶部