| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- Option Compare Database
- '
- Public Function Chargement()
- Dim frm As Form
- Dim sql, msg1, msg2, msg3, msg3tmp, erreurs, resultat, critere, agent As String
- Dim i, co, compte, avertissement As Integer
- Dim db As DAO.Database
- Dim rsS, rsC As DAO.Recordset 'pour rs Source et rs Cible
- Set db = CurrentDb
- Dim verifversion, VersionPDA As Integer
- Dim pause As Integer 'si égal à 1 à la fin, pas de fermeture auto
- Dim IDSuivi As Double
- Dim Bloque As Integer
- Dim errImport As Boolean
- pause = 0
- Bloque = 0
- avertissement = 0 'pas d'avertissement pour le chargement
- SysCmd acSysCmdSetStatus, "Chargement de l'application - veuillez patienter"
- 'vérif utilisateur
- co = connexion
- 'intialisation formulaire
- DoCmd.OpenForm "frm_chargement"
- Set frm = Application.forms("frm_chargement")
- With frm
- .Bloque = False
- .Continuer.Visible = False
- .Quitter.Visible = False
- If Right(DLookup("parametre", "tbl_parametre", "valeur2='mdb_loc'"), 1) = "-" Then
- 'verif de la version de l'application (uniquement si on fonctionne en réseau
- verifversion = VerificationVersion()
- If verifversion > 0 Then
- msg1 = "Version à jour"
- Else
- msg1 = "(!) VOTRE VERSION DE L'APPLICATION N'EST PAS A JOUR (!)"
- pause = 1
- Bloque = 1
- Call Mail_Maj
- End If
- Else
- msg1 = "Appli en local"
- End If
- .txt_msg.Caption = msg1
- 'verif de la version de l'application PDA
- 'VersionPDA = VerifVersionPDA()
- 'If VersionPDA > 0 Then
- ' msg2 = "Version PDA à jour"
- 'Else
- ' msg2 = "Votre version de PDA n'est pas à jour."
- 'End If
- '.txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2
- msg2 = ""
-
- 'si appli à jour, on continue. sinon, on quitte. si administrateur, on continue, mais pas d'analyses des données
- If Bloque = 0 Then
- msg3tmp = "Actualisation des données... Veuillez patienter."
- .txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2 & vbNewLine & vbNewLine & msg3tmp
- 'recherche d'éventuelles données à importer
- sql = "SELECT r_LstImports.CodeAgent, r_LstImports.MoisRH, r_LstImports.anneerh " & _
- "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) " & _
- "WHERE (((tbl_SuiviRH.CodeAgent) Is Null)) AND (((tbl_SuiviRH.MoisRH) Is Null)) AND (((tbl_SuiviRH.AnneeRH) Is Null));"
- Debug.Print sql
- Set rsS = db.OpenRecordset(sql)
-
- If Not rsS.RecordCount > 0 Then
- 'rien de neuf à importer
- msg3 = "Données à jour"
- .txt_msg.Caption = msg1 & vbNewLine & vbNewLine & msg2
-
- Else
-
- rsS.MoveLast
- rsS.MoveFirst
- compte = rsS.RecordCount
- If compte > 0 Then pause = 1
-
- 'maj des données
- Do Until rsS.EOF = True
- errImport = False
- If Not Len(Nz(rsS![CodeAgent], "")) > 0 Or Not rsS![anneeRH] > 2000 Or Not rsS![moisRH] <= 12 Or Not rsS![moisRH] > 0 Then
- erreurs = erreurs & "; " & "Import Annulé: le fichier " & nomFichier & " est peut-être corrompu..."
- pause = 1
- Else
- 'création d'une nouvelle ligne dans tbl_SuiviRH
- IDSuivi = ajoutSuivi(rsS![CodeAgent], rsS![moisRH], rsS![anneeRH])
-
- 'les champs mois et annee seront utilisés par les fonctions PeriodeAgent et PeriodeBareme au cours du chargement
- '.mois = rsS![r_LstImports.MoisRH]
- '.Annee = rsS![r_LstImports.AnneeRH]
- 'analyse des données (desactivé pour cause de lenteur)
- 'resultat = AnalyseDonnees(IDSuivi, rsS![r_LstImports.CodeAgent], rsS![r_LstImports.MoisRH], rsS![r_LstImports.AnneeRH], avertissement)
-
- If IDSuivi > 0 Then
- agent = Nz(DLookup("[Nom]", "[r_Agents]", "[CodeAgent]='" & rsS![CodeAgent] & "'"), rsS![CodeAgent]) & " (" & rsS![CodeAgent] & ")"
- msg3 = msg3 & vbNewLine & "Importé: " & agent & ", " & rsS![moisRH] & "/" & rsS![anneeRH] & VerifImport(rsS![CodeAgent], rsS![moisRH], rsS![anneeRH])
- Call CreerMsg(1, IDSuivi)
- Else
- Debug.Print rsS![CodeAgent], rsS![moisRH], rsS![anneeRH]
- errImport = True
- End If
- End If
- rsS.MoveNext
- Loop
- If errImport = True Then erreurs = erreurs & "; " & "Possibles erreurs de traitement des données"
- 'on met une pause avant fermeture si des donénes ont été importées
- pause = 1
- End If
- .txt_msg.Caption = msg1 & vbNewLine & msg2 & vbNewLine & vbNewLine & msg3
-
- If Left(erreurs, 2) = "; " Then erreurs = Right(erreurs, Len(erreurs) - 2)
-
- If erreurs <> "" Then erreurs = erreurs & vbNewLine
- erreurs = VerificationComplete & erreurs
-
- If Len(erreurs) > 0 Then
- pause = 1
- .erreurs.Visible = True
- .erreurs.Locked = False
- .erreurs = erreurs
- .erreurs.Locked = True
- .Refresh
- End If
-
- End If
-
- 'fin du chargement
- If pause = 0 And Bloque = 0 Then
- ' RAS: on passe à la suite
- Call Attendre(200)
- DoCmd.Close acForm, frm.Name
- If CurrentProject.AllForms("frm_Menu").IsLoaded = False Then DoCmd.OpenForm "frm_menu"
- DoEvents
- ElseIf pause = 1 And Bloque = 0 Then
- 'infos: il faut appuyer sur une touche pour continuer
- .Continuer.Visible = True
- If CurrentProject.AllForms("frm_Menu").IsLoaded = True Then forms![frm_menu].Refresh
- Else
- 'erreur, on quitte si ce n'est pas un admin
- If acces(CurrentUser) <> 2 Then
- .Bloque = True
- .Quitter.Visible = True
- Else
- .Bloque = False
- .Continuer.Visible = True
- End If
- End If
- End With
- 'SysCmd acSysCmdSetStatus, "AGRHum"
- Call SysCmd(5)
- End Function
- Public Function VerificationVersion()
- 'Verification de la version installée
- 'la fonction compare la date de version stockée dans tbl_parametre (locale) et celle stockée dans ztblVersion (réseau)
- Dim version_locale As String
- Dim version_reseau As String
-
- version_locale = DLookup("Valeur", "[tbl_parametre]", "[Parametre]='VERSION'")
- version_reseau = DMax("VERSION", "[ztblVersion]", "")
-
- If version_locale <> version_reseau Then
- If (DCount("valeur", "tbl_parametre", "parametre='ADMIN' AND valeur='" & CurrentUser & "'") > 0) Then
- VerificationVersion = -1
- 'MsgBox "Attention, l'application n'est peut-être pas à jour (cf. [tbl_parametre] et [ztblVersion])"
- Else
- 'MsgBox "Attention, votre version de l'application n'est pas à jour. Veuillez contacter Jacky Klein ou Olivier Massot."
- VerificationVersion = -1
- 'Application.Quit
- End If
- Exit Function
- End If
-
- VerificationVersion = 1
-
- End Function
- Public Function VerifVersionPDA()
- 'Verification de la version PDA installée
- 'la fonction compare le numéro de version stocké dans tbl_parametre (locale) et celle stockée dans VerifVersionPDA_RH (réseau)
- Dim version_locale As String
- Dim version_reseau As String
-
- version_locale = DLookup("Valeur", "[tbl_parametre]", "[Parametre]='VersionPDA'")
- version_reseau = DMax("VerifVersion", "[VerifVersionPDA_RH]", "")
- If version_locale > version_reseau Then
- If (DCount("valeur", "tbl_parametre", "parametre='ADMIN' AND valeur='" & CurrentUser & "'") > 0) Then
- VerifVersionPDA = -1
- 'MsgBox "Attention, l'application PDA n'est peut-être pas à jour (cf. [tbl_parametre] et [ztblVersion])"
- Else
- 'MsgBox "Attention, votre version de l'application PDA n'est pas à jour. Veuillez contacter Jacky Klein ou Olivier Massot."
- VerifVersionPDA = -1
- End If
- Exit Function
- End If
-
- VerifVersionPDA = 1
- End Function
- Public Function ajoutSuivi(ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) As Integer
- 'On Error GoTo err
- Dim sql As String
- 'creation de la nouvelle ligne de suivi
- sql = "INSERT INTO tbl_SuiviRH ( CodeAgent, MoisRH, AnneeRH, Etat, Valide ) " & _
- "SELECT '" & CodeAgent & "' AS Expr1, " & moisRH & " AS Expr2, " & anneeRH & " AS Expr3, 'Importé' AS Expr4, True AS Expr5;"
- DoCmd.SetWarnings False
- DoCmd.RunSQL sql
- DoCmd.SetWarnings True
- DoEvents
- critere = "[CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH
- ajoutSuivi = Nz(DLookup("IDSuivi", "tbl_SuiviRH", critere), -1)
- Exit Function
- err:
- ajoutSuivi = -1
- End Function
|