Страница: 1 |
Страница: 1 |
Вопрос: ComboBox - интимные связи
Добавлено: 13.08.05 23:48
Автор вопроса:
пенсионер
Имею ТРИ ComboBox-а на форме, в первом список из 5-ти значений, при выборе одного варианта, во втором ComboBox-е, появляется список из 5-ти значений, в каждом списке уже 10 значений.(Соответственно, второй ComboBox имеет доступ к 5-ти спискам из 10-ти значений)
При этом в 3-ем ComboBox-е, в зависимости, от выбора во втором ComboBox-е, должен появиться тоже соответствующий список. (Но он уже имеет 10 видов списков, так как во 2-ом ComboBox-е, 10-ть вариантов выбора)
С задачей внесения списков в первый ComboBox, я бы справился легко, но внесение списков во-второй вызывает проблему. Проверку на условие осушествил бы методом If Then, или Case, но от куда мне считывать данные в ComboBox? Создать массивы? Но их видов получается более 15. Но главная проблема дальше > ВНЕСЕНИЕ И ЗАМЕНА данных в ComboBox.
Я хотел бы осуществлять это уже при работе самой программы.На этапе разработки мне не известны списки значений для ComboBox-ов. Как добавлять новые значения в ComboBox-ы используя тот же TexBox? я знаю такой вариант -
ComboBox2.Items.Add(TextBox1.Text)
Но ведь у меня несколько видов списов!!! К тому же как сохранять введённые значения в ComboBox? После закрытия формы они исчезают.
ГЛАВНЫЙ ВОПРОС - как грамотно построить связь между тремя ComboBox-ми, если возможных списком более 15, и где собственно говоря их разместить,
ведь внесение, удаление и замена, будет производиться при работе самой программы. Сохранять и считывать из текстового файла совсем не хочется.
Где эта присловутая "репид разработка", так хочется воспользоваться ею...
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа: HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 14.08.05 03:17
пресловутая "рапид разработка" в основном касается визуальной части разработки (создание интерфейса).
А от необходимости создать алгоритм, правильный, простой и понятный, никто избавить не обещал
Может использовать базу данных для твоих combobox'ов ?
Номер ответа: 2
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 14.08.05 04:08
При этом в 3-ем ComboBox-е, в зависимости, от выбора во втором ComboBox-е, должен появиться тоже соответствующий список. (Но он уже имеет 10 видов списков, так как во 2-ом ComboBox-е, 10-ть вариантов выбора)
Извини, но нифига из этого описания непонятно.
Давай, по-простому, простыми предложениями, и люди к тебе потянутся.
Из того, что я понял - тебе будет нужна вложенная объектная иерархия, но точнее тебе никто не скажет, пока ты толком не изложишь, что тебе нужно.
Опять таки - где хранить - тоже вопрос неоднозначный, конечно, универсальное решение - XML, но более точно можно будет ответить, когда ты связно расскажешь, что ты такое делаешь.
Номер ответа: 3
Автор ответа: пенсионер
Вопросов: 2
Ответов: 10
Профиль | | #3
Добавлено: 14.08.05 16:29
Извини, но нифига из этого описания непонятно.
ОК, тогда наверное лучше один раз увидеть чем три раза написать?
Но как же мне это показать, если я как раз и спрашиваю как это сделать в VB.NET?
Имея поверхностные знания в VB, решил создать примерчик в Excel.Посмотрите его, там у меня вроде всё получилось наглядно, а главное работает так как я бы хотел.
Перед началом, я засёк время, интересно было сколько минут я потрачу на это. Оказалось ровно 38 минут. А я думал напишу на форуме "...Вот за 10 мин. склепал пример в VBA, а в VB.NET сижу второй день...". Но это начиная с ввода данных в ячейки, и заканчивая исправлением парочки "багов". Единственное не делал ввод новых данных, удаление и изменение старых, во время работы программы. Но это не так сложно, я такое уже делал. Однако в VB.NET, я не знаю как это осуществить.
Естественно макросы должны быть включены, а главные коды я расположил в Модуле.
Скачать пример - http://www.archive7.nm.ru
из директории "Примеры".
Теперь слово за Вами. Вопросы у меня остались те же.
Номер ответа: 4
Автор ответа: пенсионер
Вопросов: 2
Ответов: 10
Профиль | | #4
Добавлено: 15.08.05 21:27
Ну что, даже на наглядном примере тоже ничего не понятно?
Ну тогда я больше не знаю как объяснить...
Номер ответа: 5
Автор ответа: student-uni
Вопросов: 122
Ответов: 257
Профиль | | #5
Добавлено: 16.08.05 14:46
Ispolsui ADO.NET
text ochen prost
washno prawilno rasstawit swjasi s ComboBox2
-------------------------------
OleDbConnection1.Open()
 ataSet31.Clear()
OleDbDataAdapter2.SelectCommand.Parameters("connectiongroup_id".Value = ComboBox1.SelectedValue
OleDbDataAdapter2.Fill(DataSet31)
OleDbDataAdapter2.Update(DataSet31, "verbindung"
OleDbConnection1.Close()
-----------------------------
Wot sobstwenno i wse
podrobnochitai
http://bbs.vbstreets.ru/viewtopic.php?t=18476
Номер ответа: 6
Автор ответа: пенсионер
Вопросов: 2
Ответов: 10
Профиль | | #6
Добавлено: 16.08.05 21:37
Спасибо, так ни разу ещё не пробовал. Да, не легко мне будет.
По обновлению записей надеюсь разберусь.
Последнюю подсказочку если можно -
при создании массива вот таким методом
Strng = "№" & vbCrLf ' Заголовок
 im i As Integer
 im DataArray(20, 5) As Long
For i = 0 To UBound(DataArray)
 ataArray(i) = (i + 1)
Strng = Strng & DataArray(i) & vbCrLf
Next
TextBox1.Text = Strng ' Отображение
Неправильно создаю массив, а именно - "Число индексов меньше числа измерений индексированного массива". О чём это? Что делаю не правильно?
И как после внесения данных в массив, сохранить эти данные после закрытия программы?
(Наверное вопросы у меня совсем уж детские )
Спасибо, буду рад любой подсказке.
Номер ответа: 7
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 16.08.05 23:10
UBound(arrayname[, dimension])
arrayname ->
Required. Name of the array variable; follows standard variable naming conventions.
dimension ->
Optional; Variant (Long). Whole number indicating which dimension's upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.
Sample:
Dim A(1 To 100, 0 To 3, -3 To 4)
Statement Return Value
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4
PS
надеюсь понятно
Номер ответа: 8
Автор ответа: student-uni
Вопросов: 122
Ответов: 257
Профиль | | #8
Добавлено: 16.08.05 23:44
ДЛя этого надо понимать принцип работы адо.нет
Сначала делается коннект с базой
Потом создаётся дата адаптер
который собственно и выполняет запрос.
Потом самое интересное,
выполненный запрос из дата адаптера
надо вдуть в дата-сет.
Дата сет это изобретение майкрософт
временная таблица для хранения данных
которая собственно является копией
вашей базы. А зачем она нужна ?
А затем, что АдоНет система, БД
где нет постоянного соединения с базой,
т.н. отсоединённая система.
Это увеличивает производительность.
Работа идёт с ДатаСетом, а не с базой.
А уж из к дата сетам присоединяются
визуальные компоненты типа Комбо бокс.