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.