![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]()
Уважаемые господа!
Передо мной шеф поставил задачу основной модуль (чтения из БД реализация в виде графика) я сделал. Но возникла необходимость изменять интервалы чтения. Для этого понадобились использвоать 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 сек. Окончание выбора осуществляется только одной кнопкой. Может объяснил несколько скомконо но нужно именно такая реализация. Если есть доп вопросы отвечу спрашивайте. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
Может быть так подойдет. Я так понял, в зависимости от выбора меняется диаграмма?
Можно сделать все! Было бы время, да деньги...
|
![]() |
![]() |
![]() |
#3 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Так подойдёт?
![]() Цитата:
![]() Не понял вот этого: Цитата:
Во втором автоматически появились нужные значения - тоже понятно. А вот с какой стати в первом после всего этого изменилось значение - это до меня не дошло...
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 03.03.2009 в 16:02. |
||
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]() |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]() Цитата:
Первое значение для обоих комбобоксов появляется автоматически при запуске проги. Далее НЕОБХОДИМО условится об названиях. Для Первого ComboBox - это элемент. которому соответствует массив значений из второго ComboBoxa. Для первого комбобокса я хотел, чтобы выполнялось следующее условие. Если не одно значение массива для не выбранного элемента, находиться вне диапазона. массива для выбранного элемента. То данный элемент отсутствует в первом ComboBOxe, т.е. если мы стоим на элементе 15 сек. массив значений - от 1 часа до 3 дней, а массив элемента 1 день нет ни одного значения который лежал в диапазоне 1час - 3 дня. То же самое должно происходить в случае если мы становимся на элемент 1 день ТО ЖЕ самое и для второго комбобокса, если я выбираю значение из массива, и это значение находится вне диапазона для массивов других элементов, то в первом комбобоксе эти элементы не должны быть видны. Как-то так. Но в любом случае я Вам благодарен за присланный пример. Думаю переработать его, как мне хочется. |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]() |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
Извини, но все равно не понял. Какая разница? Это все делается без ввсякого VBA. Посмотри в файле test1.xls. Я там сделал пример (может немного коряво) где все основные возможности продемонстрированы. Все выборки и построения без единого макроса, только формулы.
![]() Все формулы под диаграмой...
Можно сделать все! Было бы время, да деньги...
Последний раз редактировалось mchip; 03.03.2009 в 16:46. |
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]() Цитата:
Первым комбобоксом. задаю идентификатор для чтения из SQL базы. Второй - границу. Первый также задает время повтора чтения данных из базы. ПОэтому никакими формулами я по крайней мере не вижу такой возможности. ВСе нужно домой. |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
На событие изменения ячейки (period = Cells(2, 4)) привязать свойство ".RefreshPeriod = period", ну а параметры запроса брать из ячейки и вовсе ничего программировать не надо...
Может кто нибудь меня поправит. К сожалению не могу проверить подключение к SQL серверу, но при подключении к dbf все работает.
Можно сделать все! Было бы время, да деньги...
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 17.10.2008
Сообщений: 239
|
![]() Цитата:
Я готов тебя поправить! Привязка к базах данных гораздо сложнее чем просто свойства период. Во первых у меня так называемая динамическая задача, т.е. я должен постоянно с разными интервалами времени читать новые данные. Эти интервалы времени задаются комбоксом. Если для интервалов времени 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" график должен продолжать строиться. И только после нажатия этой клавишы происходит изменение способа построения графика Попробуй все вышеизложенное привязать к твоему решению. Сомневаюсь что получиться удовлетвроящее этим условиям. Но в любом случе я благодарен тебе за проведенную работу |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как слить два файла? | 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 |