SQL“创建表”语法问题

时间:2019-06-18 09:22:14

标签: sql excel vba ms-access

我在第一个CREATE TABLE语句中难以识别语法问题,可惜我无法识别问题。

我收到以下VBA错误:

  

运行时错误“ 3290”

目标是根据特定列中的值将不同的数据移动到新表中。之后,原始表将被清除,并且每个不同的值将再次插入。临时表随后将被删除。

' ** Issue here ** '
db.Execute ("CREATE TABLE tTemp AS (SELECT DISTINCT History_Date, Sedol, Selskabsnavn, MarketCap, JQScore, JQ_Rank, Value_Rank, Quality_Rank, Momentum_Rank FROM JQHistory)")

db.Execute ("DELETE * FROM JQHistory")
db.Execute ("SELECT * FROM tTemp INTO JQHistory")
db.Execute ("DROP TABLE tTemp")

此代码正在MS Excel中运行。

2 个答案:

答案 0 :(得分:1)

最终解决方案:

db.Execute ("SELECT DISTINCT History_Date, Sedol, Selskabsnavn, MarketCap, JQScore, JQ_Rank, Value_Rank, Quality_Rank, Momentum_Rank INTO tTemp FROM JQHISTORY ORDER BY History_Date")
db.Execute ("DELETE * FROM JQHistory")
db.Execute ("ALTER TABLE JQHistory ALTER COLUMN Id COUNTER (1, 1)")
db.Execute ("INSERT INTO JQHistory SELECT * FROM tTemp")
db.Execute ("DROP TABLE tTemp")

答案 1 :(得分:0)

尽管不太正确,但您已经在第三条语句中有了使它起作用的语法。

第一行应该是 db.Execute ("SELECT DISTINCT <list of fields> INTO tTemp FROM JQHistory")

第三条陈述应为: db.Execute ("INSERT INTO JQHistory SELECT <list of fields> FROM tTemp")