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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2009, 14:52   #1
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
Смущение Два связанных ComboBoxа. Как реализовать?

Уважаемые господа!

Передо мной шеф поставил задачу основной модуль (чтения из БД реализация в виде графика) я сделал. Но возникла необходимость изменять интервалы чтения. Для этого понадобились использвоать 2 ComboBoxа
для первого Combobox следующие значения - измерительные интервалы - 15 сек.; 3 мин.; 30 мин; 1 час; 1 день. Для второго каждому интервалу первого comboboxa соответствуют свои значения: так например для 15 сек значения Comboboxa 2 составляют от 1 часа до 72 часов - 3 дней (с шагом 0,5 часса). Для интервала 3 мин. - от 3 часов до 15 дней (шаг 1 час). Для интервала 30 минут - от 12 часов до 1 месяца. Для интервала 1 час - от 24 часов до 2 месяцев. Для интервала 1 день - от 1 месяца до 1,5 лет.

Пояснение на примере, того что нужно.

После включения в первом Comboboxе возможен выбор диапазона 15 сек.; 3 мин.; 30 мин; 1 час; 1 день отсутствует. (установление по умолчанию 15 сек.) Во втором - 1 час - 72 часа (соответствует 15 сек. интервалу.) - по умолчанию первое значение интервала - 1 час
Необходимо выбрать диапазон 1 день - 180 дней.
Действия:
в первом Comboboxe фиксируем 1 час. во втором появляються значения соответствующего интервала 24 часа - 2 месяца. В первом Comboboxt появилось значение 1 день.
В первом фиксируем - выбираем значение 1 день (исчезает возможность выбора 15 сек., 3 мин. - вне диапазона). ВО втором выбираем 180 дней.

Аналогично осуществляется переход из диапазона 1 день в диапазона значений 15 сек.

Окончание выбора осуществляется только одной кнопкой.

Может объяснил несколько скомконо но нужно именно такая реализация. Если есть доп вопросы отвечу спрашивайте.
Юнлинг вне форума Ответить с цитированием
Старый 03.03.2009, 15:06   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Может быть так подойдет. Я так понял, в зависимости от выбора меняется диаграмма?
Вложения
Тип файла: zip 2_combo.zip (4.1 Кб, 32 просмотров)
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 03.03.2009, 15:59   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Так подойдёт?



Цитата:
Может объяснил несколько скомконо
Не то слово...

Не понял вот этого:
Цитата:
Действия:
в первом Comboboxe фиксируем 1 час.
во втором появляються значения соответствующего интервала 24 часа - 2 месяца.
В первом Comboboxt появилось значение 1 день.
Ну, в первом выбрали одно из значений - понятно.
Во втором автоматически появились нужные значения - тоже понятно.
А вот с какой стати в первом после всего этого изменилось значение - это до меня не дошло...
Вложения
Тип файла: rar Зависимые комбобоксы.rar (10.4 Кб, 51 просмотров)

Последний раз редактировалось EducatedFool; 03.03.2009 в 16:02.
EducatedFool вне форума Ответить с цитированием
Старый 03.03.2009, 16:06   #4
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Так подойдёт?

Задумка была немного другая, но ведь самое галвное это идея. Я немного был в растрепанных чувствах, но Вы ЕducatedFool заставили правильно взглянуть на вещи. Я весьма благодарен Вам.
Тема пока закрыта. Если будут вопросы отпишусь
Юнлинг вне форума Ответить с цитированием
Старый 03.03.2009, 16:32   #5
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

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

Не понял вот этого:

Ну, в первом выбрали одно из значений - понятно.
Во втором автоматически появились нужные значения - тоже понятно.
А вот с какой стати в первом после всего этого изменилось значение - это до меня не дошло...
Я закладывал идею из векторного анализа.
Первое значение для обоих комбобоксов появляется автоматически при запуске проги.
Далее НЕОБХОДИМО условится об названиях. Для Первого ComboBox - это элемент. которому соответствует массив значений из второго ComboBoxa.
Для первого комбобокса я хотел, чтобы выполнялось следующее условие. Если не одно значение массива для не выбранного элемента, находиться вне диапазона. массива для выбранного элемента. То данный элемент отсутствует в первом ComboBOxe, т.е. если мы стоим на элементе 15 сек. массив значений - от 1 часа до 3 дней, а массив элемента 1 день нет ни одного значения который лежал в диапазоне 1час - 3 дня. То же самое должно происходить в случае если мы становимся на элемент 1 день
ТО ЖЕ самое и для второго комбобокса, если я выбираю значение из массива, и это значение находится вне диапазона для массивов других элементов, то в первом комбобоксе эти элементы не должны быть видны.

