Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 145

UPDATE запрос

28.07.2008, 13:49. Показов 8798. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такая вот проблемка хочу проапдейтить табличку, но не просто вставить значение, а найти его, а потом уже вставить.
Попробовал следущую конструкцию:

SQL
1
2
UPDATE ChangedSinhron SET ChangedSinhron.ChanRep_Num = 2, ChangedSinhron.ChanOrder_Key = (SELECT MAX(ChangedOrders.Key) AS MaxOfKey FROM ChangedOrders)
WHERE ((ChangedSinhron.Changed_Key) IN (SELECT ForPrintSelectChanges.MaxOfChanged_Key FROM ForPrintSelectChanges WHERE (((ForPrintSelectChanges.Nomer)='120AZ') AND ((ForPrintSelectChanges.Color)='yellow'))));
не идёт(, т.е. запрос составился, прошёл, но на запуск пишет, что не хочет апдейтить, видиш ли запрос какой то не такой(

Поможите!!!

Заранее спасибо
Sfagnum
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2008, 13:49
Ответы с готовыми решениями:

Запрос UPDATE
Есть база под названием Base, с полями номер(счетчик), NameB(текстовый), Status(текстовый), Adr(текстовый), Srvklad(числовой),...

Запрос на UPDATE
Добрый день всем!!!!!! Помогите пожалуйста с таким запросом. UPDATE SET .Сумма = !=!; В итоге мне надо чтобы Сумма с доходов...

Запрос Update
Нужен легкий запрос на update. Мне в таблице нужно изменить процент налог на вклад физических лиц. Например у Петрова налог равен 20% Нужно...

7
Boma
29.07.2008, 16:38
Привет!
Вся штука в том, что SQL Access не поддерживает подчиненные запросы в инструкции UPDATE. Поэтому, сложные выборки надо реализовывать с помощью объединений JOIN.
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 145
29.07.2008, 16:56  [ТС]
Вот млин, я подозревал что то подобное, но на предложенную Вами конструкцию у меня не хватает чего то, наверное в голове

Всё равно спаибо.

PS если есть возможность не могли бы Вы показать на данном выражении как это сделать?

Заранее спасибо.
0
Boma
29.07.2008, 20:46
Поскольку я не знаю всего контекста, могу лишь попробовать переписать 'в лоб' связи между таблицами.
Ваш селективный запрос должен быть, вроде, таким:

SQL
1
2
3
SELECT ChangedSinhron.ChanRep_Num, ChangedSinhron.ChanOrder_Key
FROM ChangedSinhron INNER JOIN ForPrintSelectChanges ON ChangedSinhron.Changed_Key = ForPrintSelectChanges.MaxOfChanged_Key
WHERE ForPrintSelectChanges.Nomer='120AZ' AND ForPrintSelectChanges.Color)='yellow'
Соответственно, его можно превратить в абдейтовый:

SQL
1
2
UPDATE ChangedSinhron INNER JOIN ForPrintSelectChanges ON ChangedSinhron.Changed_Key = ForPrintSelectChanges.MaxOfChanged_Key
SET ChangedSinhron.ChanRep_Num = 2,...
Только вот у Вас используется для абдейта агрегирующая функция MAX. Поскольку я не знаю, как связаны между собой таблицы селективного запроса и таблица для высчитывания этого MAX (т.е. таблица ChangedOrders), то и не могу ничего про нее сказать. Видимо, здесь придется отдельным запросом считать MAX, а потом все вместе это связывать.
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 145
30.07.2008, 11:36  [ТС]
Спасибо за то что ответили, я в принципе и сделал так как Вы советуете в конце, только так как я собираю запросик в VBA, то я через recordset присвоил результат запроса с MAX - переменной, и уже, используя эту переменную, составил запрос на UPDATE, т.е. у меня получилось

Code
1
2
3
'UPDATE ChangedSinhron SET ChangedSinhron.ChanRep_Num = 2, ChangedSinhron.ChanOrder_Key = ' & Num & '
WHERE ((ChangedSinhron.Changed_Key) In (SELECT ForPrintSelectChanges.MaxOfChanged_Key FROM ForPrintSelectChanges 
WHERE (((ForPrintSelectChanges.Nomer)='120AZ') AND ((ForPrintSelectChanges.Color)='yellow'))));'
Но я хотел бы всё таки попробывать/узнать можно ли эти запросы объединить в один.

Сейчас попробую прояснить ситуацию с запросами.
Code
1
ChangedSinhron
- это табличка где сохраняються ссылки на нужные мне ключи, т.е. на заведённые данные, на изменённые данные и на репорт
Code
1
ChangedOrders
- в этой табличке хранятся данные для репорта, связь - (
Code
1
ChangedOrders.Key = ChangedSinhron.ChanOrder_Key
)
Code
1
ForPrintSelectChanges
- запрос в который выбираються данные с которыми я на данный момент работаю, завязаны следущим образом:
Code
1
ChangedSinhron.Changed_Key = ForPrintSelectChanges.MaxOfChanged_Key
смысл MAX'а:
ищу я MAX сразу после того как вставил данные в
Code
1
ChangedOrders
(соответственно это точно последняя строка) и чтобы их связать с остальной информацией через
Code
1
ChangedOrders.Key
я записываю этот ключ в
Code
1
ChangedSinhron.ChanOrder_Key
Надеюсь не очень путано объяснил.

Code
1
ChangedOrders.Key
находиться через следующий запрос:
Code
1
SELECT Max(ChangedOrders.Key) AS MaxOfKey FROM ChangedOrders
Может теперь Вы мне сможете подсказать, можно ли эти запросы скомпоновать в один, и если можно то не могли бы Вы показать как это должно выглядеть

Заранее спасибо.
С уважением Sfagnum.

P.S. надеюсь я не очень назойлив.
0
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 145
30.07.2008, 11:41  [ТС]
Вот млин с тэгами переборщил), дублирую в более удобочитабельном виде:
-----------------------------

