powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
25 сообщений из 67, страница 2 из 3
в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
    #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
25 сообщений из 67, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в ленточной форме с необновляемым набором перехватить реакцию на попытку обновления записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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