powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
67 сообщений из 67, показаны все 3 страниц
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32808585
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли как-то в ленточной форме с необновляемым набором перехватить ее реакцию на попытку обновления записи?

Дело в том, что необновляемый набор получился вследствии перевода MDB в ADP ( в MDB запрос был обновляемым и ленточная форма для его редактирования очень естественно для его использовалаь).

Хотелось бы как-то перехватывать попытку пользователя обновить/удалить/добавить запись
и далее в своем обработчике с помощью INSTEAD OF UPDATE,DELETE,INSERT триггера на View формы модифицировать т.о. базовые таблицы View, затем делать requery источника формы.

Пока я это все делаю вызовом на каждой записи по кнопке отдельной дополнительной формы для редактирования,
от чего и хотелось бы избавиться, т.е. сделать редактирование таким же естественным , как это было прежде в MDB.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32808599
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiнеобновляемый набор получился вследствии перевода MDB в ADP
А если все-таки бороться с причиной и вынести текст запроса сюда и попытаться сделать его обновляемым?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32808605
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли как-то в ленточной форме с необновляемым набором перехватить ее реакцию на попытку обновления записи?
Если набор необновляемый - то никакой попытки обновления и не будет. И реакции не будет. Чего перехватывать-то собрались???
И уж тем более дело никогда не дойдет до триггеров Instead Of
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809470
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Темный >
Я не случайно рассказал о том, как он был получен - в MDB все работало прекрасно, поэтому его не надо делать обновляемым, ибо - невозможно. Это 4 таблицы, связаные отношениями один много, через LEFT JOIN.
2 Лох Позорный >
Если набор необновляемый - то никакой попытки обновления и не будет. И реакции не будет. Чего перехватывать-то собрались???
Ну может это и не реакция для Вас, но когда я нажимаю клавишу для редактирования значения в поле этого запроса, то в строке статуса пишется - "Данный набор записей не допускает обновление". Вот от это то и хотелось бы перехватить.НО я так чувствую, что не удастся.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809532
Хорошо, а почему тогда нельзя применить представление с INSTEAD OF триггерами (и не забыть добавить в его описание WITH VIEW_METADATA)?

Поскольку, как я тоже полагаю, сообщение "Данный набор записей не допускает обновление" вряд ли можно перехватить, то нужно "обмануть" Access, чтоб он "думал", что источник записей обновляемый, а собственно обработку изменений данных возложить на сервер. Тоже, конечно, не панацея, но, может, для конкретной задачи и подойдёт?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809567
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
присоединюсь к Темному
если в mdb обновлялся, то в adp тоже
должен обновляться
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809598
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADP строже.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809687
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего надо просто разобратся
и грамотно заполнить свойства UniqueTable & ResyncCommand

На крайний случай можно сделать фичу аля .net
сделать свободные контролы парные контролам с данными
спрятать из на задний план
при получении фокуса контролом с данными
копировать его содержимое в парный свободный
и передавать фокус на него фокус
на AfterUpdate свободного контрола
повесить код который будет сливать содержимое на сервер
и обновлять строку рекордсета(Recordset.Resync AffectRecords, ResyncValues)
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809829
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тимур Рахимов > Хорошо, а почему тогда нельзя применить представление с INSTEAD OF триггерами (и не забыть добавить в его описание WITH VIEW_METADATA)?
Так я так и делаю, правда не знаю пока что такое WITH VIEW_METADATA?
Так и делаю только вопрос не в этом , а как сделать редактирование таким же естесственным , как это было в MDB.
2 ищ> если в mdb обновлялся, то в adp тоже
должен обновляться

ну вроде хотя бы с моих описаний видно , что это не так - К СОЖАЛЕНИЮ !
2 Latuk >
Списибо еще раз, так как я уже видел ваш пост на подобную тему где-то и почти так и сделал, но вопрос оказывается не в этом , а в том что в ленточной форме это (подкаладка полей , передача фокуса,...) невозможна, и приходится открывать отдельный бланк для редактирования каждой записи, что по сравнению с Access MDB пользователю жутко неудобно - он уже привык к свободному редактированию в ленточной форме - В ЭТОМ ДЕЛО !
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809837
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
More 2 Latuk > Скорее всего надо просто разобратся
и грамотно заполнить свойства UniqueTable & ResyncCommand

Это , если Вы обратили внимание на то , какой запрос, - неприемлемо, ибо - невозможно использовать.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809861
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
More
2 Тимур Рахимов >
Хорошо, а почему тогда нельзя применить представление с INSTEAD OF триггерами (и не забыть добавить в его описание WITH VIEW_METADATA)?

Я не очень понятно ответил, т.к. забыл еще одну неприятную вещь - ДАЖЕ если использовать триггер INSTEAD OF на необновляемый вью в форме, - все равно запрос остается необновляемым !!!
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809872
yuniki2 Тимур Рахимов > Хорошо, а почему тогда нельзя применить представление с INSTEAD OF триггерами (и не забыть добавить в его описание WITH VIEW_METADATA)?
Так я так и делаю, правда не знаю пока что такое WITH VIEW_METADATA?
Эта опция представления ( CREATE VIEW ... WITH VIEW_METADATA ) - совершенно необходимая вещь для решения поставленной задачи. Если её опустить, то шибко умный Access вместо обращения к view как к единой таблице будет пытаться напрямую обращаться к таблицам, его составляющим. А поскольку способ соединения таблиц в нём заведомо не позволяет обновление (иначе зачем INSTEAD OF триггеры городить?), то не преуспеет в этом.

