IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Comment insérer dans une table Access 2013 les salaires mensuels ? [AC-2013]


Sujet :

Access

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut Comment insérer dans une table Access 2013 les salaires mensuels ?
    Salut Membres du Forum !
    La fonction « ProgrammerTousLesSalaires » ne renvoie pas les salaires programmés
    Dans la table « Table PrgSalaires » .
    Aidez moi à retrouver la cause .
    Voici les Fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Function ProgrammerTousLesSalaires() As Boolean
    'On Error Resume Next
    Dim BD As Database
    Dim R As Recordset
    Dim sql As String
    Dim I As Integer
    Dim j As Integer
     
    Set BD = CurrentDb
    sql = "select * from Tbl_EngagementEmployé where demission <>-1 order by NumMle_emp ;"
    Set R = BD.OpenRecordset(sql)
    I = 0
    j = 0
    With R
        If Not .EOF Then
            .MoveFirst
            Do While Not .EOF
                If Not MoisDejaEnreg(.Fields("IdentifEtablisEmployeur"), .Fields("NumMle_emp"), Me.ListeMois) Then
                    ProgrammerUnSalaire .Fields("IdentifEtablisEmployeur"), .Fields("NumMle_emp"), Me.ListeMois
                    I = I + 1
                Else
                    j = j + 1
     
                End If
            .MoveNext
            Loop
        End If
    End With
    MsgBox "BILAN :" & vbCrLf & I & " salaire(s) ont été programmé(s)," & vbCrLf & j & " salaire(s) étaient déjà programmé(s)" & vbCrLf & I + j & " salaire(s) traités.", vbInformation + vbOKOnly, "Bilan programmation"
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub ProgrammerUnSalaire(xIdta As Long, xMle As Long, xMois As String)
    Dim NoEnreg As Long
    Dim vSB As Double
    Dim vSJ As Variant
    
    NoEnreg = F_NumPrgSalaire()
    vSB = Replace(SalaireBaseEmployé(xIdta, xMle), ",", ".")
    
    vSJ = Replace(Round(vSB / 30, 2), ",", ".")
    strSQL = "INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) " _
    & "VALUES(" & NoEnreg & "," & xIdta & "," & xMle & ",'" & xMois & "'," & vSB & "," & vSJ & "," & vSB & ")"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    End Sub
    Public Function MoisDejaEnreg(idEtab As Long, mle_E As Long, strMois As String) As Boolean
    'On Error Resume Next
    Dim db As Database
    Dim rst As Recordset
    Dim sql As String
        Set db = CurrentDb              'Etabl_Employeur
        sql = "select * from PrgSalaires where Etabl_Employeur =" & idEtab & "and Num_emp = " & mle_E & " and Mois_prog ='" & strMois & "' ;"
        Set rst = db.OpenRecordset(sql)
            If rst.EOF Then
                MoisDejaEnreg = False
            Else
                MoisDejaEnreg = True
            End If
    End Function
    Pièce jointe
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    As-tu un message d'erreur? si Oui lequel?
    Il faut rappeler que ton archive est endommagé.
    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Bonsoir,
    Quand on est en phase de développement il vaut mieux éviter les Docmd.SetWarnings False.
    INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) VALUES(1,1,1,'AVRIL 2017',20000,666.67,20000)
    INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) VALUES(2,1,2,'AVRIL 2017',20000,666.67,20000)
    INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) VALUES(2,1,3,'AVRIL 2017',15000,500,15000)
    INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) VALUES(2,1,6,'AVRIL 2017',500000,16666.67,500000)

    dans Num_Sal il y a toujours 1, alors que c'est une clé primaire unique, je pense qu'il faudrait le mettre en NuméroAuto et dans ce cas ne pas mettre le champ dans la requête d'insertion

  4. #4
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut
    Bonjour Membres du forum !
    Pas de messager d'erreur apparent.
    Voici ce qui se passe lorsque, je clique sur la commande "Programmer un mois" du Formulaire "GESTION_DU_PERSONNEL": (voir image suivante)
    - Nom : Capture.PNG
Affichages : 217
Taille : 86,4 Ko
    puis aucune information ne s'introduit dans table prgSalaires.
    Permettez moi de vous renvoyer la pièce jointe afin de me permettre de bien comprendre vos suggestions.
    Cordialement!
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Bonsoir,
    as-tu bien compris l'explication de la cause du problème que j'ai donné ici ?
    dans la fonction ProgrammerUnSalaire, Num_Sal prend la valeur de xIdta qui est toujours égal à 1, alors que dans la table PrgSalaires c'est un champ avec une clé primaire unique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) " _
    & "VALUES(" & NoEnreg & "," & xIdta & "," & xMle & ",'" & xMois & "'," & vSB & "," & vSJ & "," & vSB & ")"

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut
    Bonsoir,
    as-tu bien compris l'explication de la cause du problème que j'ai donné ici ?
    dans la fonction ProgrammerUnSalaire, Num_Sal prend la valeur de xIdta qui est toujours égal à 1, alors que dans la table PrgSalaires c'est un champ avec une clé primaire unique:
    Bonsoir, Membre du Forum !

    xIdta devrait correspondre à Etabl_Employeur qui est l'identifiant de l'Etablissement employeur.
    Je devrais changer la disposition de cet élément afin que la correspondance soit correcte n'est ce pas ?

    Cordialement.

  7. #7
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut
    Modification effectuée le 05/05/2018 à 17 h 57

    Après la correction de la ligne du code, tout marche pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ProgrammerUnSalaire(xIdta As Long, xMle As Long, xMois As String)
    Dim NoEnreg As Long
    Dim vSB As Double
    Dim vSJ As Variant
    
    NoEnreg = F_NumPrgSalaire()
    vSB = Replace(SalaireBaseEmployé(xIdta, xMle), ",", ".")
    
    vSJ = Replace(Round(vSB / 30, 2), ",", ".")
    strSQL = "INSERT INTO PrgSalaires(Etabl_Employeur,Num_Sal,Num_emp,Mois_prog,Salaire_B,salairej,restapayer) " _
    & "VALUES(" & xIdta & "," & NoEnreg & "," & xMle & ",'" & xMois & "'," & vSB & "," & vSJ & "," & vSB & ")"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    End Sub
    Merci infiniment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/06/2016, 11h16
  2. Comment insérer dans une table associative ?
    Par CinePhil dans le forum Hibernate
    Réponses: 2
    Dernier message: 02/12/2010, 12h21
  3. Réponses: 2
    Dernier message: 29/09/2009, 00h50
  4. [MySQL] Comment insérer dans une table des données générées dynamiquement
    Par methodman225 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/04/2008, 11h50
  5. Comment insérer dans une table?
    Par souminet dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2008, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo