Ваш первый столбец - это поле TEXT
с именем ID. Однако ваше первое вставленное значение - datetime, Now()
. В запросах на добавление столбцы необходимо выравнивать по позициям или по имени. В идеале вы всегда должны указывать столбцы в предложении INSERT INTO
и не полагаться на неявный порядок столбцов.
Следовательно, укажите необходимый столбец datetime в качестве позиции первого вставленного значения. Кроме того, рассмотрите возможность использования сохраненного запроса доступа, а не временного querydef, чтобы избежать разрывов строк и конкатенации в VBA.
SQL (сохранить как объект запроса; параметры переименованы, чтобы избежать путаница со столбцами)
PARAMETERS [id_prm] Text(255), [class_prm] Text(255), [exchange_prm] Text(255),
[symbol_prm] Text(255), [name]_prm] Text(255), [status_prm] Text(255),
[tradeable_prm] Text(255), [marginable_prm] Text(255),
[shortable_prm] Text(255), [easy_to_borrow_prm] Text(255);
INSERT INTO WRK_ALP_TICKER ([CreatedDatetime], [id], [class], [exchange], [symbol], [name],
[status], [tradeable], [marginable], [shortable], [easy_to_borrow])
VALUES (Now(), [id_prm], [class_prm], [exchange_prm], [symbol_prm], [name_prm], [status_prm],
[tradeable_prm], [marginable_prm], [shortable_prm], [easy_to_borrow_prm])
VBA
For Each element In p
Set qdef = db.QueryDefs("mySavedInsertQuery")
qdef![id_prm] = element("id")
qdef![class_prm] = element("class")
qdef![exchange_prm] = element("exchange")
qdef![symbol_prm] = element("symbol")
qdef![Name_prm] = element("name")
qdef![status_prm] = element("status")
qdef![tradeable_prm] = element("tradeable")
qdef![marginable_prm] = element("marginable")
qdef![shortable_prm] = element("shortable")
qdef![easy_to_borrow_prm] = element("easy_to_borrow")
qdef.Execute dbFailOnError
Next element