Наберите в этом форуме в качестве строки поиска VIEW_METADATA и прочитайте всё снизу доверху. Если останутся вопросы (что маловероятно), я на них отвечу.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32809937
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на каком основании
ты решил, что
"невозможно использовать" обновление?
а я считаю, что возможно
и у меня работает
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810010
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> а в том что в ленточной форме это (подкаладка полей , передача фокуса,...) невозможна

Ето что за новости такие , почему ето невозможна у мине усе работает
именно в ленточной форме (может имелась ввиду табличная)

вот еще вариант для тех кто очень хочет "как в mdb"
создать рядом mdb
создать в ем табличку с требуемыми полями
слить туды результат запроса
открыть на ей рекордсет
открыть на ем форму
при закрытии измененные записи слить на сервер
получится этакий аналог датасета из нета

PS WITH VIEW_METADATA не поможет редактировать сложную вьюху
глюпый аксес се равно прочухает внутренние таблички
и потребует иметь пермишины на SELECT на все таблицы содержащиеся в FROM
иначе набор будет не редактируемым

редактироввать через представление не имея SELECT на таблицу
можно только вьюхи имеющие FROM из одной таблицы (по крайней мере в 2002-м)
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810064
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тимур Рахимов > Эта опция представления (CREATE VIEW ... WITH VIEW_METADATA) - совершенно необходимая вещь для решения поставленной задачи. Если её опустить, то шибко умный Access
Попробовал - все равно даже при просмотре этого View в окне представлений (я уж не говорю о ленточной форме)
Access при попытке редактирования говорит, что
"Данный набор записей не доаускает обновление" . Хотя это View прекрасно в EM от MsSQL 2000 редактируется как надо.
2 Latuk>
Ето что за новости такие , почему ето невозможна у мине усе работает
именно в ленточной форме (может имелась ввиду табличная)


Да я не понимаю, как это может быть - о чем ты говоришь ?
В ленточной форме находится РЯД записей , а не одна запись, - если одна - нет проблем! (Это вроде уже мной как-бы давно пройдено.)
Так вот - при размещении в области данных свободного поля после его отображения во всех записях будет светиться в нем одно и то же!!! Это и мешает в ленточной форме!!!

PS WITH VIEW_METADATA не поможет редактировать сложную вьюху
глюпый аксес се равно прочухает внутренние таблички
и потребует иметь пермишины на SELECT на все таблицы содержащиеся в FROM
иначе набор будет не редактируемым


При чем тут пермишины - я разве сказал , что их нет на базовые таблицы вьюхи ? они у меня есть на все таблицы.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810072
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ищ > Я ни в коей мере не покушаюсь на то, что у тебя работает, по поводу своего случая я все описал - что и почему, а вот что у тебя - непонятно.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810111
otto_kreiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вариант, почти как у Latuk:
освобождать рекордсет формы от сервера и делать его обновляемым.
Как именно - было уже куча примеров.
После обновления нужного контрола посылать команду на обновление на сервер.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810114
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как оторвать, знаю. А как сделать обновляемым оторванный рекордсет ?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810169
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otto_kreiz> Еще вариант, почти как у Latuk:
освобождать рекордсет формы от сервера и делать его обновляемым.

Мда-уж... - распространись , плиз, подробнее и потом, что тут похожего на вариант Latuka ?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810173
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"по поводу своего случая я все описал - что и почему, а вот что у тебя - непонятно"
это у тебя ничего непонятно.
ты нам не привел ни строчки
кода, ни команды синхронизации
ни однозначной таблицы,
а тока даешь нам свои
пространные рассуждения.
никакой конкретики.
тебе уже надавали кучу
советов, а у тебя мозги
никак не просветлеют
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810233
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем так нападать юноша? Вы же ничего не поняли из всего топика.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810236
Думаю, Ищ прав - необходимая информация для того, чтобы начать решать задачу самостоятельно, здесь уже давно присутствует.

Всё же считаю нужным уточнить свой совет: WITH VIEW_METADATA - необходимый элемент для "обновляемости", но не единственный. В частности, чтобы Access решил, что представление обновляемое, ему для какой-то надобности требуется, чтобы в его список полей были включены primary key (или UNIQUE INDEX ) всех таблиц, участвующих в представлении.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810346
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тимур Рахимов > ему для какой-то надобности требуется, чтобы в его список полей были включены primary key (или UNIQUE INDEX) всех таблиц, участвующих в представлении

а вот это уже что-то забрезжило...
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810401
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут светом его обливают
а он: "забрезжило".
брезжи-брезжи.
может и озарит как-нибудь
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810423
На этом пути встретятся ещё проблёмы. Я о них говорить не стал, в надежде, что вы с ними не столкнётесь. Будем надеяться на лучшее.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810454
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только не понятно - каким должны быть свойства
уникальная таблица и команда синхронизации для запроса из 4 таблиц :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT Контакты.*, Клиенты.КрНаим AS КрНаим, 
    КонтЛица.ФИО AS ФИО, КонтЛица.Тел AS Тел, 
    Должности.Наим AS Должность, 
    Должности.Id AS IdДолжность, 
    КонтЛица.IdDolgnost AS Expr3,
    Клиенты.Id AS Expr1, 
    КонтЛица.IdKlienta AS Expr2