Как-то так.
Но в любом случае я Вам благодарен за присланный пример. Думаю переработать его, как мне хочется.
Юнлинг вне форума Ответить с цитированием
Старый 03.03.2009, 16:34   #6
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
Может быть так подойдет. Я так понял, в зависимости от выбора меняется диаграмма?
НЕ только меняется диаграмма но и меняются массив цифр. Мне необходимо для комбобоксов в UserForm
Юнлинг вне форума Ответить с цитированием
Старый 03.03.2009, 16:41   #7
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Извини, но все равно не понял. Какая разница? Это все делается без ввсякого VBA. Посмотри в файле test1.xls. Я там сделал пример (может немного коряво) где все основные возможности продемонстрированы. Все выборки и построения без единого макроса, только формулы.

Все формулы под диаграмой...
Вложения
Тип файла: zip Test1.zip (16.6 Кб, 20 просмотров)
Можно сделать все! Было бы время, да деньги...

Последний раз редактировалось mchip; 03.03.2009 в 16:46.
mchip вне форума Ответить с цитированием
Старый 03.03.2009, 16:56   #8
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
Извини, но все равно не понял. Какая разница? Это все делается без ввсякого VBA. Посмотри в файле test1.xls. Я там сделал пример (может немного коряво) где все основные возможности продемонстрированы. Все выборки и построения без единого макроса, только формулы.

Все формулы под диаграмой...
Заданная задача небольшая из большой

Первым комбобоксом. задаю идентификатор для чтения из SQL базы. Второй - границу. Первый также задает время повтора чтения данных из базы. ПОэтому никакими формулами я по крайней мере не вижу такой возможности.

ВСе нужно домой.
Юнлинг вне форума Ответить с цитированием
Старый 03.03.2009, 17:19   #9
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

На событие изменения ячейки (period = Cells(2, 4)) привязать свойство ".RefreshPeriod = period", ну а параметры запроса брать из ячейки и вовсе ничего программировать не надо...
Может кто нибудь меня поправит. К сожалению не могу проверить подключение к SQL серверу, но при подключении к dbf все работает.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 04.03.2009, 08:13   #10
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
На событие изменения ячейки (period = Cells(2, 4)) привязать свойство ".RefreshPeriod = period", ну а параметры запроса брать из ячейки и вовсе ничего программировать не надо...
Может кто нибудь меня поправит. К сожалению не могу проверить подключение к SQL серверу, но при подключении к dbf все работает.
Дорогой MCHip!

Я готов тебя поправить! Привязка к базах данных гораздо сложнее чем просто свойства период.
Во первых у меня так называемая динамическая задача, т.е. я должен постоянно с разными интервалами времени читать новые данные. Эти интервалы времени задаются комбоксом. Если для интервалов времени 1 день, 1 час, 30 минут. проблем нет. информация в течении указанного времени достаточно спокойно обновляется прямым чтением из базы. ТО для 3 минут, особенно для 15 секунд. Я сомневаюсь. Прямым способом который можно использовать для вариантов от 30 минут и выше, с большой натяжкой для 3 минутного, то для 15 секундного интервала таким спсособом воспользоваться нельзя.
Далее ты приводишь пример для DBF оч. хорошо. А теперь представь что каждые 15 секунд производится не менее сотни записей, из которых тебе нужно отфильтровать только те которые соответствуют определнному идентификатору. Задача становится просто неподъемной. В построеннии т.н максимальной таблицы 15 секундного интервала соответствующий 3*24*60*60/4= 17280 записей требуется достаточно большой интервал времени. у меня на компе эта таблица формируется в течении куда большего интервала времени, чем 15 секунд. (расчет достаточно простой. если на одну запись требуется 0,1 мсек то для указанного ~ 17 сек.) Следовательно таблица не успев сформироваться должна начать формироваться снова. И это еще не плохо. НО если потребуют увеличения глубины просмотра скажем до 9 дней. Считай сам.
Т.о. прямой алгоритм здесь не подходит. Я использую другой. Каждые 15 секунд я прочитываю информацию за последнии 6 минут. И записываю в хвост данных. Требуется прочтитать только 24 данных. После чего удаляю так называемую первую запись. И это все автоматически. Но и это не все. Мне необходимо строить ЧЕТЫРЕ графика у каждого свой идентификатор и следовательно своя запись.

А теперь если не веришь. Попробуй без макросов реализовать чтение из DBF такого количества данных в течении 15 секунд. Ты будешь очень рад.

Второе в моей таблице Excel только два листа. На первом график, на втором скрытом таблица данных. И мне нужно изменять условия чтения динамично. Т.е. вызвать UserForm и пока я не нажму клавишу "OK" график должен продолжать строиться. И только после нажатия этой клавишы происходит изменение способа построения графика

Попробуй все вышеизложенное привязать к твоему решению. Сомневаюсь что получиться удовлетвроящее этим условиям.

Но в любом случе я благодарен тебе за проведенную работу
Юнлинг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как слить два файла? c++ learner Общие вопросы C/C++ 0 19.12.2008 13:04
Как связать два класса? Skoverdrive Общие вопросы C/C++ 9 15.10.2008 06:08
Как округлять числа до целых и как оставить два знака после запятой. bles Помощь студентам 9 19.02.2008 21:53
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14
Как реализовать ASin Romanus Общие вопросы C/C++ 2 16.04.2007 09:46