Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2008, 08:03   #1
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию Как обновить диаграмму на экранной форме?

Всем привет!

В общем-то вопрос вот в чём - какой командой принудительно обновить диаграмму в форме?

Создана экранная форма. В этой форме есть диаграмма на основе данных из запроса. Запрос в свою очередь составлен на выборке из таблицы. При работе в форме - выбираются какие-то значения; на основе этих значений пересчитывается таблица. И вот после этого пересчёта надо обновить диаграмму. А она не обновляется. Вернее, обновляется, но не спешит отобразить на экране саму себя. В окне диаграммы появляется молочный цвет, а сами кривые где-то "прячутся".

Что характерно для этой ситуации? Кривые появляются после перевода фокуса ввода на другой элемент формы. Пока не переведёшь фокус - диаграмма не обновится (один раз я целую неделю тупо ждал обновления, но так и не дождался ничего, кроме увольнения за прогулы 5 рабочих дней).
Что я только не перепробовал! В программном коде - [Диаграмма 527].Requery; [Forms]!...Refresh - не действуют. Пробовал программно передавать фокус другим элементам формы. Да, эти операторы выполняются, но обновления на экране самой диаграммы не происходит. Правильнее сказать не "обновление", а "отображение обновлённой".
Прочёл в книжке, что при изменении запроса (источника данных для диагр.) автоматически должно происходить обновление диаграммы. Написал в программном коде открытие запроса, его обновление (Refresh), но проблема осталась. Не хочет диаграмма отображать себя обновлённую. Стесняется что ли?

Подскажите, пожалуйста, в каком направлении ещё попробовать свои силы, чтобы заставить диаграмму показывать самоё себя при изменении данных для построения кривых этой самой диаграммы?
kkkk30 вне форума Ответить с цитированием
Старый 07.07.2008, 09:04   #2
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от kkkk30 Посмотреть сообщение
Кривые появляются после перевода фокуса ввода на другой элемент формы. Пока не переведёшь фокус - диаграмма не обновится..
А на какое событие поля (или формы) происходит обновление? При переводе фокуса событий может происходить множество. Есть сомнение, что процедура пересчета и обновление поля с диаграммой именно на это событие. Это все-таки это так, попробуйте процедуру пересчета производить на событие на AfterUpdate с обязательным requery поля.
Другой вариант-попробуйте на другом ПК, может у Вас просто не хватает аппаратных возможностей (памяти), хотя она может "съедаться" и в процессе работы с бд.
Вообще причин может быть масса, на мой взгляд лучший способ - передача данных в ексель и формировании в нем диаграмм любого типа..
Abrakadabra вне форума Ответить с цитированием
Старый 10.07.2008, 08:39   #3
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию

Извиняюсь, сразу не объяснил толком - диаграмма обновляется, если я перевожу фокус на другое поле МЫШКОЙ. То есть, кликаю правой кнопкой по другому полю, и диаграмма прорисовывается.

Или перевожу экранную форму в режим конструктора. При возвращении в режим формы - обновлённая диаграмма на своём месте.

Или кликаю два раза по полю с диаграммой. Запускается MS Graph. После его закрытия тоже диаграмма рисуется.

Получается, что данные для диаграммы пересчитываются нормально. И сама диаграмма пересчитывается. Но вот почему-то заставить отбразиться обновлённую диаграмму можно только принудительно. Программно - не получается. Все операторы обновления (Refresh, Requer) почему-то не работают на отображение обновленной диаграммы.
kkkk30 вне форума Ответить с цитированием
Старый 10.07.2008, 08:54   #4
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от kkkk30 Посмотреть сообщение
Извиняюсь, сразу не объяснил толком - диаграмма обновляется, если я перевожу фокус на другое поле МЫШКОЙ. То есть, кликаю правой кнопкой по другому полю, и диаграмма прорисовывается.

Или перевожу экранную форму в режим конструктора. При возвращении в режим формы - обновлённая диаграмма на своём месте.

Или кликаю два раза по полю с диаграммой. Запускается MS Graph. После его закрытия тоже диаграмма рисуется.

