Dim cmd As New OleDbCommand("SELECT DATEDIFF(hour,D1,D2) FROM [Demande d'intervention] WHERE [MAT_eq] =" & TextBoxX1.Text, con)
Où D1 est le champ contenant l'heure de fin d'intervention et D2 celui de la demande.
Le requête devrait renvoyer une ligne pour chaque intervention où MAT_eq=xxxx. Ligne qui ne contient que la différence entre les deux DateTime.
Ensuite on met le résultat de la requête dans la DataTable en fesant :
On récupère le nombre d'interventions par la propriété Row.Count de la DataTable.
Dim _NBInterventions as Integer=dt.Rows.Count
Il ne reste plus qu'à parcourir la DataTable pour faire la somme des DateDiff.
Ou peut être imbriquer une fonction de somme de SQL:
1 2
| Dim cmd As New OleDbCommand("SELECT SUM(DATEDIFF(hour,D1,D2)) FROM [Demande d'intervention] WHERE [MAT_eq] =" & TextBoxX1.Text, con)
Dim _DuarationSum as Integer=cmd.ExecuteScalar() |
mais ça oblige d'exécuter une deuxième requête pour avoir le nombre d'enregistrements à moins de rajouter encore une instruction COUNT(MAT_eq).
PS: je n'ai pas testé les requêtes mais ça vous donne déjà une idée de solution.
Partager