|
|
|
| Для контроля за изменениями таблиц я сделала для всех таблиц запросы на выборку и эти запросы объединила в один запрос по полям Дата_изменения и Время_изменения. Также в запросы были добавлены ключевые поля для того, чтобы я видела, какая таблица и какая запись таблицы была изменена.
Это сделано не для того, чтобы ловить злоумышленников. По дате последнего изменения особо не поймаешь. еще неизвестно, кто вредил, последний редактирующий или тот, кто было до него. Поэтому сделано это исключительно для того, чтобы мне мои подружки не втирали в мозги, что сегодня якобы они уже забили все операции, договоры и т.п. А я смотрю в свою табличку и вижу, что сегодня никаких изменений не вносилось. И сразу видно, врет человек или не врет.
Ну это ладно, это наше внутренее.
А вопросик такой. Можно ли сделать так, чтобы из этого запроса на объединения, а точнее из формы, в которую я этот запрос облачила, при двойном клике или по Enter на любой записи переходить на данную запись в запрос на выборку, из которого эта запись с выделением этой записи допустим желтым цветом.
Я не знаю, делал ли кто-то что-то подобное? Впринципе, это не столь важно. Я без этого хорошо справляюсь. Но я почему-то всегда об этом мечтала. А как реализовать, не знаю. | |
|
| |
|
|
|
| При двойном клике можно менять рекордсоурс, например, подчиненной формы( если вы хотите видеть записи в подчиненной форме ), в которой в условии WHERE ставите ID этой записи, равным выбранной записи . Желтый цвет - бэкколор полей.
А еще лучше - прикрепите то. что сделали - на примерер будет понятней. | |
|
| |
|
|
|
| Енто да. Как такое дело организовать в подчиненной форме - это я разобралась. Но там ведь все просто. По коду записи легко на нее выйти.
С бэккалером разберусь. Спасибо за подсказку.
У меня же проблема в том, что код записи может совпадать из разных таблиц. И вот здесь я никак не пойму, что делать.
А вот примерчик я сделаю. просто у меня таблиц много. Я уменьшу их количество и количество записей и пришлю примерчик. | |
|
| |
|
|
|
| Поскольку идентификатор записи у Вас в запросе имеется, остается определить в из какой таблицы эта запись и(или) какую форму для вывода записи нам вызывать.
Например:
Первый запрос на выборку выбирает измененные записи из таблицы "tblOrders".
У нас есть форма, связанная с таблицей "tblOrders" - "frmOrder"
Добавляем в запрос на выборку поле "frmOrder" As FormName.
Так для всех запросов на выборку.
В результате в записях запроса на объединение, мы будем иметь имя формы и идентификатор записи.
На основании этих данных открываем форму с фильтром данных по идентификатору записи. | |
|
| |
|
|
28 Кб. |
|
| Как просили. | |
|
| |
|
|
|
| На самой форме "CTRL" источник записей не нужен.
Сразу не заметил. | |
|
| |
|
|
|
|
| А вот еще масенький вопросик.
я свою форму переделала и теперь у меня не список, в котором содержатся записи запроса на объединение, а ленточная форма. Я на событии двойной клик поля КОД записываю вот такой код (переписала)
DoCmd.OpenForm Me.FormName, , , "Код=" & Me.FormName
а мне пишут при выполнении: Recordset не является обновляемым.
Код и FormName теперь это отдельные поля. | |
|
| |
|
|
|
| 1. Видимо так:
DoCmd.OpenForm Me.FormName, , , "Код=" & Me.Код
2. Если пишут: Recordset не является обновляемым, значит так оно и есть.
Т.е. запрос в источнике открываемой формы - необновляемый.
На какое действие вылетает сообщение? | |
|
| |
|
|
|
| Сообщение вылетает на двойной клик по полю Код, на котором и стоит данная строчка в событии Двойной клик.
"Код=" & Me.Код? Просто выборка делается по двум полям: код и formname | |
|
| |
|
|
|
| Акогда она выделена строчка в написаном коде, отладку нажми, курсор мышки подведи и посмотри значения.......
Анатолий Вам подчеркнул DoCmd.OpenForm Me.FormName, , , "Код=" & Me.Код
Подставьте туда "Код=12" - реальный номер какой нибудь записи | |
|
| |
|
|
|
| а где посмотреть значения? нажимаю я отладку при появлении ошибки. захожу в редактор кода. там есть меню Debug, а там что нажимать? я все попробовала, но...
просто такая же строчка работает отлично, если все записи находятся в элементе Список. А вот если у меня обычная ленточная форма, где все поля в каждой записи отдельный, вот тогда не получается. | |
|
| |
|
|
|
| Прямо на выделенную строчку и всплывает значение .
Например имя формы, номер кода, содержание переменной и т.д. | |
|
| |
|
|
|
| вот эта строчка работает на элементе список:
DoCmd.OpenForm Me.Список11.Column(5), , , "Код=" & Me.Список11, acFormReadOnly
здесь в Столбце5 списка11 находится название таблицы.
это мне уважаемый Lukas помогал. И через список все отлично работает. Просто я хочу сделать две формы. Одну через элемент Список, а другую через Ленточную форму. Две формы мне нужны, так как в обеих есть свои преимущества. Список мне более удобен визуально, а Ленточная форма удобная, если мне нужно фильтровать или сортировать отдельные столбцы. | |
|
| |
|
|
|
| Есть ещё варьянт
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.FormName & "' "
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.Код & "' " | |
|
| |
|
|
|
| Где этот Lukas .......................
Опять развлекается.........................
безобразие..........блин..........
Все спят что ли?
*************************************************** | |
|
| |
|
|
|
| всплывает подсказка Me.Formname="CTRL". Но это название текущей формы. Видимо в этом и проблема. Пошла пробовать Ваши варианты. | |
|
| |
|
|
|
| DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.FormName & "' "
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.Код & "' "
При обоих вариантах пишет: несоответствие типов данных в выражении. | |
|
| |
|
|
|
| это я предложил - думал там строковое значение......
его ' обрамляют ' | |
|
| |
|
|
|
| а какие есть значения в поле код?
Надо подставить просто тупо значение
код=12 | |
|
| |
|
39 Кб. |
|
| воть файлик. там в CTRL2 все работает через список. а в форме CTRL я сделала ленточную форму. Код срабатывает при двойном клике на поле КОД | |
|
| |
|
|
|
| а какие есть значения в поле код?
Надо подставить просто тупо значение
код=12
DoCmd.OpenForm Me.FormName, , , "Код= 12" или какие там реально имеются коды.......... | |
|
| |
|
|
|
|
| Ну вот так работает ведь
покраймере у меня.....
Private Sub Код_DblClick(Cancel As Integer)
DoCmd.OpenForm Me.FormName, , , "Код = " & Me.Код
End Sub | |
|
| |
|
|
|
| да, но он просто в ЭТОЙ ЖЕ ФОРМЕ фильтрует значения по коду и показывает все значения с таким же кодом.
А нужно, чтобы каждая запись открывалась в своей форме. Там есть формы Frm1 и т.д.
А форма CTRL - это форма на основе запроса на объединение, в котором я просматриваю все записи своих таблиц. Но в итоге при нажатии на нужную запись у меня открывает форма, в которой именно эта запись и содержится.
воть | |
|
| |
|
|
|
| именно поэтому и нужно, чтобы в предложении был и Formname, ведь это поле, в котором содержится открываемая форма. | |
|
| |
|
|
|
|
| Шутница..............
Ну как - теперь лучше?
И подсказка, видишь , была верной Me.FormName = имя текущей формы CTRL?
А не значение поля...............
Приоритеты знаешь ли............. | |
|
| |
|
|
53 Кб. |
|
|
а у меня работает вот возьми | |
|
| |
|
|
|
| ВСЕ. ЗАРАБОТАЛО!!!!!!!!!!!
Наименование поле сменила, это да. Но вот в условии WHERE я забыла убрать Me.Form_name. А теперь я это заменила на Me.Код И ВСЕ ЗАРАБОТАЛО!!!!!!!
ЧМОК, ЧМОК, ЧМОК!!!!!!!!
СПАСИБО! | |
|
| |
|