Спасибо за то что ответили, я в принципе и сделал так как Вы советуете в конце, только так как я собираю запросик в VBA, то я через recordset присвоил результат запроса с MAX - переменной, и уже, используя эту переменную, составил запрос на UPDATE, т.е. у меня получилось
Code
1
2
3
'UPDATE ChangedSinhron SET ChangedSinhron.ChanRep_Num = 2, ChangedSinhron.ChanOrder_Key = ' & Num & '
WHERE ((ChangedSinhron.Changed_Key) In (SELECT ForPrintSelectChanges.MaxOfChanged_Key FROM ForPrintSelectChanges 
WHERE (((ForPrintSelectChanges.Nomer)='120AZ') AND ((ForPrintSelectChanges.Color)='yellow'))));'
Но я хотел бы всё таки попробывать/узнать можно ли эти запросы объединить в один.

Сейчас попробую прояснить ситуацию с запросами.
ChangedSinhron - это табличка где сохраняються ссылки на нужные мне ключи, т.е. на заведённые данные, на изменённые данные и на репорт
ChangedOrders - в этой табличке хранятся данные для репорта, связь - (ChangedOrders.Key = ChangedSinhron.ChanOrder_Key)
ForPrintSelectChanges - запрос в который выбираються данные с которыми я на данный момент работаю, завязаны следущим образом:
ChangedSinhron.Changed_Key = ForPrintSelectChanges.MaxOfChanged_Key

смысл MAX'а:
ищу я MAX сразу после того как вставил данные в ChangedOrders (соответственно это точно последняя строка) и чтобы их связать с остальной информацией через ChangedOrders.Key я записываю этот ключ в ChangedSinhron.ChanOrder_Key

Надеюсь не очень путано объяснил.

ChangedOrders.Key находиться через следующий запрос:
Code
1
SELECT Max(ChangedOrders.Key) AS MaxOfKey FROM ChangedOrders
Может теперь Вы мне сможете подсказать, можно ли эти запросы скомпоновать в один, и если можно то не могли бы Вы показать как это должно выглядеть

Заранее спасибо.
С уважением Sfagnum.

P.S. надеюсь я не очень назойлив.
0
msd
30.07.2008, 13:21
Запрос:
SQL
1
SELECT MAX(ChangedOrders.Key) AS MaxOfKey FROM ChangedOrders
можно просто заменить на выражение Dmax('[Key]';'ChangedOrders') и использовать возвращаемое значение в запросе.
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 145
30.07.2008, 13:39  [ТС]
To msd:
Вот млин живёшь и не знаешь, а таких функциях и извращаешься по разному.))

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2008, 13:39
Помогаю со студенческими работами здесь

Запрос SELECT + UPDATE
Суть такая, нужно прибавить 0 ко всем переменным таблицы PersonT.ZachNum, у которых начинается идентификатор с 9. Как правильно оформить...

Sql/update используя существующий запрос
Доброе утро. Столкнулся с распространенной ошибкой: "должен использоваться обновляемый запрос". Кратко опишу ситуацию: есть...

Запрос UPDATE работает только со значением Integer
Уважаемые форумчане, помогите советом. В следующей инструкции вба хочу обновить поле Цена. Но обновление происходит без проблем...

Запрос на обновление посредством SET поле=(select....)
Вечер добрый, граждане, подскажите пожалуйста... можно ли в Access реализовать запрос вида UPDATE таблица SET...

Запрос UPDATE
Запрос UPDATE tabl SET ST_CNT = ST_CNT + 1 по нажатию на button увеличивает счетчик во всех записях колонки ST_CNT, подскажите как сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru