powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP: Форма: Данный набор записей не допускает обновления
19 сообщений из 19, страница 1 из 1
ADP: Форма: Данный набор записей не допускает обновления
    #32820556
stavteam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужас.
Сделал форму.
В коде прописываю:
Form.RecordSource = "select * from demand"
Первичный ключ в таблице есть.
Все замечательно работает.

Теперь пишу в коде:
Form.RecordSource = "select * from demand where ID in ((select DemID from t1) union (select DemID from t2))"

Теперь форма не позволяет редактировать набор данных !!!
Что делать ?
У меня весь смысл приложения - динамически формировать весьма сложные запросы. Но сложность будет только в условии where, в остальном - это простой запрос из одной таблицы.

Я в полной депрессии.
Помогите пожалуйста...
_____
Женя
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32820636
stavteamУ меня весь смысл приложения - динамически формировать весьма сложные запросы. Но сложность будет только в условии where, в остальном - это простой запрос из одной таблицы.
В таком случае я бы попытался перенести логику на сервер (источником формы сделать stored procedure).
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32820642
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВСЁ НА СЕРВЕР!!!!!!!!! И База ненароком не упадёт (в смысле данные)
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32820988
stavteam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да все понятно, что на сервер.
А так все хорошо начиналось :(
Все равно спасибо за совет. Вы в очередной раз правы :)
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32821787
stavteam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все таки.
На чем основывается этот Аксесс, когда решает - можно редактировать набор данных или нет ? И как на это мудрое решение может повлиять программист ? Меня такая несвобода напрягает. Никогда не знаешь, где на граблю наступишь.
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32821819
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select f1,f2... from tbl
будет обновляться без проблем
если JOIN имеется - необходимо задать свойство UniqueTable

ну а в тяжёлых случаях могут помочь updatable view, точнее INSTEAD OF триггеры, с ними можно много замутить
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32821828
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй создать Запрос1
select DemID from t1; UNION select DemID from t2;

А наоснове его
Form.RecordSource = "select * from demand where ID in (select DemId from Запрос1)"
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32822136
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запросы со вложенными SELECT-ами необновляемы по-определению (читайте BOL)
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32823086
stavteam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.
Я уже понял, что вложенных запросов этот зверь не понимает.
Даже с ОднозначнойТаблицей.
А кстати, что такое BOL ?
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32823092
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Book Online, насколько я знаю - у SQL-ников главный мануал
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32823677
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И с юнионами совсем не обновляемые. Ищите обходные пути.
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824106
Да тут "обходной путь"-то, надо сказать, довольно-таки прямолинеен. По утверждению автора вопроса, у него все страшные выражения, которые делают запрос необновляемым, сосредоточены в критериях отбора и как я понял, их роль всего лишь - вычислить значение, с которым нужно сравнить для выполнения отбора в тривиальном однотабличном наборе записей.

В этом случае серверная процедура, которая будет сначала выполнять сколь угодно много сложных запросов для поимки нужного значения (этим запросам, понятно, не нужна обновляемость), а затем использует полученное скалярное значение для финального отбора записей из одной таблицы (в этом случае процедура вернёт гарантированно обновляемый набор записей) - без преувеличения - то, что доктор прописал .

А с updatable views, построенных на INSTEAD OF триггерах - не советую без необходимости связываться. Только в случае, когда без них точно не обойтись. Я уже ходил этой дорогой, набил шишек.
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824187
Гео
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С пятницей всех.

Очень странно. Все странно.

2 Alex2
А разве тут есть вложенный селект?

2 автор

У меня обновляется и представление, и форма на его основе, на указанном тестовом запросе, и на его вариациях:

Код: plaintext
1.
2.
3.
SELECT * FROM t1
WHERE f1 IN (SELECT f1 FROM t2
             UNION
             SELECT f1 FROM t3)

Код: plaintext
1.
2.
3.
SELECT * FROM t1
WHERE f1 IN (SELECT f1 FROM t2
             UNION ALL
             SELECT f1 FROM t3)

Код: plaintext
1.
2.
3.
SELECT * FROM t1
WHERE EXISTS (SELECT f1 FROM t2 WHERE t2.f1=t1.f1
             UNION ALL
             SELECT f1 FROM t3 WHERE t3.f1=t1.f1)

М.б. дело в других параметрах формы? Написана не та строка синхронизации или однозначная таблица, или запрос неоригинальный приведен?..
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824216
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тимур Рахимов > полученное скалярное значение для финального отбора записей из одной таблицы
Так не сказано же , что значение скаларное, а если оно векторное и процедуре для выходного SELECT потребуется связывать множества их нескольких таблиц ?

