|
|
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Ужас. Сделал форму. В коде прописываю: Form.RecordSource = "select * from demand" Первичный ключ в таблице есть. Все замечательно работает. Теперь пишу в коде: Form.RecordSource = "select * from demand where ID in ((select DemID from t1) union (select DemID from t2))" Теперь форма не позволяет редактировать набор данных !!! Что делать ? У меня весь смысл приложения - динамически формировать весьма сложные запросы. Но сложность будет только в условии where, в остальном - это простой запрос из одной таблицы. Я в полной депрессии. Помогите пожалуйста... _____ Женя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 12:54:17 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
stavteamУ меня весь смысл приложения - динамически формировать весьма сложные запросы. Но сложность будет только в условии where, в остальном - это простой запрос из одной таблицы. В таком случае я бы попытался перенести логику на сервер (источником формы сделать stored procedure). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 13:21:56 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
ВСЁ НА СЕРВЕР!!!!!!!!! И База ненароком не упадёт (в смысле данные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 13:23:54 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Да все понятно, что на сервер. А так все хорошо начиналось :( Все равно спасибо за совет. Вы в очередной раз правы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 14:43:31 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
И все таки. На чем основывается этот Аксесс, когда решает - можно редактировать набор данных или нет ? И как на это мудрое решение может повлиять программист ? Меня такая несвобода напрягает. Никогда не знаешь, где на граблю наступишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 18:37:04 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
select f1,f2... from tbl будет обновляться без проблем если JOIN имеется - необходимо задать свойство UniqueTable ну а в тяжёлых случаях могут помочь updatable view, точнее INSTEAD OF триггеры, с ними можно много замутить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 18:49:34 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Попробуй создать Запрос1 select DemID from t1; UNION select DemID from t2; А наоснове его Form.RecordSource = "select * from demand where ID in (select DemId from Запрос1)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 18:54:12 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Запросы со вложенными SELECT-ами необновляемы по-определению (читайте BOL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 06:06:52 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Я уже понял, что вложенных запросов этот зверь не понимает. Даже с ОднозначнойТаблицей. А кстати, что такое BOL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 13:23:47 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Book Online, насколько я знаю - у SQL-ников главный мануал Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 13:26:45 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
И с юнионами совсем не обновляемые. Ищите обходные пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 16:19:31 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Да тут "обходной путь"-то, надо сказать, довольно-таки прямолинеен. По утверждению автора вопроса, у него все страшные выражения, которые делают запрос необновляемым, сосредоточены в критериях отбора и как я понял, их роль всего лишь - вычислить значение, с которым нужно сравнить для выполнения отбора в тривиальном однотабличном наборе записей. В этом случае серверная процедура, которая будет сначала выполнять сколь угодно много сложных запросов для поимки нужного значения (этим запросам, понятно, не нужна обновляемость), а затем использует полученное скалярное значение для финального отбора записей из одной таблицы (в этом случае процедура вернёт гарантированно обновляемый набор записей) - без преувеличения - то, что доктор прописал . А с updatable views, построенных на INSTEAD OF триггерах - не советую без необходимости связываться. Только в случае, когда без них точно не обойтись. Я уже ходил этой дорогой, набил шишек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 18:36:12 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
С пятницей всех. Очень странно. Все странно. 2 Alex2 А разве тут есть вложенный селект? 2 автор У меня обновляется и представление, и форма на его основе, на указанном тестовом запросе, и на его вариациях: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. М.б. дело в других параметрах формы? Написана не та строка синхронизации или однозначная таблица, или запрос неоригинальный приведен?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 19:40:46 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
2 Тимур Рахимов > полученное скалярное значение для финального отбора записей из одной таблицы Так не сказано же , что значение скаларное, а если оно векторное и процедуре для выходного SELECT потребуется связывать множества их нескольких таблиц ? А с updatable views, построенных на INSTEAD OF триггерах - не советую без необходимости связываться. Только в случае, когда без них точно не обойтись. Я уже ходил этой дорогой, набил шишек. А что за шишки, если не секрет? 2 гео> опубликуй свои версии и патчи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 20:16:31 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Попробуйте создать view, определить для него в форме уникальную таблицу и прописать команду синхронизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 20:21:12 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
yuniki2 гео> опубликуй свои версии и патчи. MS SQL DE 2000 SP-3 MS Access 2002 SP-1 MS Access 2003 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 20:24:41 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
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" гораздо больше моего багов наловил). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 21:56:04 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
геоОчень странно. Все странно. Действительно, странно. Я тоже попробовал, но уже на Access 2000 SP3 (SQL Server 2000 SP3). Создал всё с нуля: тестовую базу данных, новый файл adp, простейшие три таблицы с PK, единственную форму... Источник строк формы такой: Код: plaintext Обновляется! При этом свойства формы Однозначная таблица и Строка синхронизации пусты. Я вообще никаких свойств формы после того, как она была создана конструктором, не менял! В общем, всё в точности так, как указал "Geo". Может, яснее станет, если автор вопроса укажет версии своих программ и сам проверит наличие проблемы на тестовом примере "с нуля"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 23:16:03 |
|
||
|
ADP: Форма: Данный набор записей не допускает обновления
|
|||
|---|---|---|---|
|
#18+
Хм, мой запрос конечно сложнее, но принципиально Вы делаете именно то, что у меня не работает. Странно. Спасибо большое, проверю. Кстати, нашел способ избавиться от UNION, так как объединяются 2 результирующих набора из одной и той же таблицы. Заработало. Еще раз спасибо за расширение кругозора :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2004, 10:10:07 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1510&tid=1669794]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
19ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 306ms |

| 0 / 0 |