FROM dbo.Должности RIGHT OUTER JOIN
    dbo.КонтЛица ON 
    dbo.Должности.Id = dbo.КонтЛица.IdDolgnost RIGHT OUTER JOIN
    dbo.Клиенты INNER JOIN
    dbo.Контакты ON 
    dbo.Клиенты.Id = dbo.Контакты.IdKlienta ON 
    dbo.КонтЛица.Id = dbo.Контакты.IdKontLica
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810458
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Подпрыгивая от нетерпения) А меня, а меня! Как оторванный делать обновляемым ? Кода!
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810482
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты скажи - как его отрывать - то собираешься -
отсоединенный набор записей что-ли делать предлагаешь ?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810635
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>при размещении в области данных свободного поля после его отображения
>во всех записях будет светиться в нем одно и то же!!! Это и мешает в
>ленточной форме!!!

Э не кычи так дарагой,все слишу,все панимаю.
все можна,все полющиса вай

Ключевой слов "на задний план"
контрол непривязанный к данным выскочит напередний план только в текущей строке
в остальных строках будет виден контрол привязанный к данным

Но я табе советую разобратся с командой синхронизации

однозначная таблица Контакты судя по всему у нее
(смотрите почти пелепят свездочку наскрось вижу)
есть таки поле id и наверное оно счетчик и наверное оно ключевое
значится как будет команда синхронизации

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT Контакты.*, Клиенты.КрНаим AS КрНаим, 
    КонтЛица.ФИО AS ФИО, КонтЛица.Тел AS Тел, 
    Должности.Наим AS Должность, 
    Должности.Id AS IdДолжность, 
    КонтЛица.IdDolgnost AS Expr3,
    Клиенты.Id AS Expr1, 
    КонтЛица.IdKlienta AS Expr2
FROM dbo.Должности RIGHT OUTER JOIN
    dbo.КонтЛица ON 
    dbo.Должности.Id = dbo.КонтЛица.IdDolgnost RIGHT OUTER JOIN
    dbo.Клиенты INNER JOIN
    dbo.Контакты ON 
    dbo.Клиенты.Id = dbo.Контакты.IdKlienta ON 
    dbo.КонтЛица.Id = dbo.Контакты.IdKontLica
WHERE dbo.Контакты.Id = ?

PS не забудь что пермишны надо раздать на все таблицы
ну да не дошел наверно до этого еще из под овнера наверно базу юзаеш.
не допреш сам полож ADP-ник с формой и бакап базы ,
с таблицами из запроса и небольшим кол-вом тестовых данных
покажу как.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810645
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после беглого прочтения...


Темный yunikiнеобновляемый набор получился вследствии
перевода MDB в ADP
А если все-таки бороться с причиной и вынести текст запроса сюда и попытаться сделать его обновляемым?

истина


ЛПЕсли набор необновляемый - то никакой попытки обновления и не будет.

истина

ЛП
И реакции не будет. Чего перехватывать-то собрались???

реакция будет- ошибка формы
её и обрабатывать

запустить ХР с параметрами в ней вставить в нужные поля нужных таблиц в нужном порядке нужные значения, чтоб сохранить все связи и целостность данных.

потом сделать ресинк одной записи


как пример
обновление данных в ленточной форме на основе SP
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810657
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получилось из меня телепата
надо было сразу картинки включить
(почему то когда нажимаеш ответить картинки не отображает)

в общем тама два ключевых поля значит в WHERE будет два "?" к этим полям

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

кстати еще не ясно какую таблицу хотелось редактировать
может тоже промахнулся тута можно и до Клиенты добратся.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810761
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk >

Ключевой слов "на задний план"

А как на задний план ? я это делаю так :
создаю парный свободный контрол,
отодвигаю старый привязанный,
на его место ставлю парный свободный,
после чего заслоняю его старым привязанным
И результат - при отображении на форме видны все свободные парные контролы из-под привязанных !!!!!
Хотя я их даже по размерам меньше сделал
Еще событие такое есть :

Код: plaintext
1.
2.
3.
4.
Private Sub ПривязанныйФИО_Enter()
Me.СвободныйФИО = Me.ПривязанныйФИО
Me.СвободныйФИО.SetFocus
End Sub

вот и рис показывает это




Я бы сказал, что ключевой слов еще и "передача фокуса"


однозначная таблица Контакты судя по всему у нее
(смотрите почти пелепят свездочку наскрось вижу)
есть таки поле id и наверное оно счетчик и наверное оно ключевое


Не совсем - по рисунку же видны ключевые поля,они жирные.И потом не понятно все равно
с однозначной таблицей - ведь она предназначена ТОЛЬКО для правки в ЕЕ полях, а нужно во ВСЕХ полях запроса ( ну, точнее, всех, кроме Expr1,Expr2,Expr3 ),т.е. всех таблиц !
Как в этом случае этот механизм будет работать - не понятно!
А ну вот увидел твое кстати еще не ясно какую таблицу хотелось редактировать
еще раз скажу - все поля всех таблиц.


совсем не обязательно вообще обращать на них внимание
поскоку каманду синхронизации можно формировать без параметров (на текущая запись)
заполняя ее строкой с любым Where

неясно - как с любым? Как запись-то обновляемая определится?



PS не забудь что пермишны надо раздать на все таблицы
ну да не дошел наверно до этого еще из под овнера наверно базу юзаеш.


Опять пермишны?!
Я уже говорил, что все роздано - при чем вообще здесь пермишны? Юзаю под sa.



