ChargementAppli.bas 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. Option Compare Database
  2. '
  3. Public Function Chargement()
  4. Dim frm As Form
  5. Dim sql, msg1, msg2, msg3, msg3tmp, erreurs, resultat, critere, agent As String
  6. Dim i, co, compte, avertissement As Integer
  7. Dim db As DAO.Database
  8. Dim rsS, rsC As DAO.Recordset 'pour rs Source et rs Cible
  9. Set db = CurrentDb
  10. Dim verifversion, VersionPDA As Integer
  11. Dim pause As Integer 'si égal à 1 à la fin, pas de fermeture auto
  12. Dim IDSuivi As Double
  13. Dim Bloque As Integer
  14. Dim errImport As Boolean
  15. pause = 0
  16. Bloque = 0
  17. avertissement = 0 'pas d'avertissement pour le chargement
  18. SysCmd acSysCmdSetStatus, "Chargement de l'application - veuillez patienter"
  19. 'vérif utilisateur
  20. co = connexion
  21. 'intialisation formulaire
  22. DoCmd.OpenForm "frm_chargement"
  23. Set frm = Application.forms("frm_chargement")
  24. With frm
  25. .Bloque = False
  26. .Continuer.Visible = False
  27. .Quitter.Visible = False
  28. If Right(DLookup("parametre", "tbl_parametre", "valeur2='mdb_loc'"), 1) = "-" Then
  29. 'verif de la version de l'application (uniquement si on fonctionne en réseau
  30. verifversion = VerificationVersion()
  31. If verifversion > 0 Then
  32. msg1 = "Version à jour"
  33. Else
  34. msg1 = "(!) VOTRE VERSION DE L'APPLICATION N'EST PAS A JOUR (!)"
  35. pause = 1
  36. Bloque = 1
  37. Call Mail_Maj
  38. End If
  39. Else
  40. msg1 = "Appli en local"
  41. End If
  42. .txt_msg.Caption = msg1
  43. 'verif de la version de l'application PDA
  44. 'VersionPDA = VerifVersionPDA()
  45. 'If VersionPDA > 0 Then
  46. ' msg2 = "Version PDA à jour"
  47. 'Else
  48. ' msg2 = "Votre version de PDA n'est pas à jour."
  49. 'End If
  50. '.txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2
  51. msg2 = ""
  52. 'si appli à jour, on continue. sinon, on quitte. si administrateur, on continue, mais pas d'analyses des données
  53. If Bloque = 0 Then
  54. msg3tmp = "Actualisation des données... Veuillez patienter."
  55. .txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2 & vbNewLine & vbNewLine & msg3tmp
  56. 'recherche d'éventuelles données à importer
  57. sql = "SELECT r_LstImports.CodeAgent, r_LstImports.MoisRH, r_LstImports.anneerh " & _
  58. "FROM tbl_SuiviRH RIGHT JOIN r_LstImports ON (tbl_SuiviRH.AnneeRH = r_LstImports.anneerh) AND (tbl_SuiviRH.MoisRH = r_LstImports.MoisRH) AND (tbl_SuiviRH.CodeAgent = r_LstImports.CodeAgent) " & _
  59. "WHERE (((tbl_SuiviRH.CodeAgent) Is Null)) AND (((tbl_SuiviRH.MoisRH) Is Null)) AND (((tbl_SuiviRH.AnneeRH) Is Null));"
  60. Debug.Print sql
  61. Set rsS = db.OpenRecordset(sql)
  62. If Not rsS.RecordCount > 0 Then
  63. 'rien de neuf à importer
  64. msg3 = "Données à jour"
  65. .txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2
  66. Else
  67. rsS.MoveLast
  68. rsS.MoveFirst
  69. compte = rsS.RecordCount
  70. If compte > 0 Then pause = 1
  71. 'maj des données
  72. Do Until rsS.EOF = True
  73. errImport = False
  74. If Not Len(Nz(rsS![CodeAgent], "")) > 0 Or Not rsS![anneeRH] > 2000 Or Not rsS![moisRH] <= 12 Or Not rsS![moisRH] > 0 Then
  75. erreurs = erreurs & "; " & "Import Annulé: le fichier " & nomFichier & " est peut-être corrompu..."
  76. pause = 1
  77. Else
  78. 'création d'une nouvelle ligne dans tbl_SuiviRH
  79. IDSuivi = ajoutSuivi(rsS![CodeAgent], rsS![moisRH], rsS![anneeRH])
  80. 'les champs mois et annee seront utilisés par les fonctions PeriodeAgent et PeriodeBareme au cours du chargement
  81. '.mois = rsS![r_LstImports.MoisRH]
  82. '.Annee = rsS![r_LstImports.AnneeRH]
  83. 'analyse des données (desactivé pour cause de lenteur)
  84. 'resultat = AnalyseDonnees(IDSuivi, rsS![r_LstImports.CodeAgent], rsS![r_LstImports.MoisRH], rsS![r_LstImports.AnneeRH], avertissement)
  85. If IDSuivi > 0 Then
  86. agent = Nz(DLookup("[Nom]", "[r_Agents]", "[CodeAgent]='" & rsS![CodeAgent] & "'"), rsS![CodeAgent]) & " (" & rsS![CodeAgent] & ")"
  87. msg3 = msg3 & vbNewLine & "Importé: " & agent & ", " & rsS![moisRH] & "/" & rsS![anneeRH] & VerifImport(rsS![CodeAgent], rsS![moisRH], rsS![anneeRH])
  88. Call CreerMsg(1, IDSuivi)
  89. Else
  90. Debug.Print rsS![CodeAgent], rsS![moisRH], rsS![anneeRH]
  91. errImport = True
  92. End If
  93. End If
  94. rsS.MoveNext
  95. Loop
  96. If errImport = True Then erreurs = erreurs & "; " & "Possibles erreurs de traitement des données"
  97. 'on met une pause avant fermeture si des donénes ont été importées
  98. pause = 1
  99. End If
  100. .txt_msg.Caption = msg1 & vbNewLine & msg2 & vbNewLine & vbNewLine & msg3
  101. If Left(erreurs, 2) = "; " Then erreurs = Right(erreurs, Len(erreurs) - 2)
  102. If erreurs <> "" Then erreurs = erreurs & vbNewLine
  103. erreurs = VerificationComplete & erreurs
  104. If Len(erreurs) > 0 Then
  105. pause = 1
  106. .erreurs.Visible = True
  107. .erreurs.Locked = False
  108. .erreurs = erreurs
  109. .erreurs.Locked = True
  110. .Refresh
  111. End If
  112. End If
  113. 'fin du chargement
  114. If pause = 0 And Bloque = 0 Then
  115. ' RAS: on passe à la suite
  116. Call Attendre(200)
  117. DoCmd.Close acForm, frm.Name
  118. If CurrentProject.AllForms("frm_Menu").IsLoaded = False Then DoCmd.OpenForm "frm_menu"
  119. DoEvents
  120. ElseIf pause = 1 And Bloque = 0 Then
  121. 'infos: il faut appuyer sur une touche pour continuer
  122. .Continuer.Visible = True
  123. If CurrentProject.AllForms("frm_Menu").IsLoaded = True Then forms![frm_menu].Refresh
  124. Else
  125. 'erreur, on quitte si ce n'est pas un admin
  126. If acces(CurrentUser) <> 2 Then
  127. .Bloque = True
  128. .Quitter.Visible = True
  129. Else
  130. .Bloque = False
  131. .Continuer.Visible = True
  132. End If
  133. End If
  134. End With
  135. 'SysCmd acSysCmdSetStatus, "AGRHum"
  136. Call SysCmd(5)
  137. End Function
  138. Public Function VerificationVersion()
  139. 'Verification de la version installée
  140. 'la fonction compare la date de version stockée dans tbl_parametre (locale) et celle stockée dans ztblVersion (réseau)
  141. Dim version_locale As String
  142. Dim version_reseau As String
  143. version_locale = DLookup("Valeur", "[tbl_parametre]", "[Parametre]='VERSION'")
  144. version_reseau = DMax("VERSION", "[ztblVersion]", "")
  145. If version_locale <> version_reseau Then
  146. If (DCount("valeur", "tbl_parametre", "parametre='ADMIN' AND valeur='" & CurrentUser & "'") > 0) Then
  147. VerificationVersion = -1
  148. 'MsgBox "Attention, l'application n'est peut-être pas à jour (cf. [tbl_parametre] et [ztblVersion])"
  149. Else
  150. 'MsgBox "Attention, votre version de l'application n'est pas à jour. Veuillez contacter Jacky Klein ou Olivier Massot."
  151. VerificationVersion = -1
  152. 'Application.Quit
  153. End If
  154. Exit Function
  155. End If
  156. VerificationVersion = 1
  157. End Function
  158. Public Function VerifVersionPDA()
  159. 'Verification de la version PDA installée
  160. 'la fonction compare le numéro de version stocké dans tbl_parametre (locale) et celle stockée dans VerifVersionPDA_RH (réseau)
  161. Dim version_locale As String
  162. Dim version_reseau As String
  163. version_locale = DLookup("Valeur", "[tbl_parametre]", "[Parametre]='VersionPDA'")
  164. version_reseau = DMax("VerifVersion", "[VerifVersionPDA_RH]", "")
  165. If version_locale > version_reseau Then
  166. If (DCount("valeur", "tbl_parametre", "parametre='ADMIN' AND valeur='" & CurrentUser & "'") > 0) Then
  167. VerifVersionPDA = -1
  168. 'MsgBox "Attention, l'application PDA n'est peut-être pas à jour (cf. [tbl_parametre] et [ztblVersion])"
  169. Else
  170. 'MsgBox "Attention, votre version de l'application PDA n'est pas à jour. Veuillez contacter Jacky Klein ou Olivier Massot."
  171. VerifVersionPDA = -1
  172. End If
  173. Exit Function
  174. End If
  175. VerifVersionPDA = 1
  176. End Function
  177. Public Function ajoutSuivi(ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) As Integer
  178. 'On Error GoTo err
  179. Dim sql As String
  180. 'creation de la nouvelle ligne de suivi
  181. sql = "INSERT INTO tbl_SuiviRH ( CodeAgent, MoisRH, AnneeRH, Etat, Valide ) " & _
  182. "SELECT '" & CodeAgent & "' AS Expr1, " & moisRH & " AS Expr2, " & anneeRH & " AS Expr3, 'Importé' AS Expr4, True AS Expr5;"
  183. DoCmd.SetWarnings False
  184. DoCmd.RunSQL sql
  185. DoCmd.SetWarnings True
  186. DoEvents
  187. critere = "[CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH
  188. ajoutSuivi = Nz(DLookup("IDSuivi", "tbl_SuiviRH", critere), -1)
  189. Exit Function
  190. err:
  191. ajoutSuivi = -1
  192. End Function