[VB .NET 2010] calcolo e raggruppamento periodo date

di il
2 risposte

[VB .NET 2010] calcolo e raggruppamento periodo date

Raaagaaaaaaa aiuuutooooo !!!! ho un problema che non riesco a risolvere.

Dovrei visualizzare in delle textbox il numero complessivo dei giorni raggruppati in periodi.
Ecco tutti i dati :
In un database SQL ho una tabella con i valori (Id, il, motivo, Id_motivo)

e con Visual Studio 2010 (vb .NET) ho creato un form con delle textbox formattate in questo modo:
(Textbox_ngg, Textbox_dal, Textbox_al, Textbox_motivo, Textbox1_ngg, Textbox1_dal, Textbox_al1, Textbox1_motivo, Textbox2_ngg, Textbox2_dal, Textbox2_al, Textbox2_motivo, Textbox3_ngg, Textbox3_dal, Textbox3_al, Textbox3_motivo) e contrassegnate da delle label.

Vedere immagine allegata (form periodi visual studio 2010 vb .NET)



Il mio problema è poter visualizzare i dati (tramite codice vb .NET o SQL) come meglio sia
Ecco l'esempio mostrato in figura (DATE.jpg)



Non so come faaaaare

2 Risposte

  • Re: [VB .NET 2010] calcolo e raggruppamento periodo date

    Ciao,

    vanno usati entrambi sia vb.net che sql.
    Con vb.net crei il form e con sql (usato all'interno di vb) recuperi i dati al volo dal server sql.

    Secondo me:

    1) Recuperi i dati dal server con la query anche tramite un SqlDataReader
    
    "SELECT * FROM OreLavoro"
    
    2) Iteri il SqlDataReader (es. lettore) creato con il metodo Read che scorre i singoli record e li aggiungi ad un DataTable oppure un array in questo modo:
    A) Il primo record lo aggiungi e metti N° giorni 1 - dal data - al data - motivo
    B) Per i record successivi devi fare un If:
    1)se il motivo è uguale incrementi N° giorni di 1 e cambi la data con l'ultimo record passato
    altrimenti
    2) aggiungi un nuovo record inserendo i dati N° giorni 1 - dal data - al data - motivo
    
    definisci una variabile pos = 0 per indicare che sei ancora al record 0 del DataReader
    definisci una variabile motivo = "" per indicare il motivo
    While lettore.Read
              1) SE pos = 0 Aggiungi il primo record (per forza)
                 motivo = motivo del record
                 pos = 1
              2 ) SE POS = 1
                    A) SE Motivo del record è uguale a variabile motivo incrementi il numero
                        giorni di 1 e cambi la data Al
                    B) SE Motivo è diverso
                        - aggiungi una nuova riga al DataTable o all'Array
                        - aggiorni la variabile motivo con quella del record
                           (per poter iterare il record succ)
    End While
    
    3) Quando hai creato il datatable o l'array bisogna inserire i dati nei vari textbox.

    Io i textbox li creerei mediante codice così ne crei tanti quanti te ne servono (vedendo l'esempio potrebbero essere meno o di più:

    L'iterazione sarà fatta su due livelli:

    - Una esterna per ogni riga del dataTable
    - Una interna per ogni colonna di ciascuna riga del DataTable

    - Nell'iterazione esterna dovrai cambiare:
    A) il valore X della proprietà Location della Textbox (inserirne a destra)
    B) scorrere la riga rows del datatable

    - Nell'iterazione interna dovrai cambiare:
    A) il valore Y della proprietà Location della Textbox (per inserirne una riga sotto)
    B) scorrere la colonna columns del datatable

    - Li aggiungerai poi al Form e lo visualizzerai.

    E' un po' lungo ma non impossibile.

    Ciao.
  • Re: [VB .NET 2010] calcolo e raggruppamento periodo date

    Io quando ho a che fare con periodi temporali uso il timespan
    generi 2 variabili datetime e una timespan e esegui il calcolo

    timespan = datetime2 - datetime1

    giornitot = timespan.day
    oretot = timespan.hour
    ecc...
Devi accedere o registrarti per scrivere nel forum
2 risposte