2 Вадя > после беглого прочтения...
после беглого прочтения высказывания неудачные - читай внимательнее посты и мои ответы на них (а топик приведенный я уже читал вчера)
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810778
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему
dbo.Клиенты INNER JOIN dbo.Контакты ?
думаю неоднозначность здесь, нужно
dbo.Клиенты RIGHT OUTER JOIN dbo.Контакты
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32810906
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2yuniki
>Не совсем - по рисунку же видны ключевые поля,они жирные
я ж поправился потом,просто у меня рисунки отключены были.
Предложение:
>полож ADP-ник с формой и бакап базы ,
>с таблицами из запроса и небольшим кол-вом тестовых данных
>покажу как.

остается в силе
проблемма твоя решается стандартным способом за 5 минут.
не забудь сказать поля какой таблицы собираешся редактировать

PS Если будеш посылать на мыло из профиля предупреди на форуме
ато это у меня мусорный ящик (редко заглядываю)
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811109
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после более спокойного прочтения...

у тебя есть форма на ХП не обновляемая?
(ну такая получилась .., при переносе из мдб)

тебе нада её редактироватьь как в мдб?

тебе важен способ как ты этого достигнешь, или конечный результат?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811330
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk>
Да ты скажи, лучше как дубликатный контрол-то подложить - видишь же на картинке, что у меня получилось. Пошли пример, на yuniki@rambler.ru.

Если ты предлагаешь послать для того, что сказал
PS не забудь что пермишны надо раздать на все таблицы
ну да не дошел наверно до этого еще из под овнера наверно базу юзаеш.
не допреш сам полож ADP-ник с формой и бакап базы ,
с таблицами из запроса и небольшим кол-вом тестовых данных
покажу как.

На это я ответил выше.Т.е. я не понимаю, что ты предлагаешь раздать, если и так все роздано.

2 Вадя> Конечно способ важен и результат, способ нужно чтобы был минимально трудозатратным.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811513
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk>
Все таки послал я тебе на avrallv@mail.ru свой пример, посмотри , плиз.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811522
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk> не забудь сказать поля какой таблицы собираешся редактировать

Так как я уже говорил - все поля в запсиси на форме.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811585
otto kreiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Программист-любитель:


Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim SQL as String
SQL = "любой самый что ни на есть необновляемый запрос, включая группировки и т.п."
rs.CursorLocation = adUseClient 'Обязательно курсор клиентский
rs.Open SQL, cn, adOpenStatic, adLockOptimistic, adCmdText
Set rs.ActiveConnection = Nothing 'убиваем соединение
Set Me.sfWHDets.Form.Recordset = rs
Set rs = Nothing

теперь подформа sfWHDets.Form стала обновляемой, в том числе можно удалять записи. Естественно, база на сервере ничего об этом не узнает, с ней нужно работать отдельно.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811701
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki родной, ты когонибудь кроме себя слушаеш или нет?
как сделать тебе давно уже сказали
может на пальцах понятнее станет
в прикрепленном файле бакап базы и ADP-к
(дал бы свой я бы у табе поправил а так извиняй за тестовые имена)

Форма1 - стандартный подход со строкой синхронизации с параметрами
Форма2 - Свободный контрол(Поле16) спрятанный под контрол с данными (Name1)
Поверь мне между "заслоняю его старым привязанным" и "на задний план" есть разница
Форма3 - динамически формируемая команда синхронизации без параметров
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811757
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Естественно что редактировать можно только те поля со стороны LEFT & RIGHT
Для которых существует запись в соотв таблице
отсутствие оных надо проверять отдельно
PS В примере ошибка СохраненнаяПроцедура1 переименовать в Форма1Resync
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32811926
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk> yuniki родной, ты кого--нибудь кроме себя слушаешь или нет?

Что же я не слушаю, вроде как это на мои ответы реакции нет.
Например,
ты хотел получить от меня посылку, я тебе ее отправил, но ты почему-то не отвечаешь,
я тебя спрашиваю по 2 раза - зачем пермишны, ты твердишь про них вновь, не глядя на то, что я тебе ответил про них ответил, хотя и без ответов ясно, что незачем упоминать про пермишны.
Про то, что подложить свободный контрол мне не удается , ты тоже не реагируешь, и все это оказывается я никого не слушаю, а не наоборот.
Про то, что надо все поля всех таблиц на форме редактиорвать ты тоже ноль внимания
Про команду синхронизации с запросом из 4 таблиц (поля всех, что показаны на форме, надо обновлять) - тоже ноль.

Ну так и как же тут вести беседу?

Мда... , закачал твой файл - сплошной облом :
1) у меня Access2000
2) ResyncSQL.Bak - не хочет Restore'иться , хотя ,например, мои базы нормально восстанавливаются.


Поверь мне между "заслоняю его старым привязанным" и "на задний план" есть разница

Ты на словах просто скажи в чем разница и как ее достигнуть.


PS: Ты получил мой-то файл на свой e-mail из профиля?
Да , последний твой пост прочитал, сделай поправку на это в том , что сказал выше .
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812001
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2yuniki
смотри мыло там твой пример исправленный

>Ты на словах просто скажи в чем разница и как ее достигнуть.
заходиш в конструктор формы
Ставиш курсор на контрол с данными Ctrl-C , Ctrl-V получаеш дубль
стираеш у него привязку к данныи получаеш свободный контрол
кладеш его на контрол сданными и выравниваеш по краям
чтобы парные контролы оказались точно друг над другом
ставиш курсор на свободный контрол
формат - на задний план
ВСЕ

