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
| Sub MAJHDepTrav(strNomForm As String, numIdFTemps As Long)
On Error GoTo Trappe
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim numIdEmpl, numHTotEmpl, curDepTotEmpl
Dim numIdProjet As Long
Dim strSource As String
strSource = "modProjets.MAJHDepTrav"
LogEvt strSource, strSource, TYPE_EVT_INFO
Set cn = CurrentProject.Connection
cn.BeginTrans
numIdEmpl = CLng(DLookup("[FK_Empl]", "tblFTemps", "Id = " & numIdFTemps))
'Récup dela liste des projets de la feuille de temps à mettre à jour
Select Case strNomForm
Case "frmFTemps"
strSQL = "SELECT distinct tblFTempsLignes.FK_Projet" & _
" FROM tblFTempsLignes LEFT JOIN tblProjets ON tblFTempsLignes.FK_Projet = tblProjets.ID" & _
" WHERE tblFTempsLignes.FK_FTemps = " & numIdFTemps & " AND tblProjets.FK_Statut=9" & _
" Or tblFTempsLignes.FK_FTemps = " & numIdFTemps & " AND tblProjets.FK_Statut=65"
Case Else
strSQL = "SELECT [ID] FROM tblProjets WHERE FK_Statut = 9 or FK_Statut = 65"
End Select
Set rs = New ADODB.Recordset
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly
'Mise-à-jour de [tblAFacturer]![HTotTrav] et [tblAFacturer]![DepTotTrav] ou ajout d'un enregistrement dans tblAFacturer pour les projets sélectionnés.
While Not rs.BOF And Not rs.EOF
'Récup des données à transférer
Select Case strNomForm
Case "frmFTemps"
numIdProjet = rs.Fields![FK_Projet].Value
Case Else
numIdProjet = rs.Fields![Id].Value
End Select
numHTotEmpl = DLookup("[HTrav]", "qryTotTrav", "FK_Projet = " & numIdProjet & " and FK_Empl = " & numIdEmpl)
curDepTotEmpl = DLookup("[DepTrav]", "qryTotTrav", "FK_Projet = " & numIdProjet & " and FK_Empl = " & numIdEmpl)
'MAJ ou ajout dans tblAFacturer selon qu'il s'agit ou non d'un nouvel employé à facturer
If NouvelEmplAFacturer(ByVal numIdEmpl, ByVal numIdProjet) Then
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
strSQL = ""
strSQL = strSQL & "INSERT INTO tblAFacturer"
strSQL = strSQL & " (FK_Projet, FK_Empl, HTotTrav, DepTotTrav, HTotFact, DepTotFact)"
strSQL = strSQL & " VALUES(" & numIdProjet & ", " _
& numIdEmpl & ", " _
& Replace(numHTotEmpl, ",", ".") & ", " _
& Replace(curDepTotEmpl, ",", ".") & ", 0, 0)"
.CommandText = strSQL
.Execute
End With
Else
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
strSQL = ""
strSQL = strSQL & "UPDATE tblAFacturer"
strSQL = strSQL & " SET [HTotTrav] = " & Replace(numHTotEmpl, ",", ".")
strSQL = strSQL & ", [DepTotTrav] = " & Replace(curDepTotEmpl, ",", ".")
strSQL = strSQL & " WHERE FK_Projet = " & numIdProjet & " and FK_Empl = " & numIdEmpl
.CommandText = strSQL
.Execute
End With
End If
rs.MoveNext
Wend
'On sauvegarde TOUTES les modifications
cn.CommitTrans
Sortie:
'Ménage
On Error Resume Next
pnumErrNum = 0
pstrErrDescr = ""
rs.Close
Set rs = Nothing
Set cmd = Nothing
cn.Close
Set cn = Nothing
Exit Sub
Trappe:
pnumErrNum = Err.Number
pstrErrDescr = Err.Description
LogErr pnumErrNum & ": " & pstrErrDescr, strSource
Select Case pnumErrNum
Case Else
On Error Resume Next
pnumErrNum = 0
pstrErrDescr = ""
Err.Clear
cn.RollbackTrans
If Err.Number <> 0 Then LogErr ERR1093_DESCR, strSource
rs.Close
Set rs = Nothing
Set cmd = Nothing
cn.Close
Set cn = Nothing
Err.Raise ERR1160, strSource, ERR1160_DESCR
End Select
End Sub 'MAJHDepTrav |
Partager