Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

visual basic combobox data time - opcje w combobox'ie data czas

14 Sty 2013 08:59 3399 18
  • Poziom 9  
    Witam . Mam prosty program ktory zlicza roznice dwoch dat (2timepick). Chce dodac combobox gdzie bedzie 8 opcji zawierajace okreslony czas. np. opcja 1odejmuje jeden rok ,opcja 2 odejmuje 100 godzin itd. odejmuja czas od sumy dwoch dat nie wiem jak napisac kod.. prosze o pomoc . Pozdrawiam ps pisze z komorki..[/youtube]
  • Poziom 9  
    Jak przypisać wartość daty do jednej opcji z listy combobox'a ? może jakąś wartość liczbowa hm ?
  • Pomocny post
    Poziom 20  
    A może jeszcze byś napisał czy robisz winforma czy może w Excelu coś skubiesz...

    ogólnie zdefiniować ilość dni możesz tak...
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    to sto dni do przodu z minusem będzie do tyłu, możesz użyć również miesięcy lub lat...

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    combo wypełniasz albo z bazy albo dodając po wierszu i później zwykły case po indeksie...

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    jak pisałem zwykły case w zdarzeniu kontrolki
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    to cała filozofia...

    w excelu jest jeszcze prościej bo tam tworzysz listę którą przypisujesz do combo a reszte odwala program, w zasadzie automatycznie, należy tylko zdefiniować komórki jako data...
  • Poziom 9  
    Kombinuje z kodem w select index case.. nie działają moje wpisy.
    Jak odjąć datę od już istniejącego wyniku daty :) ?.
    Code:
    Public Class Form1
    

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Next100Day As Date = DateAdd(DateInterval.Day, 100, DateTime.Now)
            Dim Next2Day As Date = DateAdd(DateInterval.Day, 2, DateTime.Now)
            Dim date1 As Date
            Dim date2 As Date
            Dim difference As TimeSpan
            date1 = Convert.ToDateTime(DateTimePicker1.Value)
            date2 = Convert.ToDateTime(DateTimePicker2.Value)
            difference = date2.Subtract(date1)
            TextBox1.Text = FormatNumber(difference.Days, 0)
            TextBox2.Text = FormatNumber(difference.Days, 0)
            TextBox3.Text = FormatNumber(difference.TotalHours, 0)



        End Sub

        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            Select ComboBox1.SelectedIndex
                Case 0
                    difference = date1.Subtract(Next100Day)
                Case 1
                    'tu liczysz co chcesz mieć policzone za sto dni
                    'bo index 0 ma wiersz ComboBox1.Items.Add("wybierz wartość")
                Case 2
                    'tu liczysz coś co ma być za dwa miesiące
                    Exit Sub

            End Select
        End Sub
    End Class
    combobox wypełniłam w bazie. narazie 3 opcje. Dziękuję za pomoc. Pozdrawiam.
  • Poziom 20  
    tak na szybko z tego co tu wstawiłaś...

    niepotrzebnie to konwertujesz, z DateTimePicer'a dostajesz wartość daty bez godziny (ustawiona na 00:00:00). jeżeli robisz takie deklaracje w metodzie to ja bym po pierwsze zadeklarował konstruktor bo podejrzewam że po naciśnięciu tego buttona wykonujesz obliczenia.

    date1 = Convert.ToDateTime(DateTimePicker1.Value)
    date2 = Convert.ToDateTime(DateTimePicker2.Value)

    czyli

    Dim data1 As New Date
    data1 = Me.DateTimePicker1.Value

    druga sprawa to:

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

    end sub
    zmień na
    Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted

    End Sub

    różnica jest taka że zdarzenie SelectionChangeCommitted wywoływane jest po wybraniu opcji z listy a zdarzenie SelectedIndexChanged wywoływane jest wtedy kiedy zmienia się index zaznaczenia na liście... czyli jeżeli rozwiniesz combo i na rozwiniętym poruszysz myszą zmienia się zaznaczenie i wtedy właśnie zmienia się też SelectedIndex...

    trzecia sprawa to jak chcesz odejmować datę ? rozumiem że chcesz poznać różnicę czasu bądź liczbę dni pomiędzy datami...
    tutaj masz wzór kodu z intelisense podający jak policzyć różnicę dni i czasu

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    jak będziesz miała pytania to pisz...
  • Poziom 9  
    program oblicza mi różnice dwóch dat. Chciałabym mieć jeszcze jedna możliwość ,opcje , która zaznaczam i odejmuje mi 100 dni od sumy tych dwóch dat. od tego
    Code:
    difference = date2.Subtract(date1). na tym polega mój problem.
    date i godzine moge wprowadzic ustawiłam DateTimePicker zeby sie wyswietlal w TIMI'e :)
    Code:
    date1 = Convert.ToDateTime(DateTimePicker1.Value)
    Code:
  • Poziom 20  
    w jednej z pierwszych moich odpowiedzi masz gotowy kod.
    zamiast datetime.now wstaw datę od której chcesz odjąć 100 dni... (-100)
  • Poziom 9  
    i gdzie ten kod wkleić ?
    Code:
    Dim Next100Day As Date = DateAdd(DateInterval.Day, -100 + date1)
    piszesz żebym zmieniła Date.Now na datę od której chce odjąć 100 dni ale jak to ugryźć żeby odejmowało 100 dni od tego DateTImePick'a ustawionego juz w programie.?. hm ps nie działa odejmowanie od określenia date1
  • Pomocny post
    Poziom 20  
    utwórz nową formę na niej 1 * ComboBox1, 1 * DateTimePicer1, 1 * Label2 po czym wrzuć z tyłu to
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    w razie pytań... wiadomo... jak byś napisała co kombinujesz to było by może troszkę prościej... :)
  • Poziom 9  
    Super Dziękuję Bardzo ! piękny kod :) jeszcze jedno jak zrobić żeby wynik daty wyświetliło mi ile pozostało dni od daty .NOW teraźniejszej :) a nie sama datę hm? muszę jeszcze pokombinować zęby upchać twój kod z mym programem bo u ciebie nie ma różnicy jeszcze miedzy dwoma datami i żeby wynik podawał ile pozostało czasu w dniach godzinach minutach. Albo hmm z Labela2 działał jako przechowana pamięć i dodało teraz czas z DateTimePicker 2 i wyświetliło ile pozostało dni na tej zasadzie. Dziękuję za pomoc. ps: ale wymyśliłam :) sory nie zauważyłam, ze dodałeś jedna opcje policz_roznice()
  • Poziom 20  
    no powiem ci... zakręciłaś teraz tak... że czytam to już 4 raz i...

    do formy dołóż sobie jeszcze 1*Timer1, 1*MaskedTextbox1

    a z tyłu dodaj to...
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Witam, wkleiłam kod ale wyskakuje bład podczas wyboru policz_dokladna_roznice.

    błąd: Wyjatek InvalidCastException nie zostal obsluzony
    Code:
    Dim newTime As Date = CType(Me.MaskedTextBox1.Text, Date)

    kolejny wątek.. ;)
    Czy można zrobić tak, żeby datę która podaje w DateTimePicker obecnie zastąpić Label'em ? mam dwa DateTimePicker'y różnice tych dni ,godzin podaje wyniki w Labelu2 i później combox pobiera dane z Lebel'a2 i zwraca kolejny wynik w Lebelu 3 np. . Dziękuję ! jakieś ciekawe książki do programowania VB ? polecasz Capelia ? i żeby były napisane łopatologiczne :) Pozdrawiam.
  • Poziom 20  
    możliwe że wyjątek wyskakuje bo w maskedtextbox nic nie było... to tylko rzykład nie obudowany warunkami na to jak można zrealizować odliczanie do tyłu co sekundę...

    staraj się nie używać w ten sposób kontrolek... lepiej zadeklaruj sobie zmienną i wtedy udostępniaj do różnych miejsc...

    polecam :
    "Od podstaw VisualBasic 2005" Thearon Willis, Bryan Newsome
  • Poziom 9  
    Witam :) po raz n-ty..
    Mam 3 wyniki Dni ,Godziny, Minuty, w Label'u albo Textbox'ie chce odjąć od nich np 170 godzin i żeby wyświetliło mi w kolejnych 3 kontrolkach wyniki odejmowania. Jak może wyglądać przykładowy kod ? Pozdrawiam.
  • Poziom 20  
    wyniki to wyniki... tworzysz je na jakiejś podstawie...
    zamień 170 godzin na minuty (bo to najmniejsza jednostka jaką operujesz) i odejmij od podstawy... a nie od textbox'ów label'i czy innych rzeczy...

    kod będzie wyglądał dokładnie tak samo jak ci już wysyłałem...
  • Poziom 9  
    Czyli do DTP dodaje 170godzin (10200min) i odejmuje 2 date z 2DTP. Wynik podaje w postaci 3 rozbieżności dni godz min. ?
  • Poziom 20  
    jutro rano napiszę ci wzór...
  • Poziom 9  
    Witam,
    Chce zrobić wybór czasu i daty w kalendarzu DateTimePicker i TimePicker jak na screen'ie w załączniku visual basic combobox data time - opcje w combobox'ie data czas jak zrobić taki TimePicker w visual studio ?