Но это табе не надо, а надо просто заполнить строку синхронизации обычным
стандартным образом (см Гетца том 2)
форма сама возьмет значения ключевых полей из текущей строки
и подставит их в комманду синхронизации вместо "?"
единственное что может понадобится это проконтролировать
редактирование полей со стороны LEFT & RIGHT
Для которых отсутствует запись в соотв таблице
и либо добавлять ее либо запрещать редактирование этих полей
(например с помощью условного форматирования)
но как правило такого не бывает потому что редактируется только одна таблица
остальные же используются как справочники
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812031
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Мда... , закачал твой файл - сплошной облом :
Почитай правила оформления топиков
там сказано что если хочеш избежать проблемм подобных этой
то должен указать версии своего ПО
естественно обломился у меня Acc2002 & MSSQL2000SP3a

2000 не самый лучший вариант для разработки ADP
До SP2 работать с ним практически не возможно

Да еще забудь про VIEW_METADATA оно тебе тоже пока не надо
его юзают тока при продвинутой безопастности
когда стандартных пермишинов не хватает
для ограничения доступа юзеров к таблицам.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812055
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk >
кладеш его на контрол сданными и выравниваеш по краям
чтобы парные контролы оказались точно друг над другом
ставиш курсор на свободный контрол
формат - на задний план


Ну вот опять непонятки - что значит формат на задний план ?
А вообще ты же можешь у моего 2000 посмоотреть, он же возьмется 2002.
Я все вроде так и сделал, как ты говорил.

Да еще забудь про VIEW_METADATA оно тебе тоже пока не надо

А без него и не идет нормальный вариант, предложенный Тимур Рахимов . Это самый простой способ.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812057
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да , Access2000+SP3 у меня , SQL Server2000 +SP3
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812084
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk >
К сожалению, твою посылку на мыло не получил,

потому что редактируется только одна таблица
остальные же используются как справочники


Вот из этого могу сделать вывод , что насчет команды синхронизации ничего сделать невозможно , так как у меня редактируются поля трех таблиц ( уже в n-й раз повторяю) в одной записи на форме.(Так было в MDB)
Хотя , наверное , насчет этого надо отдельный топик сдлеать.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812086
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiМожно ли как-то в ленточной форме с необновляемым набором перехватить ее реакцию на попытку обновления записи?

Дело в том, что необновляемый набор получился вследствии перевода MDB в ADP ( в MDB запрос был обновляемым и ленточная форма для его редактирования очень естественно для его использовалаь).

Хотелось бы как-то перехватывать попытку пользователя обновить/удалить/добавить запись
и далее в своем обработчике с помощью INSTEAD OF UPDATE,DELETE,INSERT триггера на View формы модифицировать т.о. базовые таблицы View, затем делать requery источника формы.

Пока я это все делаю вызовом на каждой записи по кнопке отдельной дополнительной формы для редактирования,
от чего и хотелось бы избавиться, т.е. сделать редактирование таким же естественным , как это было прежде в MDB.

а Однозначная таблица (Unique Table) Вы меняли? (сорри, всего не читал, может, уже обсуждалось)
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812127
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще ты же можешь у моего 2000 посмоотреть, он же возьмется 2002.
Я его уже посмотрел исправил и отправил назад
>К сожалению, твою посылку на мыло не получил,
ок щаз попробую с другого ящика
>Вот из этого могу сделать вывод , что насчет команды синхронизации ничего сделать невозможно
Вывод неправильный (см пример)
редактировать можно все поля кроме тех которые со стороны LEFT & RIGHT
Для которых отсутствует запись в соотв таблице
но иэто можно обойти включив в запрос ключевые поля этих таблиц
и проверяя их на NULL при попытке редактирования добавлять соотв запись в соотв таблицу

команда синхронизации нужна только для отображения результата редактирования на форме.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812174
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ну вот опять непонятки - что значит формат на задний план ?
Это пункты меню
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812294
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За картинку спасибо, подготовил уже было пост
А ну вот, вроде понял, как поместить на задний план контрол:
оказывается , если на форме уже есть контрол,
то вновь создаваемый нельзя засунуть под него
нужно, таким образом , всегда вначале создать контролы заднего плана, а затем уже те, что будут их заслонять , наоборот не получается.
(т.е. если дословно следовать шагам , приводлимым Latuk, то не получится, нужно наоборот, хотя у него Access2002, может там есть какой-то формат, который позволяет поместить на задний план...)
Может я не прав, но пока это решение.
Меня это ,конечно, сильно сбило , поэтому этот способ и получался.
Но теперь с этим все OK.

команда синхронизации нужна только для отображения результата редактирования на форме.
Я понимаю, так вот пока не могу усечь , как добиться этого отображения для всех затронутых редактированием записей.
мыла пока нет.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812440
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Create  VIEW dbo.QView1
AS
SELECT     dbo.Контакты.*, dbo.Клиенты.КрНаим AS КрНаим, dbo.КонтЛица.ФИО AS ФИО, dbo.КонтЛица.Тел AS Тел, dbo.Должности.Наим AS Должность, 
                      dbo.Должности.Id AS IdДолжность, dbo.КонтЛица.IdDolgnost AS IdDolgnostКонтЛица, dbo.Клиенты.Id AS IdКлиенты, 
                      dbo.КонтЛица.IdKlienta AS IdKlientaКонтЛица
FROM         dbo.Должности RIGHT OUTER JOIN
                      dbo.КонтЛица ON dbo.Должности.Id = dbo.КонтЛица.IdDolgnost RIGHT OUTER JOIN
                      dbo.Клиенты INNER JOIN
                      dbo.Контакты ON dbo.Клиенты.Id = dbo.Контакты.IdKlienta ON dbo.КонтЛица.Id = dbo.Контакты.IdKontLica
