Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Gestione Ore Lavorative

    Un saluto a tutti i navigatori di questo forum.
    Questo è il mio primo messaggio, e spero tanto di non aver sbagliato sezione, altre cose.
    Sto cercando di sviluppare un piccolo applicativo in vb 2010 express, ma sono un vero Caprone!
    Ho un Form per la gestione dei rapporti di lavoro degli operai, ho deciso di inserire gli operai, appunto sotto forma di CheckBox.

    Quindi CheckBox1= operaio 1 CheckBox2 = operaio 2 ecc

    ho inserito una MaskedTextBox formattata in questo modo:
    codice:
    Dim t1 As TimeSpan = TimeSpan.Parse(MaskedTextBox1.Text.Replace("."c, ":"c)).
    Ora il problema sta che dopo aver inserito le ore lavorative nella MaskedTextBox
    e selezionando diciamo 3 CheckBox (3 operai)
    Il risultato delle ore, moltiplicato per il numero di checkbox selezionate dovrebbe essere riportato
    in una TextBox denominata Ore Totali.

    Ora non so come agire,(non so nemmeno se la strategia è adeguata)
    selct case?

    oppure
    codice:
        If CheckBox1.Checked = True Then
                txtTotaleOreLavorative.Text = t1.ToString
        End If
    Grazie in anticipo e spero di aver descritto il problema, almeno comprensibile!
    non esistono progetti inpossibili, esistono solo uomini arrendevoli!

  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Non credo che la cosa sia strutturata benissimo!
    I dipendenti sono interfacciati con delle checkbox?
    PERCHE'?

    Tempo fa feci un software che gestiva le giornaliere ecc e la struttura del DB (in sintesi MOOOLTO semplificata) era:

    -DITTA
    ---Dipendente1
    ------proprietà Dip1
    ---Dipendente2
    ------proprietà Dip2
    ---Dipendente3
    ------proprietà Dip3

    Ogni dipendente aveva una sua scheda PRIVATA così come le ditte.
    Per la visualizzazione mettevo tutti i dipendenti in una datagrid (e li si poteva filtrare tramite l'apposita lista delle ditte in base alla ditta appunto).

    Da li si entrava nella scheda personale del dipendente per poi editare di tutto di + (tra cui LE SUE giornaliere).

    Sta cosa delle check box non mi è per niente chiara già stutturalmente...

    Ma quello che mi è parso di capire però è che tu hai un problema di calcolo e non di struttura...cioè non riesci a fare un calcolo? Non ho capito nulla in sostanza :P

  3. #3
    Hahahaha! probabilmente non hai capito,perchè ho spiegato da caprone!
    posso inserire un'immagine del Form? cosi magari è più chiaro
    non esistono progetti inpossibili, esistono solo uomini arrendevoli!

  4. #4
    http://imageshack.us/photo/my-images/856/formuv.jpg/

    come si vede dal form selezionando più dipendenti, ed immettendo le ore lavorate, la somma viene inserita nella textbox totale ore lavorate
    non esistono progetti inpossibili, esistono solo uomini arrendevoli!

  5. #5
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Dall' immagine intuisco che ogni dipendente fa le stesse "ore"......ti torna?
    Per il "moltiplicatore" basta dichiarare una variabile e sfruttare l' evento CheckedChanged delle CheckBox, se True fai +1 sulla variabile e viceversa, penso neanche 10 righe in un' unica sub sempre se ho capito bene...
    Ciao

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Mah..continuo a reputarla una struttura bizzarra...

    Le checkbox come le generi? Dinamicamente?

    Comunque... inserisci le tue checkbox in un contenitore (un groupBox) e poi puoi fare così:

    codice:
    dim totaleOre as integer=0
    for each controllo as control in tuoGroupBox.controls
        if typeof controllo is checkbox then
             dim miaChk as checkbox=controllo
             if miaChk.checked=true then
                  totaleOre+=tuaTxtBox.text
             end if
         end if
    next

  7. #7
    In primis grazie per le risposte!
    Per quanto riguarda le checkbox ho pensato io di gestire così i dipendenti, e con i tempi che corrono credo di non assumere!
    In effetti Veronica ha ragione, facendo così il codice ė un po' blindato, potrei anche inserire una tabella dipendenti e gestire da li i dipendenti.

    Vediamo se ho capito:
    codice:
    Codice: 
    Dim T1 as Timespan = Timespan.parse(MaskedTextBox1.Text.Replice_
    ("."C,":"C))
    
    Dim Totale ore ad integer=0
    For each controllo ad control in mioGroupBox.controls
          If typeof controllo is checkbox then
                 Dim mischk Sto as Checkbox = controllo
                     If miaChk.checked= true then 
                        TotaleOre+= T1.
    È poi dovrei convertire T1 da timespan a integer così dovrei riuscire a gestire anche le frazioni d'ora
    O mi sto solo complicando la vita?
    non esistono progetti inpossibili, esistono solo uomini arrendevoli!

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da ghigo1969
    Per quanto riguarda le checkbox ho pensato io di gestire così i dipendenti, e con i tempi che corrono credo di non assumere!
    Concordo con Veronica.
    Pensare solo al presente ti complicherà la vita molto di più in futuro, perchè il codice impostato male ti farà dannare non poco, dato che anche tutte le altre procedure le crei in quest'ottica.

    Rifletti, creeresti il tuo gestionale di fatturazione pensando:
    "Metto 20 checkbox perchè non penso che avrò massimo 20 clienti...."

    Noncredo.

  9. #9

    Moderazione

    Per inciso, il linguaggio di riferimento va indicato anche nel titolo come "tag"; ora sistemo io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Ciao, premesso che, come già ti hanno consigliato, non è questa la strada giusta da seguire (ti conviene iniziare ad usare un database).
    Le ore lavorative (da quanto si vede sono uguali per tutti gli operai che andrai a selezionare) sono le ore complessive occorse per terminare una

    commessa? Se la risposta è SI, questo significa che possono essere anche superiori a 23:59, in questo caso la conversione che stai facendo:
    Dim T1 as Timespan = Timespan.parse(MaskedTextBox1.Text.Replice_ ("."C,":"C))
    ti darà un errore. Per questo motivo ti conviene fare una funzione che converte un orario da stringa a TimeSpan:
    codice:
        Private Function FormatToTimeSpan(ByVal totOre As String) As TimeSpan
            'IO L'HO OMESSO, MA PRIMA DI PROCEDERE BISOGNA FARE IL CONTROLLO CHE totOre SIA UN VALORE CORRETTO...
            Dim vettOra() As String = totOre.Split(":"c)
            Dim hh As Int32
            Dim gg As Int32 = 0
            Int32.TryParse(vettOra(0), hh)
            If hh > 23 Then
                gg = (hh Mod 24)
                hh -= (24 * gg)
            Else
                Return TimeSpan.Parse(totOre)
            End If
            Return New TimeSpan(gg, hh, Int32.Parse(vettOra(1)), 0)
        End Function
    e visto che hai soltanto 4 CheckBox, senza fare cicli su cicli, basta fare 4 If...
    codice:
    Dim ts1 As TimeSpan = FormatToTimeSpan(MaskedTextBox1.Text.Replace("."C,":"C))
    Dim ts2 As New TimeSpan(0, 0, 0)
    If CheckBox1.Checked = True Then
            ts2 = ts2.Add(ts1)
    End If
    '....stessa if per tutte le CheckBox
    alla fine ti troverai ts2 che conterrà giorni, ore e minuti, dai quali ricavi il totale delle ore...(ricorda che i giorni devono essere moltiplicati per 24).
    Jupynet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.