1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
Sub InscrireStatistiquesConcours()
'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim FichierExcel As Excel.Workbook 'Classeur Excel
Dim FeuilleExcel As Excel.Worksheet 'Feuille Excel
Dim NbrEleves As Integer 'Nombre d'Elèves dans la Table
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
FichierExcel = appExcel.Workbooks.Open(Application.StartupPath & "\StatsEleve.xls")
'FeuilleExcel correspond à la feuille selectionnée
FeuilleExcel = FichierExcel.Worksheets(1) 'Worksheets permet de déterminer la feuille
Dim NbEleves As New OleDbCommand("SELECT count(*) FROM eleve", OConnexion)
Try
OConnexion.Open()
NbrEleves = NbEleves.ExecuteScalar
Catch ex As Exception
Finally
OConnexion.Close()
End Try
'Affichage de l'Initialisation de la Progression
BeginInvoke(New AfficherFenetreHandler(AddressOf AfficherFenetre))
BeginInvoke(New InscrireDonneesHandler(AddressOf InscrireDonnees), 0, "Initialisation...", NbrEleves)
Threading.Thread.Sleep(1000)
Dim Eleves As New OleDbCommand("SELECT * FROM eleve", OConnexion)
Dim dt As OleDbDataReader
Try
OConnexion.Open()
dt = Eleves.ExecuteReader
'Initialisation de l'écriture dans la feuille Excel (indication de la cellule de départ)
Dim i As Integer = 4
Dim valeur As Integer = 0
While dt.Read
'Affichage de la Progression
valeur = valeur + 1
BeginInvoke(New InscrireDonneesHandler(AddressOf InscrireDonnees), valeur, "Elève : " & dt.Item("nom") & Chr(32) & dt.Item("prenom"), NbrEleves)
Threading.Thread.Sleep(1000)
FeuilleExcel.Cells.Item(i, 1) = dt.Item("nom") & Chr(32) & dt.Item("prenom")
'Vérification d'une intégration
Dim Intégration As New OleDbCommand("SELECT count(*) FROM integrer WHERE numero_eleve=" & dt.Item(0), ConnexionSecours)
ConnexionSecours.Open()
If Intégration.ExecuteScalar <> 1 Then
'Détermination de l'Année en CPGE
Dim Annee() As String = Split(dt.Item(7))
Dim AnneeCPGE As Integer
AnneeCPGE = Date.UtcNow.Year - Convert.ToDouble(Annee(0))
Select Case AnneeCPGE
Case 0
FeuilleExcel.Cells.Item(i, 2) = "1/2" 'Inscription en CPGE
Case 1
FeuilleExcel.Cells.Item(i, 2) = "1/2" '1 An de CPGE
Case 2
FeuilleExcel.Cells.Item(i, 2) = "3/2" '2 Ans de CPGE
Case 3
FeuilleExcel.Cells.Item(i, 2) = "5/2" '3 Ans de CPGE
End Select
Else
Intégration.CommandText = "SELECT annee FROM integrer WHERE numero_eleve=" & dt.Item(0)
Select Case Intégration.ExecuteScalar
Case 1
FeuilleExcel.Cells.Item(i, 2) = "1/2" '1 An de CPGE
Case 2
FeuilleExcel.Cells.Item(i, 2) = "3/2" '2 Ans de CPGE
Case 3
FeuilleExcel.Cells.Item(i, 2) = "5/2" '3 Ans de CPGE
End Select
Intégration.CommandText = "SELECT code_ecole FROM integrer WHERE numero_eleve=" & dt.Item(0)
FeuilleExcel.Cells.Item(i, 11) = Intégration.ExecuteScalar
'Vérification d'un Abandon
Dim Abandon As New OleDbCommand("SELECT count(*) FROM abandonner WHERE numero_eleve=" & dt.Item(0), ConnexionSecours)
If Abandon.ExecuteScalar <> 0 Then
FeuilleExcel.Cells.Item(i, 12) = "Oui"
Else
FeuilleExcel.Cells.Item(i, 12) = "Non"
End If
End If
ConnexionSecours.Close()
'Détermination des Concours présentés
Dim ConcoursPrésentés As New OleDbCommand("SELECT * FROM etre_presente_a WHERE numero_eleve=" & dt.Item(0), ConnexionData)
Dim dtConcours As OleDbDataReader
ConnexionData.Open()
dtConcours = ConcoursPrésentés.ExecuteReader
While dtConcours.Read
Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
ConnexionSecours.Open()
Select Case SelectConcours.ExecuteScalar
Case "Cent./Supélec"
FeuilleExcel.Cells.Item(i, 3) = "0"
Case "CCP"
FeuilleExcel.Cells.Item(i, 4) = "0"
Case "Mines/Ponts"
FeuilleExcel.Cells.Item(i, 5) = "0"
Case "e3a"
FeuilleExcel.Cells.Item(i, 6) = "0"
Case "Archimède"
FeuilleExcel.Cells.Item(i, 7) = "0"
Case "Sur Dossier"
FeuilleExcel.Cells.Item(i, 8) = "0"
Case "Sur Dossier UTC"
FeuilleExcel.Cells.Item(i, 9) = "0"
Case "Admission + Dossier"
FeuilleExcel.Cells.Item(i, 10) = "0"
End Select
ConnexionSecours.Close()
End While
dtConcours.Close()
ConnexionData.Close()
'Détermination des Concours présentés
Dim ConcoursAdmissibles As New OleDbCommand("SELECT * FROM etre_admissible WHERE numero_eleve=" & dt.Item(0), ConnexionData)
ConnexionData.Open()
dtConcours = ConcoursAdmissibles.ExecuteReader
While dtConcours.Read
Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
ConnexionSecours.Open()
Select Case SelectConcours.ExecuteScalar
Case "Cent./Supélec"
FeuilleExcel.Cells.Item(i, 3) = "1"
Case "CCP"
FeuilleExcel.Cells.Item(i, 4) = "1"
Case "Mines/Ponts"
FeuilleExcel.Cells.Item(i, 5) = "1"
Case "e3a"
FeuilleExcel.Cells.Item(i, 6) = "1"
Case "Archimède"
FeuilleExcel.Cells.Item(i, 7) = "1"
Case "Sur Dossier"
FeuilleExcel.Cells.Item(i, 8) = "1"
Case "Sur Dossier UTC"
FeuilleExcel.Cells.Item(i, 9) = "1"
Case "Admission + Dossier"
FeuilleExcel.Cells.Item(i, 10) = "1"
End Select
ConnexionSecours.Close()
End While
dtConcours.Close()
ConnexionData.Close()
'Détermination des Concours présentés
Dim ConcoursAdmis As New OleDbCommand("SELECT * FROM etre_admis WHERE numero_eleve=" & dt.Item(0), ConnexionData)
ConnexionData.Open()
dtConcours = ConcoursAdmis.ExecuteReader
While dtConcours.Read
Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
ConnexionSecours.Open()
Select Case SelectConcours.ExecuteScalar
Case "Cent./Supélec"
FeuilleExcel.Cells.Item(i, 3) = "2"
Case "CCP"
FeuilleExcel.Cells.Item(i, 4) = "2"
Case "Mines/Ponts"
FeuilleExcel.Cells.Item(i, 5) = "2"
Case "e3a"
FeuilleExcel.Cells.Item(i, 6) = "2"
Case "Archimède"
FeuilleExcel.Cells.Item(i, 7) = "2"
Case "Sur Dossier"
FeuilleExcel.Cells.Item(i, 8) = "2"
Case "Sur Dossier UTC"
FeuilleExcel.Cells.Item(i, 9) = "2"
Case "Admission + Dossier"
FeuilleExcel.Cells.Item(i, 10) = "2"
End Select
ConnexionSecours.Close()
End While
dtConcours.Close()
ConnexionData.Close()
'Détermination des Concours présentés
Dim ConcoursIntegrer As New OleDbCommand("SELECT * FROM integrer WHERE numero_eleve=" & dt.Item(0), ConnexionData)
ConnexionData.Open()
dtConcours = ConcoursIntegrer.ExecuteReader
While dtConcours.Read
Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
ConnexionSecours.Open()
Select Case SelectConcours.ExecuteScalar
Case "Cent./Supélec"
FeuilleExcel.Cells.Item(i, 3) = "3"
Case "CCP"
FeuilleExcel.Cells.Item(i, 4) = "3"
Case "Mines/Ponts"
FeuilleExcel.Cells.Item(i, 5) = "3"
Case "e3a"
FeuilleExcel.Cells.Item(i, 6) = "3"
Case "Archimède"
FeuilleExcel.Cells.Item(i, 7) = "3"
Case "Sur Dossier"
FeuilleExcel.Cells.Item(i, 8) = "3"
Case "Sur Dossier UTC"
FeuilleExcel.Cells.Item(i, 9) = "3"
Case "Admission + Dossier"
FeuilleExcel.Cells.Item(i, 10) = "3"
End Select
ConnexionSecours.Close()
End While
dtConcours.Close()
ConnexionData.Close()
i = i + 1
End While
dt.Close()
Catch ex As Exception
MessageBox.Show("La réalisation des Statistiques n'a pas pu s'effectuer" & Chr(13) & "Veuillez prévenir un administrateur", "Erreur Statistiques", MessageBoxButtons.OK, MessageBoxIcon.Information)
MessageBox.Show(ex.ToString)
Finally
OConnexion.Close()
End Try
'Fermeture de la Progression
BeginInvoke(New AfficherFenetreHandler(AddressOf FermerFenetre))
FichierExcel.Close(True) 'Fermeture du classeur Excel
appExcel.Application.Quit() 'Fermeture de l'application Excel
'Information de la fin d'inscription des Statistiques
MessageBox.Show("Les Statistiques des Elèves / Concours ont bien été effectuées", "Statistiques Effectuées", MessageBoxButtons.OK, MessageBoxIcon.Information)
'Destruction du Processus
Dim Processus() As Process = Process.GetProcesses()
For x As Integer = 0 To UBound(Processus)
If Processus(x).ProcessName.ToUpper() = "EXCEL" Then
Processus(x).Kill()
End If
Next
End Sub |
Partager