2017-01-24 5 views
0

Я пытаюсь приблизиться к MS Access через VBA. Один из звонков, который я хотел бы сделать, - это вставка из последнего поставленного номера. Это нужно будет выбрать последнее число, которое было введено, и повторить его с помощью одного. Я могу просто разместить это в цикле for, чтобы создать 30 из них, однако, я просто пытаюсь получить синтаксис SQL правильно в этот момент. Кажется, что в вставке выбора есть проблема. Ошибка, которую я получаю, - «Ввод запроса должен содержать хотя бы одну таблицу или запрос».Запрос доступа MS для вставки последнего номера

Dim StrSSQL As String 

StrSQL = "INSERT INTO MyQueryTable (MYNUMBER) VALUES((Select top 1 MYNUMBER + 1 from MyQueryTable order by MYNUMBER desc));" 

DoCmd.SetWarnings False 
DoCmd.RunSQL StrSQL 
DoCmd.SetWarnings True 

Однако, простая вставка как "INSERT INTO MyQueryTable (MYNUMBER) VALUES(999)" работает нормально.

+1

Столбцы FYI AutoIncrement предназначены для этого и предлагают преимущество, не вызывая серьезных проблем с параллелизмом. –

+1

('NUMBER' является зарезервированным словом, поэтому избегайте его как' [NUMBER] '.) –

+0

Правильно, однако это число не нуждается в этом, так как оно может меняться в любой ручной вставке. (Не уникальный идентификатор). Используя этот макрос, который я установил на месте, должен сгенерировать, скажем, 50 вставок поверх последнего использованного числа. Если, возможно, нет эффективного способа использования автоматического приращения для уникальных номеров? – Brad

ответ

3

Try:

INSERT INTO MyQueryTable (MyNumber) 
SELECT MAX(MyNumber)+1 
FROM MyQueryTable 

https://msdn.microsoft.com/en-us/library/bb243852(v=office.12).aspx

Edit: Просто заметил @Alex К. написал аналогичный в комментариях - извините, не видел его.

+0

Очень хороший ответ. Это сработало для меня. Кроме того, что касается моего оригинального сообщения, то также удаляли «Ценности» и «Скобки». – Brad

Смежные вопросы