|
|
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
Вопрос вроде-бы пересекается с новым faq, но не совсем то... Есть форма, у нее подчиненная. На выходе из подчиненной запускается sp, правящая записи в ней. (таблица, из которой берет данные подчиненная форма, с иерархией, и хранимка пересчитывает количество в записях, с учетом количества верхних узлов - т.е. полное кол-во. Чтобы не считать их на лету.) Создаю новую запись в главной форме - вхожу в подчиненную - создаю запись в подчиненной - выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю созданную запись - пытаюсь ее сохранить - получаю сабж. Причем если в той же цепочке поменять первый пункт, т.е. Встаю на любую запись в главной форме - вхожу в подчиненную - создаю запись в подчиненной - выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю созданную запись - сохраняю ее или Правлю любую запись в главной форме - вхожу в подчиненную - создаю запись в подчиненной - выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю созданную запись - сохраняю ее То проблем нет. Во всех триггерах есть nocount on и вставки для сохранения identity. В главной и подчиненной описана команда синхронизации (формы не на sp, а на выражениях sql - "select * from mytable") Что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 11:59 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
Вру. Неправильно описал. Встаю на любую запись в главной форме - вхожу в подчиненную - создаю запись в подчиненной - выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю созданную запись - пытаюсь ее сохранить - ошибка Встаю на любую запись в главной форме - вхожу в подчиненную - правлю запись в подчиненной - выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю ту же запись - пытаюсь ее сохранить - ошибки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:03 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2Geo Твоя проблема типична при отсуствиее комады синхронизации, но она у тебя есть. Попробуй выяснить через Profiler, что Акес передает/запрашивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:07 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
очень сильно похоже, что нужен реквери для подчиненной формы. По сценарию (Б) ОТСУТСТВУЕТ внешний по отношению к рекордсету (подчиненной) формы Update таблицы, по сценарию (А) он ЕСТЬ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:08 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
отвечал на самое первое сообщение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:09 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
Бат вай?.. А, сейчас. Вот: exec sp_executesql N'UPDATE "Dolina".."tDrafts" SET "NameDraft"=@P1 WHERE "NumDraft"=@P2 AND "NumOrder"=@P3 AND "StrNum"=@P4 AND "NumHighLevel"=@P5 AND "NameDraft"=@P6 AND "DateDesign" IS NULL AND "NormWork" IS NULL AND "Quantity"=@P7 AND "Comment" IS NULL AND "FullQuantity" IS NULL' , N'@P1 nvarchar(5),@P2 int,@P3 varchar(5),@P4 nvarchar(2),@P5 int,@P6 varchar(3),@P7 smallint' , N'asd**', 21109, '77785', N'as', 21106, N'asd', 1 exec sp_executesql N'SELECT * FROM (tDrafts) WHERE NumDraft=@P1', N'@P1 int', 21109 это из профайлера. И следом идет запись о сохранении случившейся ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:23 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
Кстати, источник данных у меня меняется по мере перемещения по подчиненной форме: select * from tDrafts where NumHighLevel=... а строка синхронизации одна select * from (tDrafts) where NumDraft=? Это нормально? (млин, вечером буду хетца читать, как это вообще работает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:42 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
по этому обрывку судить вполне тяжело. когда писал, подразумевал следующее 0) я в АДП прктически как номер этого пункта. Когда-то, когда токо вышел 2000 акс чуть щупнул ад с скль 7 потом повода не было. (кажется сильно хочу поменять работу, только невдомек как это вообще делается...) 1) тогда (по памяти) увидел, что акцесс норовит с рекордсетами формы работать фактически через глобальные серверные курсоры. 2) для данного изложения достаточно считать, что глоб серв. курсоры образуют "собственный" рекордсет, к которому можно подсоединиться, но без этого подсоединенния он прочим процессам не виден. 3) изменения, проведенные во внешних процессах, и затрагивающие отобранные курсором записи фактически инвалидируют их (Ё уровень изоляции) 4) sp_executesql КАК РАЗ И ЗАПУСКАЕТ такое независимое исполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:45 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
select * from (tDrafts) where NumDraft=? скобки бы убрал - изврат это, да к тому же ты проблему с identity уже решил в триггере. Ну это так - к делу навряд ли относится, а вот с Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:45 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
А если по рабоче-крестьянски Встаю на любую запись в главной форме - вхожу в подчиненную - создаю запись в подчиненной - тут сохранить запись-выхожу в главную форму (отработала sp) - вхожу в подчиненную - правлю созданную запись - пытаюсь ее сохранить - ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:53 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2 zz думаю, сохранение НЕ ПОМОЖЕТ, потому как при ДОбавлении меняетсо КОЛИЧЕСТВО подчиненных записей, в которых sp МАРАЕТ при изменении количества и НЕ МАРАЕТ в противном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:59 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
авторскобки бы убрал /topic/40261#266083 :) автортам именно те параметры котрые должны быть? Те. 2zz бесполезно (пробовал), она же и так сохраняется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:19 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2Victoha А как с этим бороться/обходить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:21 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
/topic/40261#266083 :) именно по этому и написал, что это изврат и это видно далее по тексту :) З.Ы, Так до сих пор и не понял в чем загадка скобок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:24 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
ЕСЛИ ЭТО ОНО (у тебя НЕ ОБЯЗАТЕЛЬНО оно, мне просто показалось, что похоже) то обходиться можно попробовать 3-мя способами - субъективные мнения в скобках 0) забабахать явный реквери при входе в подчиненную, можно при этом переменную состояния завесть, на которую и смотреть, нужен реквери или нет (чистый акцессный путь ) 1) (не нравится) воткнуть явный Update подчиненных в триггер (афтер) НА ВСТАВКУ в подчиненные 2) добавление вынести в собственную хранимку, по возможности избавившись от sp_executesql, иначе, боюсь, все повториться - тут лучше к соседям- скульникам сходить 3) забыл - отвлекли - не могу вспонить - наверно больше ничего не придумаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:53 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
Victosha3) забыл - отвлекли - не могу вспонить Если нумеруешь от 0, то считать надо до n-1. Это нормально. 0, 1, 2 - это 3 штуки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:56 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2 Саныч написал 2) полностью, поставил 3) вспомнил про 0) - записал - ОТВЛЕКЛИ - что писать в 3) не помню - может и не было ничего. -))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:02 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
вот еще придумалось (не 3 3 должно было бы быть что-то специфически "серверное") 4) (вариация на тему 0 ) переменную состояния забабахать в подчиненной форме, если взведена, то при выходе сначала забабахать простой апдейт на текущем коннекте (без хранимки) И ПЕРЕД ПОТЕРЕЙ ФОКУСА контролом подчиненки - реквери 5) нарисовать "традиционный" цикл изменения на рекордсете ЗЫ Не забыть при этом, что в адп я 0 и палоччков у мене нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:13 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2Victosha Первый способ заработал, спасибо. По остальным попробую что-нибудь спросить, м.б. пойму чего. автор1) (не нравится) воткнуть явный Update подчиненных в триггер (афтер) НА ВСТАВКУ в подчиненные Зачем? Что при этом произойдет? автор2) добавление вынести в собственную хранимку, по возможности избавившись от sp_executesql, иначе, боюсь, все повториться - тут лучше к соседям- скульникам сходить Добавление записи в подчиненную хранимкой? Это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:15 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
автор автор 1) (не нравится) воткнуть явный Update подчиненных в триггер (афтер) НА ВСТАВКУ в подчиненные Зачем? Что при этом произойдет? предварительное замечание Все что было написано - это не замена реквери, а некоторая его обертка, которая, возможно, при каких-то вариантах рекордсета его (реквери) в клиентском коде не потребует ответ Думал вот о чем: Задача произвести update во всех подчиненных при добавлении новых и не производить в противном случае. Умеренно естественным местом для такого действия будет триггер на вставку. (на самом деле не уверен, что он должен быть after - посмотри в BOL) Так ты всю "бизнес-логику" этого вопроса выносиш на сервер, ассоциируешь ее непосредственно с таблицей, и она не интерферирует с простым изменением записи подчиненной таблицы. Вообще говоря это не отменяет реквери - но есть надежда. автор автор 2) добавление вынести в собственную хранимку, по возможности избавившись от sp_executesql, иначе, боюсь, все повториться - тут лучше к соседям- скульникам сходить Добавление записи в подчиненную хранимкой? Это как? обычная хранимка с параметрами, внутри которой INSERT тоже ничего не отменяет - см 12:45. В действительности не знаю, как прикрутить к табличной форме. При работе с актив-иксами - относительно стандарный способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:30 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
2 Geo сам я, наверно, пошел бы по дороге 4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:31 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
А почему вообще происходила ошибка? Количество измененных записей отличается от того, которое Акцесс ожидал увидеть при сохранении записи? Если да, то сколько он ожидал в случае с вновь созданной после выхода/входа в подформу? И можно ли это как-то узнать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:38 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
И зачем знать перед сохранением изменений в записи @@lastident? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:40 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
авторА почему вообще происходила ошибка? все что я думал по этому поводу, изложил в 12:45 ТАМ ОТВЕТ КАК МИНИМУМ НЕ ПОЛНЫЙ, А, МОЖЕТ И СОВСЕМ НЕВЕРНЫЙ. Еще раз, грубо идея в том, что после updatet-a значений существующих записей вызванных добавлением новой строки в текущем рекордсете ВСЕ СТРОКИ НЕПРАВИЛЬНЫЕ И НЕ СООТВЕТСТВУЮТ текущему состоянию базы данных, о чем адо и пытается сообщить по своему. ЗЫ1 вот как-то я призывал Latuk-а поспорить - не захотел. А тема-то родственная. (Там тема про остатки-обороты была) РОДСТВЕННАЯ ТЕМА:Хранение количества штук подчиненных записей в самих подчиненных в отдельном поле. Я скромно считаю это плохим проектированием, ПРОТИВОРЕЧАЩИМ естественному быту проектирования РЕЛЯЦИОННЫХ базов данных. В данном случае даже вопиюще. Я бы лишил подчиненные ТАКОГО волшебного знания. ЗЫ2 авторИ зачем знать перед сохранением изменений в записи @@lastident? прошу прощения, но я совсем не знаю о чем это - мы об этом никак не говорили и такого в этом потоке не вижу влет. То есть, наверно, не ко мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:53 |
|
||
|
Проблема при работе с ADP (Скопировать в буфер, Отменить изменения, Сохранить)
|
|||
|---|---|---|---|
|
#18+
автор мы об этом никак не говорили и такого в этом потоке не вижу влет Это о добавлении в триггеры кусков, сохраняющих последний identity. Тоже не понимаю, зачем оно нужно. Блин, пишу программу, которая не знаю как и почему работает/не работает. Обычно кусочки складываются в четкую картину со временем, но как правило далеко не сразу. Надо бы что-нибудь почитать про sql "для чайников" - почему, что и как в нем крутиться. К сожалению про серверные курсоры (в том числе) я не знаю ничего, то есть абсолютно ничего, поэтому вынужден временно прекратить задавать вопросы, поскольку не понимаю на них ответов. :( Еще раз спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=45&startmsg=32523595&tid=1674492]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 504ms |

| 0 / 0 |