Получается, что данные для диаграммы пересчитываются нормально. И сама диаграмма пересчитывается. Но вот почему-то заставить отбразиться обновлённую диаграмму можно только принудительно. Программно - не получается. Все операторы обновления (Refresh, Requer) почему-то не работают на отображение обновленной диаграммы.
Вы не ответили на мой вопрос..
Ну да ладно.. Приведите здесь пример Вашего кода.
Abrakadabra вне форума Ответить с цитированием
Старый 10.07.2008, 11:33   #5
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию Щаз... Ван сек...

В начале кода идёт пересчёт таблицы. На основе этой таблицы построен запрос. А уже на этом запросе основана диаграмма.
В конуе кода - мои потуги заставить диаграмму показывать свои изменения на экране. Никакой реакции от неё, пока не кликну мышкой по другому полю на экранной форме.
Вложения
Тип файла: doc Private Sub кн.doc (42.0 Кб, 32 просмотров)
kkkk30 вне форума Ответить с цитированием
Старый 10.07.2008, 14:57   #6
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от kkkk30 Посмотреть сообщение
В начале кода идёт пересчёт таблицы. На основе этой таблицы построен запрос. А уже на этом запросе основана диаграмма.
В конуе кода - мои потуги заставить диаграмму показывать свои изменения на экране. Никакой реакции от неё, пока не кликну мышкой по другому полю на экранной форме.
Это Вы добавили?

[Диаграмма527].Requery
[Диаграмма527].SetFocus


Попробуйте вместо вышеупомянутого сделать:
Me.Диаграмма527.Requery
Abrakadabra вне форума Ответить с цитированием
Старый 11.07.2008, 02:41   #7
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию

Вау! Спасибо огромное! Сейчас попробую. О результате доложу. :-)
А код я составлял от начала и до конца. Мною писано, мною отлаживается. Сразу скажу, что я без системного образования, программист-любитель. Поэтому всегда благодарен за советы "профи" - "маладому".
kkkk30 вне форума Ответить с цитированием
Старый 11.07.2008, 09:10   #8
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию

Работает!!!

Ничего не понимаю!...
Моя конструкция не работала: [Диаграмма527].Requery
А ваша заработала: Me.Диаграмма527.Requery
Ужели "великая" разница в этих двух операторах?

Спасибо огромное за совет! Приятно, когда программа работает изящно, и всё послушно программисту.
kkkk30 вне форума Ответить с цитированием
Старый 11.07.2008, 11:23   #9
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от kkkk30 Посмотреть сообщение
Работает!!!

Ничего не понимаю!...
Моя конструкция не работала: [Диаграмма527].Requery
А ваша заработала: Me.Диаграмма527.Requery
Ужели "великая" разница в этих двух операторах?

Спасибо огромное за совет! Приятно, когда программа работает изящно, и всё послушно программисту.
Не такая уж и великая, но в Вашем случае она решающая. В моем варианте обновляется само поле, а не источник, как в Вашем.
Abrakadabra вне форума Ответить с цитированием
Старый 15.07.2008, 02:16   #10
kkkk30
 
Регистрация: 07.07.2008
Сообщений: 6
По умолчанию Ещё одни "тормоза" в программе...

Замечено ещё одно подтормаживание в работе Access. При нажатии на кнопку связанная с этим событием (Нажатие) процедура не запускается сразу, а "ждёт" особого приглашения в виде кликания мышкой по любому другому элементу формы. Часто даже по свободному пространству формы.

Гложет меня сомнение, что это проделки вируса, который обосновался в компьютере. Отсюда логический вывод - предохраняйтесь!

Никто не сталкивался с такой проблемой? Нажимаешь на кнопку, и связанная с этим процедура заработала, как и положено. А иной раз нажмёшь на кнопку и - тишина, никакого движения. Комп как будто замер. Кликнул мышкой - и всё ожило и начало работать. Бывало у кого-нибудь такое?
kkkk30 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обновить Dr web? jenja Безопасность, Шифрование 2 09.03.2009 14:23
в диаграмму таблицу Exo Microsoft Office Excel 2 16.04.2008 13:01
По имеющимся данным построить диаграмму Raptor Помощь студентам 1 15.12.2007 19:53
Гиперссылка на диаграмму Nasya Microsoft Office Excel 1 23.07.2007 20:08