GO

Create  PROCEDURE dbo.Q1Resync
(@P1 datetime,
@P2 int)
AS SELECT     dbo.Контакты.*, dbo.Клиенты.КрНаим AS КрНаим, dbo.КонтЛица.ФИО AS ФИО, dbo.КонтЛица.Тел AS Тел, dbo.Должности.Наим AS Должность, 
                      dbo.Должности.Id AS IdДолжность, dbo.КонтЛица.IdDolgnost AS IdDolgnostКонтЛица, dbo.Клиенты.Id AS IdКлиенты, 
                      dbo.КонтЛица.IdKlienta AS IdKlientaКонтЛица
FROM         dbo.Должности RIGHT OUTER JOIN
                      dbo.КонтЛица ON dbo.Должности.Id = dbo.КонтЛица.IdDolgnost RIGHT OUTER JOIN
                      dbo.Клиенты INNER JOIN
                      dbo.Контакты ON dbo.Клиенты.Id = dbo.Контакты.IdKlienta ON dbo.КонтЛица.Id = dbo.Контакты.IdKontLica
WHERE     (dbo.Контакты.Дата = @P1) AND (dbo.Контакты.IdKlienta = @P2)



Форму Контакты_Q3 исправил
Контакты1 -стандартный подход со строкой синхронизации с параметрами
Контакты2 - динамически формируемая команда синхронизации без параметров
см событие текущая запись WHERE Может быть любым каким захочеш
главное чтобы запрос вернул строку с тем же перечнем полей
и FROM бал такой же как у источника формы

Выполни скрипт и создаш в своей базе ХП и вьюху
Привяжи ADP к своей базе

PS все я пошел пить пиво
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812728
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2yuniki
ты бы скинул и мне бэкар базы и адп

всё не нада только по теме

чё-то заинтриговали
мыло в профиле.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32812772
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk>
Спасибо, пример твой рассмотрел,
НО , как , оказалось, он не дает решения о котором идет речь,
приведены просто известные стандартные варианты редактирования полей одной уникальной таблицы ,
и о чем тогда копья ломать было ?

Другими словами у меня был такой пост :
потому что редактируется только одна таблица
остальные же используются как справочники

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

ты на это ответил

Вывод неправильный (см пример)
редактировать можно все поля кроме тех которые со стороны LEFT & RIGHT
Для которых отсутствует запись в соотв таблице
но иэто можно обойти включив в запрос ключевые поля этих таблиц
и проверяя их на NULL при попытке редактирования добавлять соотв запись в соотв таблицу


И попробуй в своем примере отредактиовать поле КонтЛица.ФИО - получишь сообщение
"Допускается измененение только полей из уникальной таблицы", а уникальную-то ты задал "Контакты".
Поле КонтЛица.ФИО не подпадает под твои условия LEFT & RIGHT (см выше)

Короче вопрос с командой синхронизации остается - а именно можно ли ее использовать
для случая обновления записей после редактирования нескольких полей из разных баз
Видимо, свойство уникальная таблица уже не понадобиться , т.к. придется делать
триггеры INSTED OF и вью с VIEW_METADATA . А иначе никак не получается.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813012
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>И попробуй в своем примере отредактиовать поле КонтЛица.ФИО - получишь сообщение

У меня поле КонтЛица.ФИО легко редактируется
и в Acc2002 и в Acc2003
возможно это спецефическая реакция 2000-го
Из каких соображений выбран для разработки Acc2000 ?
Там ADP-к откровенно сырой.
но это легко обойти например как в примере от вадя сливать изменения
самому используя для накопления данных свободный контрол
и запуская динамически свормированную команду синхронизации для
отображения изменений на форме
или с подкладыванием свободного контрола у тебя тоже так и не получилось?
Даже если совершенно необходимо сделать именно для Acc2000
то это тоже легко достаточно запустить профайлер и перенести реакцию
Acc2002 на редактирование полей типа КонтЛица.ФИО на события после редактирования
свободных контролов подложенных под поля соотв поля
хотя я бы подумал всетаки о переходе для разработки ADP на Acc2002-2003 где все работает и так.


в Acc2002 и в Acc2003 однозначная таблица используется только для того чтобы форма поняла значения ключевых полей из какой таблицы подставлять
в качестве параметров в команду синхронизации.

>Видимо, свойство уникальная таблица уже не понадобиться , т.к. придется делать
>триггеры INSTED OF и вью с VIEW_METADATA . А иначе никак не получается.
Для начала научись пользоватся простыми вещами.
То как ты заполнил свойство команда синхронизации
в своей форме (см. форму Контакты из примера) обнажает полное непонимание в этом вопросе.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813168
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk>
1)
У меня поле КонтЛица.ФИО легко редактируется
и в Acc2002 и в Acc2003


A что в A2002 свободно редактируются, добавляются,удаляются ВСЕ поля в предложенной мной форме Контакты ?

2)
Даже если совершенно необходимо сделать именно для Acc2000
то это тоже легко достаточно запустить профайлер и перенести реакцию

Здесь не понял , как и для чего ты предлагаешь профайлер

3)
То как ты заполнил свойство команда синхронизации
Это была просто попытка - посмотреть, что будет.
В своем понимании я руководствуюсь Help A2000, в котором сказано , что МОЖНО РКДАКТИРОВАТЬ ТОЛЬКО ПОЛЯ ОДНОЗНАЧНОЙ ТАБЛИЦЫ. А что, Help A 2002 в этом месте другой что ли - я не думаю...


