Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Мужики! Помогите! ComboBox, дата, время. Добавлено: 28.10.05 01:22  

Автор вопроса:  Шева | Web-сайт: orechov-zp.jino-net.ru
Нужно написать маленькую программку на 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-сайт: orechov-zp.jino-net.ru
 Профиль | | #3
Добавлено: 28.10.05 19:58
Ага, вот теперь начало немного проясняться. :)
Спасибо. Будем дерзать дальше ;)

Ответить

Номер ответа: 4
Автор ответа:
 Шева



Вопросов: 2
Ответов: 6
 Web-сайт: orechov-zp.jino-net.ru
 Профиль | | #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-сайт: orechov-zp.jino-net.ru
 Профиль | | #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?... ммм, что-то типа:

On Local Error GoTo ERR
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-сайт: orechov-zp.jino-net.ru
 Профиль | | #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-сайт: orechov-zp.jino-net.ru
 Профиль | | #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. Может кому пригодится! ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам