Запрос по набору записей

Будет ли работать такой запрос в наборе записей

rs.open "выбрать * из таблицы, где vd = 1; обновить набор таблиц vd1 = 1, где vd = 2 или vd = 3;"

или что-то не так

Благодарность

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 064
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Не получится - придется выполнять их как отдельные команды

Предположительно, вы объявили rs как набор записей, поэтому вы можете использовать его для возврата результатов оператора SELECT.

Я бы использовал команду SQL для выполнения второго оператора.

Есть ли другой способ, который я имею в виду, кроме разделения их

tksy 03.12.2008 12:52

Набор записей можно определить только с помощью одного оператора SELECT (хотя, конечно, вы можете объединить несколько выборок, если они имеют одинаковое количество столбцов).

Любое действие SQL (INSERT, UPDATE, DELETE) не может быть выполнено с набором записей, кроме использования метода .Execute.

Если вы используете ADO, .Execute также можно использовать для SELECT (он возвращает строки), но собственный уровень интерфейса данных Jet, DAO, не может - .Execute работает только для запросов действий. Мне это кажется разумным, но лично мне ADO всегда казалась пустой тратой времени.

Кроме того, Jet (механизм db, используемый Access по умолчанию) не может выполнять несколько операторов SQL одновременно, как это могут сделать многие серверные механизмы db. Это не такое уж большое ограничение, как может показаться тем, кто привык к пакетным операциям SQL, - просто другое.

«Jet ... не может выполнять несколько операторов SQL одновременно ... Это не такое уж большое ограничение» - это ОГРОМНОЕ ограничение! Это заставляет человека писать несколько хранимых процедур и доверять клиентскому коду для их вызова в правильном порядке или - глоток! - напишите свою логику база данных на стороне клиента.

onedaywhen 05.12.2008 11:47

Э-э, Jet не может выполнять несколько операторов, но нельзя ли их объединить в сквозной запрос? Это явным образом поставит всю обработку на стороне сервера и, как мне кажется, устранило бы ваше возражение. Он по-прежнему не будет работать с серверной частью Jet, но, ну, сервер здесь не задействован.

David-W-Fenton 08.12.2008 03:44

«Это все равно не сработает с бэкендом Jet» - вот мое возражение! например вы не можете написать даже простой upsert (en.wikipedia.org/wiki/Upsert): вместо этого вы должны написать процедуру INSERT и процедуру UPDATE и доверять клиентскому коду, чтобы либо выбрать правильный, либо запустить (и отработать отказ) оба.

onedaywhen 11.12.2008 17:49

Тогда не используйте JET в качестве серверной части. Ооо.

David-W-Fenton 13.12.2008 03:20

Так что, если мне нужна процедура «upsert», мне следует избегать Jet, верно? Ну, тогда это почти все приложения, ориентированные на данные, которые я когда-либо писал :)

onedaywhen 17.12.2008 11:43

Если вам нужна хранимая процедура, вы вообще не собираетесь использовать Jet. Итак, я действительно не понимаю, в чем ваша проблема.

David-W-Fenton 19.12.2008 04:40

Моя «проблема» (как вы выразились) в том, что я привык как к Jet, так и к ядрам баз данных, которые могут выполнять несколько операторов SQL в одной хранимой процедуре, и тот факт, что они являются взаимоисключающими, является причиной, по которой я теперь избегаю Jet. Но я бы назвал это исправлением вашего искажения, а не проблемой :)

onedaywhen 19.12.2008 15:04

Кстати, я много лет использовал синтаксис CREATE PROCEDURE DDL в Jet. Я использую термин «сохраненная процедура Jet» для обозначения объекта базы данных, созданного с помощью CREATE PROCEDURE. Замените свой собственный термин по своему усмотрению, но Jet и сохраненные процедуры не являются взаимоисключающими.

onedaywhen 19.12.2008 15:06

Это одна из тех прекрасных несоответствий, которые возникают при использовании ADO, общего уровня абстракции для управления Jet вместо собственных интерфейсов. Создаваемая вами ПРОЦЕДУРА совсем не похожа на то, что есть в серверном ядре базы данных.

David-W-Fenton 23.12.2008 06:39

CREATE PROCEDURE - это собственный синтаксис Jet DDL (Jet 4.0 и ACE), не имеющий ничего общего с ADO. Проблема в том, что ты использует уровень абстракции: различие между PROCEDURE и VIEW теряется для вас, потому что MS Access объединяет их вместе как общий объект Query. Точно так же DAO видит только QueryDef.

onedaywhen 02.01.2009 17:00

Да, он был вставлен в Jet DDL для согласованности с ADO. То, что вы получаете, используя результат в Jet (или Access), совсем не похоже на процедуру в базе данных сервера.

David-W-Fenton 03.01.2009 05:43

Возможность отличить SQL VIEW от других видов исполняемого хранимого SQL является более богатой моделью, чем наличие всего лишь одного объекта Query. Это хорошая вещь. Какая разница, была ли «согласованность с ADO» движущей силой таких изменений ?!

onedaywhen 05.01.2009 11:49

Другие вопросы по теме