4) я бы подумал всетаки о переходе для разработки ADP на Acc2002-2003 где все работает и так

Да , хорошо бы и так, но это надо переносить все наработки Office'ных приложений из 2000 в 2002, которых у меня немало, и я знаю, например, что Excel'ские у меня не переносились в XP например, как в 2002 будут - не знаю.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813184
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2yuniki

смотри почту
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813225
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так там оба файла есть и бекап C4 и ADP
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813400
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>A что в A2002 свободно редактируются, добавляются,удаляются ВСЕ поля в предложенной мной форме Контакты ?

редактируются свободно , но в сделанных мной формах Контакты1 и Контакты2
c правильной командой синхронизации

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

добавлятся мешают индексы по полям не присутствующим на форме
думаю это не большое препятствие

>Здесь не понял , как и для чего ты предлагаешь профайлер
Запускаеш профайлер
запускаеш Acc2002
Юзаеш форму и смотриш какие команды выполняются на сервере
при редактировании тех или иных полей
прописываеш их для Acc2000 вручную
например при редактировании поля ФИО в моей форме Контакты1
происходит следущее
Код: plaintext
1.
2.
3.
4.
5.
6.
exec sp_executesql N'UPDATE "C4"."dbo"."КонтЛица" 
SET "ФИО"=@P1 
WHERE "IdDolgnost"=@P2 AND "IdKlienta"=@P3 
AND "upsize_ts"=@P4', N'@P1 nvarchar(17),@P2 int,@P3 int,@P4 varbinary(8)', N'ГлБухов111fff3344',  2 ,  8 , 0x0000000000001C27

exec sp_executesql N'exec Q1Resync @P1,@P2', N'@P1 datetime,@P2 int', 'апр 11 2004 12:00:00:000AM',  8 


>Это была просто попытка - посмотреть, что будет.
Не знаю чем ты руководствовался но когда в твоей форме Контакты я вижу что
RecordSource=ResyncCommand=UniqueTable="Q1View"
я делаю соотв. выводы

>Help A 2002 в этом месте другой что ли - я не думаю
На заборе тоже написано,а попробывать слабо?


>но это надо переносить все наработки Office'ных приложений из 2000 в 2002
Во первых не такая уж и большая переделка (в отличии скажем от 97->2000)
Во вторых что мешает юзать оба аксеса одновременно?
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813490
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk>
1)
Насчет

>И попробуй в своем примере отредактиовать поле КонтЛица.ФИО - получишь сообщение

У меня поле КонтЛица.ФИО легко редактируется
и в Acc2002 и в Acc2003
возможно это спецефическая реакция 2000-го


Это не просто "спецефическая реакция 2000-го" , это ,как написано в его Help, принципальный момент, т.е. в A2000 запрещается редактировать любые поля , кроме полей уникальной таблицы.
А A2002, кроме всего прочего, у меня нет, так , что в его Help на этот счет сказано, не могу посмотреть, и ты, вообще говоря,тоже об этом молчишь. Хотя то, что у тебя редактируется в A2002 поле ФИО конечно смущает.
Кстати, насчет перехода на A2002 (уж тогда логичнее сразу весь Office 2002), это не так просто - нужно весь завод будет переводить, а там есть и слабые компы, которые могут не потянуть, да и сам объем работы не маленький, не говоря уж о том, что нужно будет убедить народ.


2)
перенести реакцию
Acc2002 на редактирование полей типа КонтЛица.ФИО на события после редактирования
свободных контролов подложенных под поля соотв поля


Тут тоже обнаружил проблемы - если делать me.Recordset.update ПОСЛЕ редактирования
свободных контролов, то получится, что источник 2 раза апдейтится, второй раз будет при выходе из текущей обновленной записи - форма сама еще раз проапдейтит его, а это нехорошо как-то.
Вообще - то на этот счет мне непонятно :
Как вообще в ленточной форме явно апдейтить запись, т.е. на какие события формы надо делать me.Recordset.update , можно ли менять свойства Me.Recordset.LockType ,Me.Recordset.CursorType ,me.RecordsetType , как организовать явную транзакцию в форме.
Т.е. когда форма сама оптимистическим способом занимается обновлением источника, то этих вопросов нет, а когда явно это нужн осделать самому, то тут - проблемы.

3)
И вот еще что - ResyncCommand должна задаваться в синтаксисе T_SQL ?
Ну, например, WHERE с константой datetime как " WHERE Дата = '" & Format(Me.Дата, "mm.dd.yyyy") & "'"


