Проблема синтаксиса SQL CREATE TABLE - PullRequest
3 голосов
/ 18 июня 2019

У меня возникают трудности при определении проблемы синтаксиса в первом операторе 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 ]

1 голос
/ 18 июня 2019

Окончательное решение:

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")
0 голосов
/ 18 июня 2019

У вас уже есть синтаксис для выполнения этой работы в третьем операторе, хотя он не совсем корректен.

Первая строка должна быть db.Execute ("SELECT DISTINCT <list of fields> INTO tTemp FROM JQHistory")

Третье утверждение должно быть: db.Execute ("INSERT INTO JQHistory SELECT <list of fields> FROM tTemp")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...