2015-02-05 4 views
0

мне нужно сделать ниже обновления через макросы,необходимо обновить таблицу БД с помощью макросов

If tbname = "PARTY" Then 
Dim ssql As String 
ssql = "Update PARTY Set PARTY_ID= (SELECT (max(PARTY_ID)+1) FROM PARTY) WHERE PARTY_ID ='DUMMY' 
DB.Execute ssql, 64 
End If 

Я получаю эту ошибку, во время работы над заявлением.

Код ошибки: 1093. Вы не можете указать целевую таблицу «ПАРТИЯ» для обновления в ЕКОМ 0.000 сек

Есть ли другой способ обновления max(party_id)+1 в строке, имеющей party_id, как «DUMMY»

+0

Вы забыли закрывающую кавычку в вашей декларации ssql. – Vogel612

ответ

0

Ошибка, возникающая у вас в SQL. Вы не должны использовать подзапрос здесь. Из-о-о-о-о, у вас есть полный бык, потому что Update PARTY подразумевает From PARTY

Кроме того, вы, кажется, подсчитываете что-то странное, так как вы получаете «недопустимое использование групповой функции» -error. Короткий показывает this stackoverflow question, прибегая к помощи предлагая вам следует использовать HAVING вместо WHERE

Исправление константы выглядит просто:

ssql = "Update PARTY set PARTY_IT=(max(PARTY_ID) + 1) HAVING PARTY_ID='DUMMY'" 
+0

Update ПАРТИЯ Set PARTY_ID = (MAX (PARTY_ID * 1) +1) WHERE PARTY_ID = '10083' его ошибка метания, как "недопустимое использование функции группы" – Anand

+0

я попытался это и его работу :) ssql = "Обновить PARTY Установите PARTY_ID = (SELECT MAX (PARTY_ID * 1) +1 FROM (SELECT * FROM PARTY) AS PARTY_ID) WHERE PARTY_ID = 'DUMMY' " – Anand

+0

отредактированный ответ. Ваш «рабочий» SQL-запрос работает от удачной ИМО ... – Vogel612