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

VBA Access Discussion :

Dysfonctionnement de requête UPDATE sur sharepoint


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur Projet
    Inscrit en
    Mai 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Projet
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 59
    Points : 40
    Points
    40
    Par défaut Dysfonctionnement de requête UPDATE sur sharepoint
    Bonjour à tous,

    Je possède un formulaire "F_Principal" dans lequel j'ai inséré un sous-formulaire "F_SuiviFA".
    En cas de modifications sur une ligne de "F_SuiviFA" un champs texte de mon formulaire (le champs "Etat des lieux ") se met à jour automatiquement.

    Ma macro fonctionnait très bien jusqu'à ce que j'exporte mes tables sur sharepoint.
    Dorénavant, la macro fonctionne normalement sauf si je décide de compléter le champs "Etat des lieux" manuellement. Une fois ceci fait, je suis obligé de recharger le formulaire pour que la macro fonctionne de nouveau.

    Le plus étonnant c'est que lorsque je suis la macro en pas à pas, tout se passe comme sur des roulettes mais la requête SQL ne génère aucun update.

    Ci dessous ma macro
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Maj_Etat()
     
     'Cette macro renseigne le champs "Etat des lieux" du document en fonction de la ligne cochée dans le formulaire SuiviFA
     
    'Dimensionnement des variables
        Dim sql As String
        Dim strDateDoc As Variant, str_EnvoiFA As Variant, str_RetourFA As Variant, str_Avis As Variant, str_PlannifFA As Variant, str_ObjRetourFA As Variant, var_ObjDoc As Variant 'dimensionnement de la variable sql
        Dim str_StatutDoc As Variant, str_VersionDoc As Variant, str_NumFA As Variant
        Dim Refdoc As Integer, str_IndiceFA As Integer
     
     
     
     
        If Suivre Then  'si la checkbox est cochée
           'Définition des variables
            str_DateDoc = DLookup("[DateRéception]", "T_SuiviDoc", "[Clef_SuiviDoc]=" & Me.Clef_SuiviDoc) 'Date de livraison du document
            var_ObjDoc = DLookup("[DatePrévisionnelle]", "T_SuiviDoc", "[Clef_SuiviDoc]=" & Me.Clef_SuiviDoc) 'Date de livraison du document
            str_EnvoiFA = Me.EnvoiFA 'Date d'envoi de la FA
            str_PlannifFA = Me.PlannifEnvoi 'Date prévisionnelle d'envoi de la FA
            str_ObjRetourFA = Me.ObjectifRetour 'Date objective de retour de la FA
            str_RetourFA = Me.RetourFA 'Date de retour de la FA
            str_VersionDoc = DLookup("[Version]", "T_SuiviDoc", "[Clef_SuiviDoc]=" & Me.Clef_SuiviDoc) 'Version du document
            str_NumFA = DLookup("[NumFA]", "T_FA", "[Clef_FA]=" & Me.N°FA) 'Numéro de la FA
            str_IndiceFA = Me.Indice 'Indice de la FA
            str_Avis = DLookup("[Status FA]", "T_StatusFA", "[Clef_StatusFA]=" & Me.Status) 'Avis sur la FA
     
        'Définition du contenu de "Etat des lieux en fonction des 5 possibilités (Document en attente de réception, Réception du document, FA envoyée, FA retournée, Document reçu mais FA précédente non retournée)
            If IsNull(str_DateDoc) Then str_StatutDoc = "Document V" & str_VersionDoc & " en attente de la soumission prévue le " & var_ObjDoc
            If Not IsNull(str_DateDoc) And IsNull(str_EnvoiFA) And str_Avis <> "FA non soumise" Then str_StatutDoc = "Document V" & str_VersionDoc & " reçu le " & str_DateDoc & vbCrLf & "FA à faire pour le " & str_PlannifFA & vbCrLf
            If Not IsNull(str_EnvoiFA) And IsNull(str_RetourFA) And str_Avis <> "ARAC" And str_Avis <> "Favorable" Then str_StatutDoc = str_NumFA & "-" & str_IndiceFA & " sur V" & str_VersionDoc & " avis " & str_Avis & " envoyée le " & str_EnvoiFA & vbCrLf & "Retour de FA attendu le " & str_ObjRetourFA
            If Not IsNull(str_EnvoiFA) And str_Avis = "Favorable" Then str_StatutDoc = str_NumFA & "-" & str_IndiceFA & " sur V" & str_VersionDoc & " avis " & str_Avis & " envoyée le " & str_EnvoiFA
            If Not IsNull(str_RetourFA) And str_Avis <> "Favorable" Then str_StatutDoc = str_NumFA & "-" & str_IndiceFA & " sur V" & str_VersionDoc & " avis " & str_Avis & " envoyée le " & str_EnvoiFA & vbCrLf & "FA retournée le " & str_RetourFA & vbCrLf & "Suite à statuer : Nouvelle soumission documentaire ou nouvelle FA?"
            If str_Avis = "Non Examiné" Then str_StatutDoc = "Version du document, reçue le " & str_DateDoc & ", ne nécessitant pas d'analyse approfondie de la part du Client. "
            If str_Avis = "Abandonné" Then str_StatutDoc = "Document abandonné en version " & str_VersionDoc & " le " & str_EnvoiFA & vbCrLf & "Voir le champs commentaire pour plus de détails."
            If Not IsNull(str_EnvoiFA) And str_Avis = "ARAC" Then str_StatutDoc = str_NumFA & "-" & str_IndiceFA & " sur V" & str_VersionDoc & " avis " & str_Avis & " envoyée le " & str_EnvoiFA & vbCrLf & "Objectif d'envoi de la prochaine FA convenu au:"
            If Not IsNull(str_DateDoc) And str_Avis = "FA non soumise" Then str_StatutDoc = "Document V" & str_VersionDoc & " reçu le " & str_DateDoc & vbCrLf & "FA à faire pour le " & str_PlannifFA & vbCrLf & "Acceptation du document conditionnée à la réception de la FA manquante"
     
     
     
            Int_RefDoc = Me.Clef_Document.Value 'Stockage de la référence du document dans une variable
            sql = "UPDATE T_Document SET [Etat des lieux] = """ & str_StatutDoc & """  WHERE Clef_Document=" & Int_RefDoc & ";" 'Ecriture de la requête ajout
            With DoCmd
              .SetWarnings False 'Désactivation des messages d'alertes d'Access
              .RunSQL sql 'Exécute la requete ajout
              .SetWarnings True 'Réactive les messages d'alerte Access
            End With
     
            Me.Refresh 'réactualise le formulaire
        End If
     
     
    End Sub
    Une idée?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Essaye de remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           With DoCmd
              .SetWarnings False 'Désactivation des messages d'alertes d'Access
              .RunSQL sql 'Exécute la requete ajout
              .SetWarnings True 'Réactive les messages d'alerte Access
            End With
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim db as dao.database: set db=currentdb
    call db.execute(sql, dbfailonerror)
    db.close: set db=nothing
    Passer par le db.excute evite d'avoir a neutraliser les alertes de Access.

    Qui te donnera peut-etre une piste.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur Projet
    Inscrit en
    Mai 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Projet
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 59
    Points : 40
    Points
    40
    Par défaut
    Bonjour marot_r et merci pour ton retour.

    Déjà merci pour les messages d'alerte, je les avais complètement oubliés. Du coup maintenant, je sais que si la mise à jour ne se fait pas c'est à cause d'une violation de verrou.
    Je comprend mal pourquoi.

    J'ai également essayé ta méthode qui bloque au même niveau pour la même raison.
    Je cherche comment contourner le verrou.

    Bonne journée,

    Moriceot

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur Projet
    Inscrit en
    Mai 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Projet
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 59
    Points : 40
    Points
    40
    Par défaut
    Bonjour à tous,

    Je me susi penché sur le sujet cette semaine. J'ai mieux identifé le problème mais pas la solution. Ci-dessous une image pour expliquer ce que fais la macro:

    Nom : Requete Màj Etat des lieux.PNG
Affichages : 213
Taille : 64,1 Ko


    Ma macro événementielle se déclenche dès que je modifie le sous formulaire "F_SuiviFA" pour réaliser une requête de type "Update" sur mon champs "Etat des lieux " afin de résumer les informations dont j'ai besoin dans la cellule.
    De ce que je comprend, si je fais des modifications manuellement dans la cellule "Etat des lieux" avant la macro, alors la cellule se verrouille. Le problème c'est qu'elle reste verrouillée.

    J'ai essayé de tester son état avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Forms!F_Principal.SousFormulaireNavigation.Form.F_Doc.Form.Dirty Then Forms!F_Principal.SousFormulaireNavigation.Form.F_Doc.Form.Dirty = False
    pour m'assurer que la cellule n'est pas en cours de modification. Or dans mon cas, cela ne marche pas car le focus est sur le sous formulaire "F_SuiviFA". Donc ma ligne de commande me confirme que "Etat des lieux" n'est pas en cours de modifications. Il n'en reste pas moins verrouillé.

    Une idée?
    Images attachées Images attachées  

Discussions similaires

  1. Requête UPDATE sur HF et position fichier
    Par Hibernatus34 dans le forum HyperFileSQL
    Réponses: 4
    Dernier message: 26/10/2012, 16h10
  2. [AC-2003] Requête update sur trois tables
    Par Jojo____ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/05/2012, 10h44
  3. Réponses: 2
    Dernier message: 04/12/2010, 00h00
  4. [AC-2003] Requête UPDATE sur une table sans relation
    Par SIGER_971 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/07/2009, 09h02
  5. Requête update sur Msysobjects
    Par Jean-Philippe André dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/10/2007, 16h16

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