Страница: 1 |
Страница: 1 |
Вопрос: Мужики! Помогите! ComboBox, дата, время.
Добавлено: 28.10.05 01:22
Автор вопроса: Шева | Web-сайт:
Нужно написать маленькую программку на VB6.
Сам я самоучка, книжки, примеры, все равно не могу понять принципа работы с ComboBoх, датой и временем. Уже запарился разбираться. :) Может из-за того что стар уже для всего этого, или мозги высохли уже. :) Решил сделать ее для жены на VB6 (нужна жене по работе) и застрял. :(
Но что самое интересное, на QBasic написал эту програмку за мин.20 (старым дедовским методом) :)
Принцип такой:
Нужно ввести (число) прибытия вагона, (час), и (минуты).
Затем ввести (число),(час),(минуты) убытия. Затем подсчитать сколько вагон простоял Часов и Минут, вывести результаты в (Простой) в формате: (Часы),(Минуты).
И при желании добавить этот результат в Общий простой.
Следующий вагон считать также, с возможностью добавить результаты простоя в (Общий простой).
Если объяснил не очень понятно, то примерная заготовка лежит сдесь:
http://orechov-zp.jino-net.ru/download/prostoy.rar
Посмотрите, может чем поможете?
За раненее благодарен всем откликнувшимся!
E-mail: fus@mail.zp.ua
P.S. Нехотелось бы выглядеть наглецом, но если это возможно, вставьте будь ласка свои коментарии. (чтобы я смог хоть немного разобраться в этом VB) ;)
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #1
Добавлено: 28.10.05 16:07
А в чем собственно проблема?
Допустим в Combo1.Text - Число прибытия
Combo2.Text - Час прибытия
Combo3.Text - Минуты
Отправка:
Combo4,Combo5,Combo6 - время отправки
Dim Прибытие as long
Dim Отправка as long
Прибытие = Combo1.Text*24*60 + Combo2.Text*24+Combo3.Text 'В "Прибытие" время в минутах
Отправка = Combo4.Text*24*60 + Combo5.Text*24+Combo6.Text 'то же самое... почти ))
Dim Простой as long
Простой = Отправка - Прибытие
Dim Format as String
Dim t As Integer
t = Простой
Dim d As Integer
d = t \ 1440 'Извлекаем сутки
t = t - d * 1440 ' Остаются минуты + часы*24
Dim h As Integer
h = t \ 24 'Извлекаем часы
t = t - h * 24 'Остаются минуты
Format = d & "," & h & "," t 'Записываем полученное в формате дд,чч,мм
На выходе в переменной Format будет лежать Число,Час,Минуты. В переменной d - кол-во суток, h - часы, t - минуты
Номер ответа: 2
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #2
Добавлено: 28.10.05 18:45
Sorry, поправки (не ошибается тот, кто ничего не делает):
Line 3: Прибытие = Combo1.Text*24*60 + Combo2.Text*24+Combo3.Text >> Прибытие = Combo1.Text*24*60 + Combo2.Text*60+Combo3.Text
Line 4: Отправка = Combo4.Text*24*60 + Combo5.Text*24+Combo6.Text >> Отправка = Combo4.Text*24*60 + Combo5.Text*60+Combo6.Text
Line 14: h = t \ 24 >> h = t \ 60
Номер ответа: 3
Автор ответа:
Шева
Вопросов: 2
Ответов: 6
Web-сайт:
Профиль | | #3
Добавлено: 28.10.05 19:58
Ага, вот теперь начало немного проясняться.
Спасибо. Будем дерзать дальше
Номер ответа: 4
Автор ответа:
Шева
Вопросов: 2
Ответов: 6
Web-сайт:
Профиль | | #4
Добавлено: 28.10.05 20:37
Еще вопросик. К примеру:
h = t \ 24 >> h = t \ 60
Что значит знак >> ?
Номер ответа: 5
Автор ответа:
el-paso
Вопросов: 3
Ответов: 164
Профиль | | #5
Добавлено: 28.10.05 23:18
Парный символ >> - условный оператор, ассоциативно родившийся в
разгорячённом мозгу K&M, который выполняет функцию стандартного разделителя,
помещаемого между языковым выражением из наспех созданной программы и
выражением, подвергнутым исправлениям, и являющимся заменяющим аналогом
предыдущего выражения.
Вот вам... Расхлёбывайте.
Номер ответа: 6
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #6
Добавлено: 29.10.05 11:31
в переводе на русский:
перед символом ">>" находится выражение, которое нужно заменить, а после него выражение, на которое его нужно заменить.
Номер ответа: 7
Автор ответа:
Шева
Вопросов: 2
Ответов: 6
Web-сайт:
Профиль | | #7
Добавлено: 29.10.05 20:24
Понятно
Вообщем разобрался но есть еще вопросик.
Допустим есть такое:-
Dim Пример As Long
Пример = Combo1.Text
При вводе в Combo1 буквы - выдает ошибку.
Как обработать эту ошибку так чтобы выдавало к примеру:
MsgBox " Ошибка ! Необходимо ввести числовое значение! "
Номер ответа: 8
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #8
Добавлено: 30.10.05 17:21
в VB6?... ммм, что-то типа:
Dim Пример as Long
Пример = Combo1.Text
GoTo NoERR
ERR:
'Обработчик ошибки
NoERR:
Как-то так... могу ошибаться
Номер ответа: 9
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #9
Добавлено: 30.10.05 17:38
Ну можно ведь фильтр поставить.
If (KeyAscii > 47 And KeyAscii < 58) Or (KeyAscii = 8 Or KeyAscii = 44 Or KeyAscii = 13 Or KeyAscii = 46) Then
If KeyAscii = 46 Then
KeyAscii = 44
End If
Else
MsgBox "В этом поле ожидается ввод цены цифрами!", vbOKOnly, "Предупреждение"
KeyAscii = 0
End If
End If
Номер ответа: 10
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #10
Добавлено: 30.10.05 17:39
Ну или есчо што то вроде насчет даты.
Номер ответа: 11
Автор ответа:
Шева
Вопросов: 2
Ответов: 6
Web-сайт:
Профиль | | #11
Добавлено: 30.10.05 18:50
Фильтр поставил, (работает) но он выдает MsgBox"Предупреждение" при любом вводе - даже цифры!
А мне нужно чтобы при вводе цифры оно молчало.
Именно той цифры которая прописана в ComboList.
А вот на все остальные буквы, цифры, символы выдавало MsgBox "Предупреждение....".
p.s. Я где-то читал что можно как-то обработать стандартую ошибку выдаваемую VB (при несовпадении вносимых типов данных) и переиначить ее на свой лад. Тобишь, выдать к примеру тоже самое ComboBox "Предупреждение", с продолжением выполнения программы, а не ее полной остановкой.
(Только вот непомню где это читал, перелопатил всю литературу - а найти пока немогу)
Номер ответа: 12
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #12
Добавлено: 30.10.05 19:24
Ну это видимо ты читал про IsNumeric, но и мой код работает!
Номер ответа: 13
Автор ответа:
Шева
Вопросов: 2
Ответов: 6
Web-сайт:
Профиль | | #13
Добавлено: 31.10.05 22:43
Эврика!!!
Private Sub Combo1_Change()
Dim Число As Variant
Число = Combo1
If Число < 1 Or Число > 31 Then MsgBox "Необходимо ввести числовое значение в пределах от 1 до 31" & vbCrLf & "Повторите пожалуйста ввод данных.", vbCritical, " Ошибка ввода данных"
End Sub
Все работает безупречно! При нажатии любого символа не лежащего в пределах значений чисел 1-31 выдает ошибку (см. выше)
p.s. Может кому пригодится!