powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP - Подчиненная Форма - Ошибки
15 сообщений из 15, страница 1 из 1
ADP - Подчиненная Форма - Ошибки
    #32486618
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL 2000 + ADP 2000 sp3\r
\r
Подчиненная форма "Строки Заказа". Источник - вьюха по одной таблице. На таблице триггер \'for insert, update, delete\', который изменяет вставляемые записи и записи одного же с ними заказа - при вставке, и изменяет оставшиеся в заказе строки - при удалении строк.\r
\r
при вставке нескольких записей возникала ошибка:\r
\r
"The data was added to the database but the data won\'t be desplayed in the form because it doesn\'t satisfy the criteria in the underlying record sourse" \r
\r
или\r
\r
"Данные, добавленные в базу данных, не будут отображены в форме, так как они противоречат условиям на базовый источник записей" \r
\r
пока решил с помощью скобок как описано здесь\r
\r
Но при удалении нескольких записей из подчиненной формы Аксес выдаёт что: \r
\r
"Row can not be located for updating. Some values may have been changed since it was last read" \r
\r
и удаляется только одна запись. \r
Если же удалять записи одну за одной (триггер типа срабатывает) и не обновлять подчиненную форму нажимая F9 то начиная со второй удаленной записи Аксес будет ругаться теми же словами и не удалять записи. При обновлении с F9 после каждой удаленной записи - всё работает.\r
\r
Кто знает чем лечить? Где прочитать рецепт?\r
\r
\r
P.S. да! и как на SQL.RU найти топики по целому выражению типа: \r
"Row can not be located for updating"\r
Если набрать это в строке поиска то покажется много чего - только не то что нужно. \r
До смешного - что бы найти что-либо на SQL.RU я лезу на Яндекс или на Рамблер.\r
Кстати, на эту ошибку тоже через Рамблер вышел, но только она в конфе по Делфи, а они там на другом языке говорят
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486623
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока решил с помощью скобок как описано здесь \r
\r
Не тем способом решал - этим - лучше
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486625
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в начале всех триггеров
set nocount on

в строке синхронизации
select * from mytable WITH(nolock) where id = ?
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486629
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как использовать сохранённую в #t identity?
Куда подставлять? На какое событие?

Пока не укладывается в голове по полочкам.
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486681
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да... все решилось.

При удалении нескольких записей из подчинённой формы, триггер не выполняет множественное удаление (как например при команде: delete * from myTable where id in (1,2,3,4)), а удаляет их одну за одной и каждый раз срабатывает триггер.
Вот, например, удаляем две записи в моём случае. При удалении первой записи триггер срабатывает и изменяет в таблице на сервере ту запись которую Аксес собирается удалить. Аксес пробует удалить вторую запись, а на сервере её, типа, нет!!! - я, уж, не знаю по каким признакам Аксес определяет что это не та запись - ID (Primary Key) не изменялся?!

Короче Me.Refresh на событие OnDelete, кажется, решает пробему.
Во всяком случае пока...

Почти сам с собой поговорил

Спасибо Виктору и Алексею за быстрый отклик.
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486686
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как использовать сохранённую в #t identity?
Куда подставлять? На какое событие?

Не ты ее пользовать будешь - а Акес. Все беды от того, что он запрашивает последний identity, что бы обновить запись, и он его получает: только в твоем случае - identity от вставки в чужую таблицу и из-за этого глюки,а в примере В.Смирнова - от вставки в темп-таблицу, но так как в темп-таблицу вставлялся "правильный" identity - то все работает
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486693
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на как Аксес узнает где правильный identity лежит?
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486729
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на как Аксес узнает где правильный identity лежит?

Если смотреть на это через Profiler, то видно как Акес делает "Select @@IDENTITY". Вот так он самостоятельно и узнает: последнее вставленное(созданное) значение счетчика для (только) твоей сессии. Его он и использует для рефреша
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486730
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 lobodava
Профайлер в руки и вперёд, смотреть что Аксес делает. Ему пофиг, где какой идетнити лежит:)
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486733
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor

Опоздал:) Чуток совсем:)
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486746
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не прогневайтесь, люди добрые!

Э-э-э... а кто такой Profiler? Это уже есть в FAQ'е?
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486765
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, блин, дошло!!!!!

вставляя в #t новую запись мы тем самым обновляем @@identity.

Вот так всегда - по отдельности понятно, а как связать не понятно.
А людям которые пытаются объяснить, всё настолько очевидно, что они не понимают чего не понятно

Большое спасибо, добрые люди.
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486843
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем разговор.

После обновления подчиненной формы указатель текущей записи "улетает" на верх. Хочется вернуть его на только что отредактированную запись. Как это сделать в mdb понятно:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Form_AfterUpdate()
    Dim lngItemID As Long
    lngItemID = Me.tboItemID    
    Me.Refresh    
    Me.RcordsetClone.FindFirst  "ItemID = "  & lngItemID 
    Me.Bookmark = Me.RcordsetClone.Bookmark 
End Sub

В ADP такой приём не работает.
Вариант с DoCmd.FindRecord (как советуют знающие люди) мне не очень понятен - для использования этой команды надо передвинуть фокус в поле по которому будет произведён поиск (или нет?), а если Me.tboItemID.Visible = False, тогда как?

Короче.. Как в ADP передвинуть указатель записи, если известно ID этой записи?
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32486923
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже несколько способов - у меня на сайте
...
Рейтинг: 0 / 0
ADP - Подчиненная Форма - Ошибки
    #32487014
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Помогло...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP - Подчиненная Форма - Ошибки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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