Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2015, 18:01   #1
ЛюбительПИ
Пользователь
 
Регистрация: 26.07.2008
Сообщений: 17
По умолчанию Как одним запросом добавить копию записи в таблицу?

В Access 2003 запрос на добавление работал, а при переходе на 2010 не хочет, "жалуется" на не уникальность ключевого поля.
Я знаю, что эту проблему можно решить двумя-тремя запросами:
- копировать нужную запись из исходной таблицы во временную таблицу;
- изменить ключевое поле временной таблицы на (DMax + 1);
- добавить исправленную временную таблицу (одна запись) в исходную таблицу.
Как-то очень громоздко, Вы не находите?
Есть ли хитрый трюк, который бы одним запросом на добавление таблицы обманул упрямый компьютер?
ЛюбительПИ вне форума Ответить с цитированием
Старый 27.10.2015, 19:03   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если ключевое поле в приемнике инкрементное, то убрать из списка SELECT. Иначе там должно быть уникальное значение. И не важно 2010 или 2003
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.10.2015, 19:29   #3
ЛюбительПИ
Пользователь
 
Регистрация: 26.07.2008
Сообщений: 17
По умолчанию

Завтра надо будет попробовать убрать это поле из SELECT
В любом случае - большое спасибо!
ЛюбительПИ вне форума Ответить с цитированием
Старый 28.10.2015, 09:52   #4
ЛюбительПИ
Пользователь
 
Регистрация: 26.07.2008
Сообщений: 17
По умолчанию

Убрал ключевое поле из SELECT, опишу результат:
запрос на добавление срабатывает - все обычные поля копируются, а ключевое поле автоматически получает первое бОльшее уникальное значение.
Всё О.К., а где же ложка дёгтя? Вот и она...
При повторных попытках - запрос перестаёт работать ("жалуется" на не уникальность) до тех пор пока я не сжимаю базу. После сжатия - один нормальный запуск гарантирован. И опять, и по кругу: - добавление - сжатие - добавление - сжатие -
Есть ли у кого-нибудь какие-нибудь предложения по выходу из замкнутого круга?
ЛюбительПИ вне форума Ответить с цитированием
Старый 28.10.2015, 10:22   #5
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Такого не может быть, прикрепите сюда базу и запрос, и покажем где у вас ошибка.
come-on вне форума Ответить с цитированием
Старый 28.10.2015, 10:28   #6
ЛюбительПИ
Пользователь
 
Регистрация: 26.07.2008
Сообщений: 17
По умолчанию

База у меня очень большая, делалась годами и продолжает развиваться...
Я попробую сделать маленький демо-вариант, если получится - его пришлю.
Большое спасибо за внимание.
ЛюбительПИ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переименовать таблицу SQL запросом? Dux SQL, базы данных 9 03.02.2015 17:00
Подсчет одним запросом. Возможно ли? Majestio SQL, базы данных 8 28.10.2014 15:54
выборка одним запросом limon142 PHP 1 25.05.2014 20:18
Добавить строку в longtext одним Update запросом Alar SQL, базы данных 1 02.02.2011 18:11
BETWEEN и LIKE одним запросом Pinya SQL, базы данных 9 19.08.2008 11:30