PS.
Пока бьюсь в 2000-м - сделал вариант с триггером INSTEAD OF UPDATE, View ... WITH VIEW_METADATA ,
поля на форме стали редактироваться, правда при этом пришлось их обрабатывать как свободные контролы.
Все в форме редактируется, запись в базе обновляется, но при этом выходит, зараза, сообщение, что
"Данные, добавленные в базу данных, не будут отображены в форме, так как они противоречат условиям на базовый источник записей."
Делаю me.Requery в Form_AfterUpdate - не помогает .Точнее говоря, туда и не приходит управление.
Результат правки (корректный надо сказать) виже после перезагрузки формы,
UniqueTable можно при WITH VIEW_METADATA поставить только Q1View , а ResyncCommand вообще не ставлю, так как в Help сказано, что она отвечает только за правильиное отображение записи после редактирования, а я этог же могу добиться с помощью me.Requery для формы, вот только приведеное выше зараза не дает это сделать (но не при любых правках,и когда дает , то все OK).
Вот таки дела.
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813678
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но при этом выходит, зараза, сообщение
Патамушта
>ResyncCommand вообще не ставлю
и это совсем не то же самое что me.Requery
>там есть и слабые компы, которые могут не потянуть,
Не баись у мине 2002-й работал на P1-200 под Win98 даже быстрее чем 2000-й
>да и сам объем работы не маленький
если хотябы Win2K то все можно сделать не отрываясь от стула
плагин скриптами
на крайний случай есть рунтайм версия которая пакуется в инсталятор
делов останется - запустить у юзера под админскими правами
Чаво админа нет? Все сам делаеш?
>ResyncCommand должна задаваться в синтаксисе T_SQL
это запрос не важно как оформлен (ХП или строка)
должен иметь FROM такой же как у источника,
и возвращать одну строку с таким же кол-вом и типом полей как у источника формы.
Если использовать параметры "?" то форма подставит туда значение ключевых полей однозначной таблицы
почитай у Гетца хорошо описанно.
>" WHERE Дата = '" & Format(Me.Дата, "mm.dd.yyyy") & "
почитай FAQ

PS Голова болит а руки делают
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813689
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ResyncCommand должна задаваться в синтаксисе T_SQL ?
конкретно для твоего случая
SELECT * FROM Q1View WHERE [Дата]=? AND [IdKlienta]=?
или для динамической сборки без параметров поскольку у табе id счетчик
для однозначной идентификации строки будет вполне достаточно
Me.ResyncCommand="SELECT * FROM Q1View WHERE " & Me!id
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32813693
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправочка
Me.ResyncCommand="SELECT * FROM Q1View WHERE id=" & Me!id
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32814223
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот это уже интересно !

Возникает такой интересный вопрос по этому поводу :

Если Resync делается c помощью Select * from Q1View ..., а Q1View состоит из нескольких таблиц, то какие поля и в каком порядке будут образовывать там "первичный ключ" , ведь именно это определяет то, как задавать параметры в ResyncCommand
?????????????
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32814259
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно еще нужно добавить, что у меня однозначная таблица Q1View,
по другому при при WITH VIEW_METADATA нельзя, и
если как ты пишешь Если использовать параметры "?" то форма подставит туда значение ключевых полей однозначной таблицы
почитай у Гетца хорошо описанно.


то и возникает вопрос какие поля и в каком порядке будут ключевыми в этом случае ?
Это, как японимаю, для задания параметров посредством "?" важно .

PS. Если бы у меня еще и Гетц был !
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32814370
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если форма не может определить ключевые поля
для однозначной идентификации строки она делает фильтр по всем полям
Код: plaintext
1.
exec sp_executesql N'UPDATE "C4".."Q1View" SET "КрНаим"=@P1,"ФИО"=@P2 WHERE "Дата"=@P3 AND "IdKlienta"=@P4 AND "upsize_ts"=@P5 AND "IdДолжность" IS NULL AND "IdDolgnostКонтЛица" IS NULL AND "IdКлиенты"=@P6 AND "IdKlientaКонтЛица" IS NULL', N'@P1 nvarchar(3),@P2 nvarchar(1),@P3 datetime,@P4 int,@P5 varbinary(8),@P6 int', N'288', N'8', 'Apr 11 2001 12:00:00:000AM',  10 , 0x00000000000004F8,  10 
в твоем случае гораздо проще не парится с таким кол-вом параметров
а заполнять команду синхронизации динамически
Private Sub Form_Current()
Me.ResyncCommand = "SELECT * FROM Q1View WHERE id=" & Me!Id
End Sub
...
Рейтинг: 0 / 0
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #32814650
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для однозначной идентификации строки она делает фильтр по всем полям

Да я тоже это увидел в профайлере, но это для Update , а если посмотреть , что будет при me.recordset.Resync adAffectCurrent , то оказывается , что даже при при такой провокационной команде, как
Код: plaintext
1.
2.
3.
Me.ResyncCommand = _
 " select * from Q1View " & _
 " where Дата = ? and IdKlienta=? and IdДолжность=?" & _
 "   and IdКонтЛица=? and ФИО=? " 
Можно увидеть :
Код: plaintext
1.
2.
3.
4.
exec sp_executesql 
N' select * from Q1View  
where Дата = @P1 and IdKlienta=@P2 and IdДолжность=@P3 and IdКонтЛица=@P4 and ФИО=@P5 '
, N'@P1 int,@P2 int,@P3 datetime,@P4 int,@P5 nvarchar(1)', 
 1 ,  37 , 'Dec   6   2004    1 : 49 : 14 :000PM',  10 , N' 1 '
Что будет соответствовать , если знать значения полей следующему порядку и составу ключевых полей :
IdДолжность,IdКонтЛица,Дата,IdKlienta,КрНаим

т.е. НЕ ВСЕ при синхронизации она использует, а только необходимые,
Это кстати, вроде как способ, в этой ситуации разобраться как задавать ResynCommand c "?"


А насчет " твоем случае гораздо проще не парится с таким кол-вом параметров
а заполнять команду синхронизации динамически"
- это я тоже понял, что красивее это и использую. Просто по поводу неявной параметризации было интересно - ее ведь не надо формировать динамически, что есть преимущество , форма сама сформирует.
...
Рейтинг: 0 / 0
67 сообщений из 67, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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