Odczytywanie danych z pliku - Znajdowanie błędów
Operacje na datach
>Funkcje
Visual Basic dysponuje kilkoma funkcjami pozwalającymi w wygodny sposób operować za miennych tymu
Date. Do Funkcji tych należą:
Date | - funkcja, która zwraca datę systemową; |
|
Time | - funkcja, która zwraca czas systemowy; |
|
Now | - funkcja, która zwraca jednocześnie i datę, i czas systemowy; |
|
Day(data) | - zwraca numer dnia miesiąca dla wartości zmiennej data; |
|
Month(data) | - zwraca numer miesiąca dla wartości zmiennej data; | |
WeekDay(data, vbMonday) | - zwraca numer dnia tygodnia dla wartości zmiennej data licząc od dnia wskazanego w drugim parametrze; |
|
CDate(strl) | - przeprowadza konwersje łańcucha strl zawierającego datę na zmienną typu Date; |
|
Str(data) | - przeprowadza konwersję zmiennej data typu Date na łańcuch. |
Przykład 12
Dim Nowy_Rok As Date
Dim dlug As Integer
Dim s As String
Nowy_Rok = #1/01/2001# 'nadanie wartości zmiennej Nowy_Rok
dlug = Date - Nowy_Rok 'odwołanie do daty systemowej i obliczenie
'różnicy pomiędzy tą datą a wartością zmiennej Nowy_Rok
s = "Minęło już " & Str(dlug) & " dni tego roku."
Ćwiczenie 5
Obliczyć, ile dni upłynęło od daty Twoich urodzin.
W celu wprowadzenia daty urodzin posłużywy się suwakami pionowymi oraz polem tekstowym. Ponadto powiążemy wzajemnie informacje z pola tekstowego oraz z suwaka.
Na formularzu umieścimy trzy suwaki o nazwach: scr_dzien, scr_miesiac i scr_rok.
- W oknie właściwości ustaw właściwości Mic oraz Max dla poszególnych suwaków na:
- dla suwaka scr_dzien - Min = 1 oraz Max = 31
- dla suwaka scr_miesiac - Min = 1 a Max = 12
- dla suwaka scr_rok - Min = 1940 a Max = 2005
- Obok suwaków umieść pola tekstowe: txt_dzien, txt_miesiac i txt_rok. Na dole będą dwa przycisko poleceń, btn_oblicz i btn_koniec umożliwiające wykonanie obliczenia i zakończenie programu.
- Całość uzupełnij o odpowiednio sformatowane etykiety
Zaprojektowany formularz umożliwiający wprowadzenie daty z wykonanie obliczenia może wyglądać tak:
Procedury realizujące wprowadzenie daty za pomocą suwaków oraz obliczające liczbę dni pomiędzy dzisiejszą datą, Date a wprowadzoną datą urodzin mogą wyglądać następująco:
Private Dzien, Miesiac, Rok As String
Private Sub btn_koniec_Click()
Unload Me
End Sub
Private Sub btn_oblicz_Click()
Dim IleDni As Integer
IleDni = Date - CDate(Dzien & "/" & Miesiac & "/" & Rok)
MsgBOx "Przeżyłeś już " & Str(IleDni) & " dni."
End Sub
Private Sub scr_dzien_Change()
txt_dzien.Text = scr_dzien.Value
End Sub
Private Sub scr_miesiac_Change()
txt_miesiac.Text = scr_miesiac.Value
End Sub
Private Sub scr_rok_Change()
txt_rok.Text = scr_rok.Value
End Sub
Private Sub txt_dzien_Change()
Dzien = txt_dzien.Text
scr_dzien.Value = Dzien
End Sub
Private Sub txt_miesiac_Change()
Miesiac = txt_miesiac.Text
scr_miesiac.Value = Miesiac
End Sub
Private Sub txt_rok_Change()
Rok = txt_rok.Text
scr_rok.Value = Rok
End Sub
Należy zwrócić uwagę na wnajemnie powiązanie między suwakami a odpowiednimi polami tekstowymi. W momencie zmiany dokonanej na suwaku (na co reaguje procedura np. csr_dzien_Change()) zmianie ulega oczywiście jesgo wartość, czyli scr_dzien.Value. jednocześnie, aby wartość suwaka mogła być pokazana użytkownikowi, zmieniana jest właściwość Text odpowiedniego pola tekstowego, np. txt_dzien. I odwrotnie, każda zmiana właściwości Text w polu tekstowym powinna powodować zmianę wartości suwaka, scr_dzien.Value. Dlatego też w procedurze obsługującej zmianę suwaka, scr_dzien_Change() odczytana wartość suwaka scr_dzien.Value jest podstawiana do odpowieniego pola tekstowego, czyli txt_dzien.Text, natomiast w procedurze obsługi zmiany pola tekstowego, txt_dzien_Change() wartość tego pola, txt_dzien.Text podstawiana jest na wartość odpowiedniego suwaka, scr_dzien.Value. Zauważmy, że wartość ta jest również podstawiana pod zmienną globalną Dzien potrzebną do skonstruowania daty urodzin w procedurze btn_oblicz_Click().
W procedurze obliczającej liczbę dni życia wykorzystano funkcję CDate, która konwertuje wyrażenia tekstowe w zmienną typu Date. Komunikat wynikowy wyprowadzony jest za pomocą okna MsgBox.