Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выйти на указанную запись из запроса на объединение
 
 автор: Аленка   (29.09.2008 в 17:30)   личное сообщение
 
 

Для контроля за изменениями таблиц я сделала для всех таблиц запросы на выборку и эти запросы объединила в один запрос по полям Дата_изменения и Время_изменения. Также в запросы были добавлены ключевые поля для того, чтобы я видела, какая таблица и какая запись таблицы была изменена.
Это сделано не для того, чтобы ловить злоумышленников. По дате последнего изменения особо не поймаешь. еще неизвестно, кто вредил, последний редактирующий или тот, кто было до него. Поэтому сделано это исключительно для того, чтобы мне мои подружки не втирали в мозги, что сегодня якобы они уже забили все операции, договоры и т.п. А я смотрю в свою табличку и вижу, что сегодня никаких изменений не вносилось. И сразу видно, врет человек или не врет.
Ну это ладно, это наше внутренее.

А вопросик такой. Можно ли сделать так, чтобы из этого запроса на объединения, а точнее из формы, в которую я этот запрос облачила, при двойном клике или по Enter на любой записи переходить на данную запись в запрос на выборку, из которого эта запись с выделением этой записи допустим желтым цветом.

Я не знаю, делал ли кто-то что-то подобное? Впринципе, это не столь важно. Я без этого хорошо справляюсь. Но я почему-то всегда об этом мечтала. А как реализовать, не знаю.

  Ответить  
 
 автор: FORMAT   (29.09.2008 в 17:42)   личное сообщение
 
 

При двойном клике можно менять рекордсоурс, например, подчиненной формы( если вы хотите видеть записи в подчиненной форме ), в которой в условии WHERE ставите ID этой записи, равным выбранной записи . Желтый цвет - бэкколор полей.
А еще лучше - прикрепите то. что сделали - на примерер будет понятней.

  Ответить  
 
 автор: Аленка   (29.09.2008 в 17:58)   личное сообщение
 
 

Енто да. Как такое дело организовать в подчиненной форме - это я разобралась. Но там ведь все просто. По коду записи легко на нее выйти.
С бэккалером разберусь. Спасибо за подсказку.
У меня же проблема в том, что код записи может совпадать из разных таблиц. И вот здесь я никак не пойму, что делать.
А вот примерчик я сделаю. просто у меня таблиц много. Я уменьшу их количество и количество записей и пришлю примерчик.

  Ответить  
 
 автор: Lukas   (29.09.2008 в 17:48)   личное сообщение
 
 

Поскольку идентификатор записи у Вас в запросе имеется, остается определить в из какой таблицы эта запись и(или) какую форму для вывода записи нам вызывать.
Например:
Первый запрос на выборку выбирает измененные записи из таблицы "tblOrders".
У нас есть форма, связанная с таблицей "tblOrders" - "frmOrder"
Добавляем в запрос на выборку поле "frmOrder" As FormName.

Так для всех запросов на выборку.
В результате в записях запроса на объединение, мы будем иметь имя формы и идентификатор записи.
На основании этих данных открываем форму с фильтром данных по идентификатору записи.

  Ответить  
 
 автор: Аленка   (29.09.2008 в 22:00)   личное сообщение
37 Кб.
 
 

воть пример мой. там внутри написано.

  Ответить  
 
 автор: Lukas   (29.09.2008 в 22:25)   личное сообщение
28 Кб.
 
 

Как просили.

  Ответить  
 
 автор: Lukas   (29.09.2008 в 22:53)   личное сообщение
 
 

На самой форме "CTRL" источник записей не нужен.
Сразу не заметил.

  Ответить  
 
 автор: Аленка   (29.09.2008 в 23:17)   личное сообщение
 
 

Нет слов. Просто нет слов
Все как надо. Ну то, что нужно.

  Ответить  
 
 автор: Аленка   (30.09.2008 в 16:43)   личное сообщение
 
 

А вот еще масенький вопросик.
я свою форму переделала и теперь у меня не список, в котором содержатся записи запроса на объединение, а ленточная форма. Я на событии двойной клик поля КОД записываю вот такой код (переписала)
DoCmd.OpenForm Me.FormName, , , "Код=" & Me.FormName
а мне пишут при выполнении: Recordset не является обновляемым.
Код и FormName теперь это отдельные поля.

  Ответить  
 
 автор: Анатолий (Киев)   (30.09.2008 в 18:51)   личное сообщение
 
 

1. Видимо так:
DoCmd.OpenForm Me.FormName, , , "Код=" & Me.Код
2. Если пишут: Recordset не является обновляемым, значит так оно и есть.
Т.е. запрос в источнике открываемой формы - необновляемый.
На какое действие вылетает сообщение?

  Ответить  
 
 автор: Аленка   (30.09.2008 в 20:30)   личное сообщение
 
 

Сообщение вылетает на двойной клик по полю Код, на котором и стоит данная строчка в событии Двойной клик.

"Код=" & Me.Код? Просто выборка делается по двум полям: код и formname

  Ответить  
 
 автор: час   (30.09.2008 в 20:33)   личное сообщение
 
 

Акогда она выделена строчка в написаном коде, отладку нажми, курсор мышки подведи и посмотри значения.......


Анатолий Вам подчеркнул DoCmd.OpenForm Me.FormName, , , "Код=" & Me.Код
Подставьте туда "Код=12" - реальный номер какой нибудь записи

  Ответить  
 
 автор: Аленка   (30.09.2008 в 20:44)   личное сообщение
 
 

а где посмотреть значения? нажимаю я отладку при появлении ошибки. захожу в редактор кода. там есть меню Debug, а там что нажимать? я все попробовала, но...

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

  Ответить  
 
 автор: час   (30.09.2008 в 20:46)   личное сообщение
 
 

Прямо на выделенную строчку и всплывает значение .
Например имя формы, номер кода, содержание переменной и т.д.

  Ответить  
 
 автор: Аленка   (30.09.2008 в 20:47)   личное сообщение
 
 

вот эта строчка работает на элементе список:
DoCmd.OpenForm Me.Список11.Column(5), , , "Код=" & Me.Список11, acFormReadOnly
здесь в Столбце5 списка11 находится название таблицы.

это мне уважаемый Lukas помогал. И через список все отлично работает. Просто я хочу сделать две формы. Одну через элемент Список, а другую через Ленточную форму. Две формы мне нужны, так как в обеих есть свои преимущества. Список мне более удобен визуально, а Ленточная форма удобная, если мне нужно фильтровать или сортировать отдельные столбцы.

  Ответить  
 
 автор: час   (30.09.2008 в 20:50)   личное сообщение
 
 

Есть ещё варьянт
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.FormName & "' "
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.Код & "' "

  Ответить  
 
 автор: час   (30.09.2008 в 20:51)   личное сообщение
 
 

Где этот Lukas .......................
Опять развлекается.........................
безобразие..........блин..........
Все спят что ли?
***************************************************

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:22)   личное сообщение
 
 

всплывает подсказка Me.Formname="CTRL". Но это название текущей формы. Видимо в этом и проблема. Пошла пробовать Ваши варианты.

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:25)   личное сообщение
 
 

DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.FormName & "' "
DoCmd.OpenForm Me.FormName, , , "Код=' " & Me.Код & "' "

При обоих вариантах пишет: несоответствие типов данных в выражении.

  Ответить  
 
 автор: час   (30.09.2008 в 21:28)   личное сообщение
 
 

это я предложил - думал там строковое значение......
его ' обрамляют '

  Ответить  
 
 автор: час   (30.09.2008 в 21:30)   личное сообщение
 
 

а какие есть значения в поле код?
Надо подставить просто тупо значение
код=12

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:32)   личное сообщение
39 Кб.
 
 

воть файлик. там в CTRL2 все работает через список. а в форме CTRL я сделала ленточную форму. Код срабатывает при двойном клике на поле КОД

  Ответить  
 
 автор: час   (30.09.2008 в 21:31)   личное сообщение
 
 

а какие есть значения в поле код?
Надо подставить просто тупо значение
код=12
DoCmd.OpenForm Me.FormName, , , "Код= 12" или какие там реально имеются коды..........

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:35)   личное сообщение
 
 

Ставлю я Код=2. Снова пишет, что рекордсет не является обновляемым.
А может посмотрите файлик?

  Ответить  
 
 автор: час   (30.09.2008 в 21:38)   личное сообщение
 
 

Ну вот так работает ведь
покраймере у меня.....

Private Sub Код_DblClick(Cancel As Integer)
DoCmd.OpenForm Me.FormName, , , "Код = " & Me.Код
End Sub

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:43)   личное сообщение
 
 

да, но он просто в ЭТОЙ ЖЕ ФОРМЕ фильтрует значения по коду и показывает все значения с таким же кодом.
А нужно, чтобы каждая запись открывалась в своей форме. Там есть формы Frm1 и т.д.
А форма CTRL - это форма на основе запроса на объединение, в котором я просматриваю все записи своих таблиц. Но в итоге при нажатии на нужную запись у меня открывает форма, в которой именно эта запись и содержится.
воть

  Ответить  
 
 автор: Аленка   (30.09.2008 в 21:45)   личное сообщение
 
 

именно поэтому и нужно, чтобы в предложении был и Formname, ведь это поле, в котором содержится открываемая форма.

  Ответить  
 
 автор: час   (30.09.2008 в 21:47)   личное сообщение
 
 



Видимо FormName - зарезервированное слово отсю да вся колбасия
назови иначе и будет удача

Form_Name

  Ответить  
 
 автор: час   (30.09.2008 в 21:52)   личное сообщение
 
 

Шутница..............
Ну как - теперь лучше?

И подсказка, видишь , была верной Me.FormName = имя текущей формы CTRL?
А не значение поля...............
Приоритеты знаешь ли.............

  Ответить  
 
 автор: Аленка   (30.09.2008 в 22:02)   личное сообщение
 
 

Да, в подсказке было имя текущей формы.
А вот счастья я так и не дождалась.
Назвала я поле Form_name.
НО ТЕПЕРЬ ЭТА СВОЛОЧЬ ПРОСИТ ВВЕСТИ ЗНАЧЕНИЕ ПОЛЯ FORM_NAME И ПОСЛЕ этого просто открывает соответствующую форму пустую, вообще без значений. И даже если в качестве значения я ввожу название формы, все равно, открывает пустую форму.
Замучила я вас наверное.

  Ответить  
 
 автор: час   (30.09.2008 в 22:05)   личное сообщение
53 Кб.
 
 


а у меня работает вот возьми

  Ответить  
 
 автор: Аленка   (30.09.2008 в 22:06)   личное сообщение
 
 

ВСЕ. ЗАРАБОТАЛО!!!!!!!!!!!
Наименование поле сменила, это да. Но вот в условии WHERE я забыла убрать Me.Form_name. А теперь я это заменила на Me.Код И ВСЕ ЗАРАБОТАЛО!!!!!!!

ЧМОК, ЧМОК, ЧМОК!!!!!!!!
СПАСИБО!

  Ответить  
 
 автор: час   (30.09.2008 в 22:07)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList