exportDRH.bas 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. Option Compare Database
  2. Public Sub Periple_MajTableTampon(ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer, Optional silencieux As Boolean = False)
  3. If IsNull(DFirst("Matricule", "tbl_Agents", "[CodeAgent]='" & CodeAgent & "'")) Then
  4. MsgBox "Erreur: impossible de trouver le matricule de l'agent, impossible de créer le fichier d'export"
  5. GoTo fin
  6. End If
  7. 'vidage remplissage de la table PDE_PERIPLE
  8. DoCmd.SetWarnings False
  9. DoCmd.RunSQL "DELETE * FROM PDE_PERIPLE;"
  10. 'la sous-requête (tbl_ImportRH) replace tbl_ImportRH, et filtre les lignes ne comprenant ni repas, ni kilomètres
  11. sql = "INSERT INTO PDE_PERIPLE ( IDF_AGENT, DATE_DEMANDE, MOTIF_DEPLACEMENT, ITINERAIRE, CP_DEP, DATE_DEPART, DATE_RETOUR, MOYEN_TRANSPORT, NB_KM_PARCOURUS, NBR_REPAS_PLEIN ) " & _
  12. "SELECT tbl_Agents.Matricule AS IDF_AGENT, Date() AS DATE_DEMANDE, 'Travaux chantier' AS MOTIF_DEPLACEMENT, Last([ResidenceAdmin] & '-' & [LOCALISATION]) AS ITINERAIRE, Last(Left([CodeLocalisation],5)) AS CP_DEP, " & _
  13. "CDate(CStr([DateRH]) & ' 07:30') AS DATE_DEPART, CDate(CStr([DateRH]) & ' 16:30') AS DATE_RETOUR, IIf([VehiculePersoTranche1]='True' Or [VehiculePersoTranche2]='True','Véhicule personnel','Véhicule de service') AS MOYEN_TRANSPORT, " & _
  14. "Sum((IIf([VehiculePersoTranche1]='True',CLng([DistanceTranche1]),0)+IIf([VehiculePersoTranche2]='True',CLng([DistanceTranche2]),0))) AS NB_KM_PARCOURUS, Sum(tbl_ImportRH.Repas) AS NBR_REPAS_PLEIN " & _
  15. "FROM (SELECT tbl_ImportRH.* FROM tbl_ImportRH WHERE (cint([Repas])>0 or (IIf([VehiculePersoTranche1]='True',CLng([DistanceTranche1]),0)+IIf([VehiculePersoTranche2]='True',CLng([DistanceTranche2]),0))>0)) AS tbl_ImportRH " & _
  16. "INNER JOIN tbl_Agents ON tbl_ImportRH.CodeAgent = tbl_Agents.CodeAgent GROUP BY tbl_Agents.Matricule, Date(), 'Travaux chantier', CDate(CStr([DateRH]) & ' 07:30'), CDate(CStr([DateRH]) & ' 16:30'), " & _
  17. "IIf([VehiculePersoTranche1]='True' Or [VehiculePersoTranche2]='True','Véhicule personnel','Véhicule de service'), tbl_ImportRH.CodeAgent, Month([DateRH]), Year([daterh]) " & _
  18. "HAVING (((tbl_ImportRH.CodeAgent)='" & CodeAgent & "') AND ((Month([DateRH]))=" & moisRH & ") AND ((Year([daterh]))=" & anneeRH & ")) " & _
  19. "ORDER BY CDate(CStr([DateRH]) & ' 07:30');"
  20. 'Debug.Print sql
  21. 'GoTo fin
  22. DoCmd.RunSQL sql
  23. DoCmd.SetWarnings True
  24. If DCount("IDF_AGENT", "PDE_PERIPLE", "") > 0 Then
  25. If silencieux Then
  26. Call Periple_ExportXML(True)
  27. Else
  28. DoCmd.OpenForm "frm_ValidationDonneesPeriple"
  29. End If
  30. Else
  31. MsgBox "Aucune données à exporter"
  32. End If
  33. fin:
  34. End Sub
  35. Public Sub Periple_ExportXML(silencieux As Boolean)
  36. On Error GoTo err
  37. Dim rep, nomFichier As String
  38. Dim repHttp, lecteurVirtuel As String
  39. Dim essai As Integer
  40. 'création du xml
  41. rep = get_lien("tmp_xml")
  42. nomFichier = DFirst("IDF_AGENT", "PDE_PERIPLE", "") & "_" & Format(Month(DFirst("DATE_DEPART", "PDE_PERIPLE", "")), "00") & Year(DFirst("DATE_DEPART", "PDE_PERIPLE", "")) & ".xml"
  43. If dir(rep, vbDirectory) = "" Then MkDir rep
  44. If dir(rep & nomFichier) <> "" Then
  45. Kill rep & nomFichier
  46. End If
  47. Application.ExportXML acExportTable, "PDE_PERIPLE", rep & nomFichier
  48. Call Attendre(100)
  49. 'test de connexion au sharepoint et mappage
  50. repHttp = Nz(DLookup("valeur", "tbl_parametre", "[parametre]='repExport_xml'"), "")
  51. lecteurVirtuel = Nz(DLookup("valeur", "tbl_parametre", "[parametre]='lecteurVirtuel'"), "")
  52. essai = 0
  53. While testConnexionLecteur(lecteurVirtuel, repHttp) = False
  54. Call Attendre(500)
  55. essai = essai + 1
  56. If essai >= 3 Then
  57. If Not silencieux Then MsgBox "Erreur: impossible de se connecter au serveur sharepoint, le fichier a été créé ici: " & vbNewLine & _
  58. rep & nomFichier
  59. GoTo fin
  60. End If
  61. Wend
  62. If dir(lecteurVirtuel & "\", vbDirectory) = "" Then 'au cas où il serait séjà mappé
  63. Set objReseau = CreateObject("WScript.Network")
  64. objReseau.MapNetworkdrive lecteurVirtuel, repHttp
  65. End If
  66. If dir(lecteurVirtuel & "\" & nomFichier) <> "" Then
  67. If Not silencieux Then
  68. If MsgBox("Un fichier portant ce nom existe déjà sur la sharepoint, voulez-vous le remplacer?", vbYesNo) = vbNo Then GoTo fin
  69. End If
  70. Kill lecteurVirtuel & "\" & nomFichier
  71. End If
  72. Call FileCopy(rep & nomFichier, lecteurVirtuel & "\" & nomFichier)
  73. objReseau.RemoveNetworkDrive lecteurVirtuel, True
  74. Set objReseau = Nothing
  75. fin:
  76. Exit Sub
  77. annule:
  78. MsgBox "Opération annulée"
  79. GoTo fin
  80. err:
  81. MsgBox "Une erreur s'est produite, veuillez contacter un administrateur" & vbNewLine & err.Description
  82. GoTo fin
  83. End Sub