А с updatable views, построенных на INSTEAD OF триггерах - не советую без необходимости связываться. Только в случае, когда без них точно не обойтись. Я уже ходил этой дорогой, набил шишек.
А что за шишки, если не секрет?

2 гео> опубликуй свои версии и патчи.
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824219
Фотография vma_mnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте создать view, определить для него в форме уникальную таблицу и прописать команду синхронизации
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824225
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki2 гео> опубликуй свои версии и патчи.
MS SQL DE 2000 SP-3
MS Access 2002 SP-1
MS Access 2003
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824300
yuniki Тимур РахимовА с updatable views, построенных на INSTEAD OF триггерах - не советую без необходимости связываться. Только в случае, когда без них точно не обойтись. Я уже ходил этой дорогой, набил шишек.
А что за шишки, если не секрет?
Да там на каждом шагу.

Ну, на грабли с WITH VIEW_METADATA , похоже, каждый наступил.

Про неочевидную необходимость включать в список полей представления ключевые поля всех таблиц (хоть Access и не будет заниматься собственно обновлением) - говорил уже.

Засада на ровном месте с автоинкрементными ключевыми полями (счётчика):
MS SQL Server требует, чтобы вставке записи в обновляемое представление все поля, которые определены как not null ( включая счётчик! ) содержали какое-либо, пусть фиктивное, которое никак не будет использоваться, но значение. Надо ли напоминать, что в поле счётчика Access не позволяет ничего вставить?

Далее. INSTEAD OF триггеры несовместимы с механизмом foreign constraints (FK) - все проверки приходится кропотливо выполнять "руками". Любая ошибка в таких триггерах снимает весь текущий batch начисто, не оставляя никакой возможности коду на T-SQL ни поправить как-то ситуацию, ни даже получить код ошибки. И то и другое резко осложняет программирование. И это ещё не всё! Чтобы легче можно было представить масштаб проблемы, я процитирую одного исключительно компетентного человека:

Crimean...Делать это в INSTEAD триггере красиво, но писать много INSTEAD триггеров - пусть меня лучше покрасят. Глюкалово такое что ну его. Хватит мне одного инстедного триггера на всю систему. В нем ифов больше, чем во всей системе вместе взятой...

...У меня было несколько другое представление о триггерах.
Я считал, что если у меня есть софта, которая месит таблицу, то после добавления триггера (любого!) софту менять не надо.
На деле - ХРЕН!!! Переписывать софту на (зачеркнуто) к (зачеркнуто) в (зачеркнуто), короче, полностью! Плюс к этому написание процедур, через которые ТЕПЕРЬ начинается работа с таблицей, чтобы отвалить триггера ролбэчить и хоть как-то вменяемо прередать Ид из триггера в софтину. Ужас!...

В общем, делать что-то непримитивное на INSTEAD OF триггерах - это одна сплошная непрекращающаяся головная боль. Причём можно не сомневаться - если в своей работе вы обратились к INSTEAD OF триггерам, рубеж примитивности давно пройден.

Чтобы убедиться во всём этом, наберите в строке поиска (в конференции Microsoft SQL Server) слова instead триггер и посмотрите сами (в частности, "Crimean" гораздо больше моего багов наловил).
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32824332
геоОчень странно. Все странно.
Действительно, странно. Я тоже попробовал, но уже на Access 2000 SP3 (SQL Server 2000 SP3). Создал всё с нуля: тестовую базу данных, новый файл adp, простейшие три таблицы с PK, единственную форму... Источник строк формы такой:

Код: plaintext
SELECT * FROM table0 \n    WHERE id IN (SELECT id FROM table1 \n             UNION SELECT id FROM table2)

Обновляется! При этом свойства формы Однозначная таблица и Строка синхронизации пусты. Я вообще никаких свойств формы после того, как она была создана конструктором, не менял!

В общем, всё в точности так, как указал "Geo".

Может, яснее станет, если автор вопроса укажет версии своих программ и сам проверит наличие проблемы на тестовом примере "с нуля"?
...
Рейтинг: 0 / 0
ADP: Форма: Данный набор записей не допускает обновления
    #32825123
stavteam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, мой запрос конечно сложнее, но принципиально Вы делаете именно то, что у меня не работает. Странно. Спасибо большое, проверю. Кстати, нашел способ избавиться от UNION, так как объединяются 2 результирующих набора из одной и той же таблицы. Заработало. Еще раз спасибо за расширение кругозора :)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP: Форма: Данный набор записей не допускает обновления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]