Saisie de conges en vba --> operation annulée

BI_jo Messages postés 1 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 20 avril 2007 - 20 avril 2007 à 13:34
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 20 avril 2007 à 13:53
salut a tous

je suis nouvelle et j'espere que quelqu'un pourra m'aider........

j'ai un petit soucis sur une application VBA dont je ne suis pas vraiment fan ....

je travaille sur un module gestion de congés de consultant.

le formulaire d'insertion des congés doit non seulement enregistrer les
conges dans la table "conges_pris" mais egalement cumuler,  ce
nb_jours_pris  (si la ligne existe deja) dans la table activité.

or lorsque je valide mes saisies , le message d'erreur est "opération
annulée". en cherchant mieux, jai trouve que les conges s'inserent dans
la table "conges_pris" mais il ne se passe rien dans la table activite
!!

voici le morceau de code qui a ete ecrit par une tiers personne qui
n'est plus joignable (dommage pour moi). excusez d'avance les noms de
var ou de table pas reglementaires (je c, ca fait de la peine!!)

voici le code du bouton valider


Private Sub valid_saisie_Click()

On Error GoTo Err_valid_saisie_Click


'verifie ke les champs ne sont pas null


    If IsNull(consultant) Or consultant & "" = "" Or
IsNull(Me.date_debut) Or Me.date_debut & "" = "" Or
IsNull(Me.date_fin) Or Me.date_fin & "" = "" Or
IsNull(Me.nb_jours_pris) Or nb_jours_pris & "" = "" Or
Me.nb_jours_pris <= 0 Or IsNull(Me.typ_conges) Or typ_conges &
"" = "" Then

        MsgBox "La saisie est incorrecte.", vbCritical

        Exit Sub

    End If


    If CDate(Me.date_debut) > CDate(Me.date_fin) Then

        MsgBox "La date de début
doit être inférieure ou égale à la date de fin.", vbInformation

        Exit Sub

    End If

   

    If DCount("*", "conges_pris", "id_salarie = " &
Me.consultant & " and date_deb between cdate('" & Me.date_debut
& "') and cdate('" & Me.date_fin & "')") > 0 Then

        MsgBox "Il existe déjà des
congés sur cette période pour cette ressource.", vbCritical

        Exit Sub

    End If

   

    If DCount("*", "conges_pris", "id_salarie = " &
Me.consultant & " and date_fin between cdate('" & Me.date_debut
& "') and cdate('" & Me.date_fin & "')") > 0 Then

        MsgBox "Il existe déjà des
congés sur cette période pour cette ressource.", vbCritical

        Exit Sub

    End If


'declarations

    Dim db As Database

    Dim rst As DAO.Recordset

    Dim rst1 As DAO.Recordset

    Dim rst2 As DAO.Recordset

    Dim sql As String

    Dim sql1 As String

    Dim sql2 As String

    Dim SQL3 As String

    Dim req As String

    Dim Tarif As Long

    Dim periode_deb As String

    Dim date_deb1 As String

    Dim date_deb2 As String

    Dim periode_fin As String

    Dim date_fin1 As String

    Dim date_fin2 As String

    Dim ret As Long

    Dim manager As Long

    Dim Type_Activité As Long

          

      

    date_fin = Me.date_fin

   

    date_deb1 = Mid(Me.date_debut, 4, 2)

    date_deb2 = Right(Me.date_debut, 2)

    periode_deb = date_deb2 & date_deb1

 

   

    date_fin1 = Mid(Me.date_fin, 4, 2)

    date_fin2 = Right(Me.date_fin, 2)

    periode_fin = date_fin2 & date_fin1

  

  

    If periode_deb <> periode_fin Then

        ret = MsgBox("Votre date de
début et votre date de fin" & Chr(13) & "ne sont pas sur le
même mois de la même année", vbExclamation, "Attention")

    Else

        Set db = CurrentDb

        Tarif = DLookup("id_tarif",
"tarif", "[libellé tarif] = '" & Me.typ_conges.Column(1) & "'")

        Type_Activité = Me.typ_conges.Column(0)

        manager = DLookup("[manager
principal]", "[REF Ressources]", "id_ressource = " & Me.consultant)

       

        SQL3 = "Insert into
[conges_pris]([id_salarie],date_deb,date_fin,nb_jours_pris,type_conges,commentaire,
[periode mensuelle]) values('" & Me.consultant & "','" &
Me.date_debut & "','" & Me.date_fin & "','" &
Me.nb_jours_pris & "','" & Me.typ_conges & "','" &
Me.commentaire & "', '" & periode_deb & "')"

        db.Execute SQL3, dbFailOnError

  

        '---> Suppression de
l'activité sur ce consultant, cette période, ce type d'activité

        DoCmd.SetWarnings False

        DoCmd.RunSQL "delete * from
Activité where [période mensuelle]='" & periode_deb & "' and
[id_ressource] = " & Me.consultant & " and  [id_type
activté] " & Type_Activité & " and id_tarif " & Tarif

        '---<

       

        '---> Création d'une
activité de type [type d'activité] d'une durée de la somme du nombre de
jour

        '---> Calcul du nombre de jour total :p

'c'est à cette ligne que le message d'erreur s'affiche

' RS_NB_OFF_DAYS est une requete qui fait le cumul d nbde jour pris
d'un consultant pour une periode donée et un type de conges donné

'Nb correspond au champs de la req qui fait un SUM (select Sum(nb_jours_pris) ...)


        nb_jours_pris =
DLookup("Nb", "RS_NB_OFF_DAYS", "T='" & [periode_deb] & "' and
[id_salarie] = '" & Me.consultant & "' and  [type_conges]
= '" & Me.typ_conges & "'")

       

        sql2 = "INSERT INTO Activité
([période mensuelle],[id_ressource],[id_type activté],id_tarif,[nb
jours], ID_CLIENT) values ('" & periode_deb & "','" &
Me.consultant & "','" & typ_conges & "','" & Tarif
& "','" & Me.nb_jours_pris & "', 22)"

        db.Execute sql2, dbFailOnError

        '---<

       

        Me.date_debut = Null

        Me.date_fin = Null

        Me.nb_jours_pris = Null

        Me.typ_conges = Null

        Me.commentaire = ""

        Me.lbl_need1.Visible = True

        Me.lbl_need2.Visible = True

        Me.lbl_need3.Visible = True

        Me.lbl_need4.Visible = True

        [Form_vue_conges].Requery

    End If


Exit_valid_saisie_Click:

    Exit Sub


Err_valid_saisie_Click:

    MsgBox Err.Description

    Resume Exit_valid_saisie_Click

   

End Sub

je c que c'est un peu long mais jai prefere mettre toute la partie au cas ou !!

merci a tous d'avance si vous trouver quelque chose faite moi signe

1 réponse

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 13:53
Hey mais c'est mon code ca,

non desolé je plaisante. Pour en revenir a ton pb, quand tu dis "c'est à cette ligne que le message d'erreur s'affiche"

nb_jours_pris = DLookup("Nb", "RS_NB_OFF_DAYS", "T='" & [periode_deb] & "' and [id_salarie] = '" & Me.consultant & "' and  [type_conges] = '" & Me.typ_conges & "'")

et il te dit "opération annulée".

Si tu veux peut etre un peu plus d'infos sur une erreur, recopie ta requete dans le mode SQL d'une fenetre de création de requete de Access (car je pense que tu es sur Access CurrentDb)  menu affichage.
0
Rejoignez-nous