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 :

Erreur "Ressources systèmes insuffisantes"


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Erreur "Ressources systèmes insuffisantes"
    Bonjour tout le monde,
    Je me permets de poster ce message car aujourd'hui, je rencontre un soucis sur Acces au lancement d'une macro.
    Pour info, sont stockés sur un serveur une base de données (environ 25 Mo), compactée hier à laquelle sont reliées plusieurs applications Access (si je ne me trompe, ce sont les frontales ?) enregistrées elles-aussi sur le serveur.
    Pour modifier la base de donnée, les utilisateurs se connectent donc sur le fichier application via le serveur.
    Cet outil a été déployé fin novembre.

    Depuis, le milieu d'après-midi, lorsque les utilisateurs lancent une macro qui appelle une requête de sélection créée dans Access, le message d'erreur "Ressource systèmes insuffisantes" apparait.
    Nom : Capture.PNG
Affichages : 1766
Taille : 9,7 Ko

    J'ai tenté de compacter la base de données, sans succès.

    J'ai essayé de supprimer des données dans les différentes tables (il y en a 4 en tout) qui ont été modifiées dans la journée (en rattachant à la copie de la base à hier matin, ça fonctionne), sans succès.

    La requête à partir de quand on observe l'erreur récupère le Where d'une 1ere requête qui compare la date d'exécution de la MAJ de l'enregistrement avec la date d'exécution d'une action. Si la date de MAJ est inférieure à la date d'exécution de l'action, on récupère notre clé. J'ai modifié ces dates pour ne faire la sélection que pour un enregistrement, mais j'ai toujours le problème (j'avais plus de 7000 enregistrements normalement, et je m'étais donc dit que ça pouvait être lié à la ressource insuffisante... :-()

    J'ai mis à jour la base de registre maxlockperfile en doublant le nombre de verrous, mais sans succès...

    J'aimerai bien vous partager la base et le code, mais je ne peux pas les partager, c'est des données de la société... De plus, le code fonctionnait parfaitement jusqu'à ce matin, sans qu'aucune modif n'ait été faite sur cette macro depuis le déploiement de l'outil. Je penchais pour un enregistrement un peu foireux, mais je ne vois rien et j'ai supprimé un bon paquet d'enregistrements, sans aucun résultat.

    Je n'ai pas beaucoup de compétences en informatique, je bidouille vba et Access depuis quelques mois, donc soyez clément avec moi si je ne vous ai pas donné assez de détails, ou si mon vocabulaire est pas adapté, j'espère que vous pourrez quand même m'aider.

    Bonne soirée et merci d'avance !

    P.S : j'aimerai éviter de devoir retourner à une antériorité de la base de données (6 personnes qui modifient des données tout au long de la journée, ça commence à faire beaucoup de données à re-modifier (et d'ailleurs pas évident de savoir lesquelles...)

  2. #2
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour

    C'est quoi "Amendquery" ? une fonction perso ?
    Il faudrait que tu nous montres son code.
    Cdlt

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Voici le code d'AmendQuery :

    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
     
    Public Function AmendQuery(StrSQL As String, StrSQLWhere As String) As String
     
    ' On cherche la prochaine instruction immédiatement après le where si il y'en a un
    If InStr(1, StrSQL, "GROUP BY", 0) <> 0 Then
        IndexNext = InStr(1, StrSQL, "GROUP BY", 0) - 1
        ElseIf InStr(1, StrSQL, "HAVING", 0) <> 0 Then
        IndexNext = InStr(1, StrSQL, "HAVING", 0) - 1
        ElseIf InStr(1, StrSQL, "ORDER BY", 0) <> 0 Then
        IndexNext = InStr(1, StrSQL, "ORDER BY", 0) - 1
        ElseIf InStr(1, StrSQL, ";", 0) <> 0 Then
        IndexNext = InStr(1, StrSQL, ";", 0) - 1
    End If
     
    ' Si il y'a déjà un WHERE, on cherche ou il est
    If InStr(1, StrSQL, "WHERE", 0) <> 0 Then
        Index = InStr(1, StrSQL, "WHERE", 0) - 1
        'MsgBox Left(StrSQL, Index) & " Coucou " & Right(StrSQL, Len(StrSQL) - Index)
        Else: Index = IndexNext
    End If
     
    ' On insère notre critère WHERE dans la requête SQL
     
        StrSQL = Left(StrSQL, Index) & StrSQLWhere & Right(StrSQL, Len(StrSQL) - IndexNext)
     
     
    AmendQuery = StrSQL
     
    End Function
    J'ai avancé ce matin, par rapport à hier, puisque je me suis rendue compte que :
    - Avec une archive de la base de données de la veille, pas de soucis sur cette macro
    - Avec la version précédente de l'application, pas de problème non plus (alors que les modif ne concernent pas du tout cette macro)

    J'ai dû mal à comprendre d'où peut venir le problème. J'aimerai bien savoir car pour débloquer la situation je fais jongler certains utilisateurs entre plusieurs versions, c'est pas terrible...

  4. #4
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Avec le Back End qui coince, essaie, ligne 26:

    Ensuite tu récupères le sql dans la fenêtre d'exécution et tu le colles dans une requête en mode création pour voir si il y a qq chose qui coince.
    Je n'y crois pas trop, mais bon.

    Sinon tente une décompilation sur ton appli (front end) ici
    et vérifier les dernière données insérer dans la base (BE), en particulier les dates.

    Sinon je ne vois pas.
    Cdlt

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Thierry,

    Cela plante avant même de rentrer dans la fonction, je ne peux donc pas voir la requête, ni la tester.

    J'ai décompilé la base puis recompilé. Toujours la même erreur toujours au même endroit ! :-(

    Merci quand même pour ton aide

  6. #6
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Quelle est la valeur de ListAch ?
    Est-ce du texte, numérique ou date ?

    Si c'est du texte la syntaxe devrait etre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    in(" & Chr(34) & ListAch & Chr(34) & "))"
    Ayant du mal avec le nombre de guillemet, j'utilise de préférence Chr(34),qui vaut un guillemet.
    Mais pour utiliser un guillemet dans une chaine sql, il faut l'entourer d'autres guillemet (""") . Tu me suis ?
    Cdlt

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé ton code et j'obtiens du vide
    WHERE ((Schedule.Schedule_CleContainer) in ("")), alors que j'obtiens avec mon code
    WHERE ((Schedule.Schedule_CleContainer) in ("190881")).
    Quoiqu'il arrive dans les deux cas, le code plante toujours au même endroit avec le même message d'erreur "Ressource système insuffisantes"

    J'ai essayé de mettre en sortie d'AmendQuery une requête sql qui fonctionne directement dans Access

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Visu Full vision].*, [Visu Full vision].Container_MAJ, [Visu Full vision].PL_MAJ, [Visu Full vision].Navire_MAJ, [Visu Full vision].Schedule_LastSent FROM [Visu Full vision] WHERE ((Schedule.Schedule_CleContainer) in ("190881"))

    Et j'ai un truc un peu (beaucoup) bizarre. La 1ere fois que je lance la macro, j'ai le même message d'erreur toujours au même endroit. Quand je repars de l'erreur en pas à pas détaillé, j'ai de nouveau l'erreur et la fois d'après, ça passe.
    Je vais refaire un peu plus de test cet après-midi si j'ai le temps (c'est pas gagné)

  8. #8
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour ln1285.

    Si tu t'es basé sur le tuto de Loufab sur la clause In, visiblement les double guillemets on l'air d'être inclus dans la fonction fGetListeRestricted.
    Mais si elle renvoie Null, c'est surement cela qui pose problème, Access ne trouvant pas d'égalité et continue de chercher en vain.

    Bon courage.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour Thierry,

    C'est mon collègue qui a fait cette partie de code, donc je ne sais pas sur qui il s'est inspiré !
    Après ça fait 8 mois que ça fonctionne, le code sur cette partie n'a pas été modifié et le résultat de fGetListeRestricted n'est pas null mais il sait le gérer si c'est null.

    J'ai pas eu le temps de m'y repencher ajd j'espère que je pourrai lundi.

    Bon week-end !

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Décembre 2013
    Messages : 150
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    J'ai eu un blocage d'une application.
    J'avais rajouté ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       DBEngine.SetOption dbMaxLocksPerFile, 50000 ' Pour éviter le blocage à l'execution, on augmente sa valeur
    Si ça peut aider

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Visu Full vision].*, 
    [Visu Full vision].Container_MAJ, [Visu Full vision].PL_MAJ, [Visu Full vision].Navire_MAJ, [Visu Full vision].Schedule_LastSent 
    FROM [Visu Full vision] WHERE ((Schedule.Schedule_CleContainer) in ("190881"));
    Je vois 2 problèmes dans cette SQL :

    Mettre un .* et une liste de champ de la même table ça n'a aucun sens et ça peut perturber le moteur de base de données.

    "Schedule.Schedule_CleContainer" la table Schedule n'est pas déclarée dans le FROM. Si c'est un champ multivalué ( ) il me semble que la syntaxe n'est pas correcte. (à voir sur le tuto des champs multivalués)
    NB : vous l'aurez compris, je ne suis pas utilisateur du multivalué.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par LeMin Voir le message
    Bonjour,

    J'ai eu un blocage d'une application.
    J'avais rajouté ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       DBEngine.SetOption dbMaxLocksPerFile, 50000 ' Pour éviter le blocage à l'execution, on augmente sa valeur
    Si ça peut aider
    Bonjour, je vais essayer, on ne sait jamais ;-)

    Je n'ai pas eu le temps de me replonger dedans, j'ai eu d'autres urgences à traiter depuis
    J'espère pouvoir me remettre un peu à jour cet après-midi et me replonger dans le code demain.

    Je vois 2 problèmes dans cette SQL :

    Mettre un .* et une liste de champ de la même table ça n'a aucun sens et ça peut perturber le moteur de base de données.
    Loufab, Je m'étais faite cette remarque, mais comme ça a marché pendant des mois sans aucun soucis et que je n'ai pas codé cette partie, je n'ai pas modifié. Je vais essayer de modifier et voir si ça donne des résultats.
    Pour le 2eme point, je ne connaissais pas les champs multivalués, et donc il ne devrait pas y avoir de soucis de ce côté-là.

    Je vous tiendrai au courant des mes avancées !

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    J'ai pas trop eu le temps de regarder ce problème la semaine dernière...

    Le Min, j'ai essayé ce code sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.SetOption dbMaxLocksPerFile, 50000 ' Pour éviter le blocage à l'execution, on augmente sa valeur

    J'ai refait quelques tests, et je me suis rendue compte que certaines frontales fonctionnaient correctement, et pour d'autres, j'ai toujours ce même message d'erreur.
    Pourtant ce sont exactement les mêmes, toutes stockées sur un même serveur de connexion à distance (donc avec même version Access et Windows...), mais je crois que les frontales qui fonctionnent sont celles qui sont les moins utilisées. J'ai donc copié une de ces frontales, coché l'option de supprimer les caches à chaque fermeture, et demandé à un des principaux utilisateurs de s'en servir. Pour l'instant, ça fonctionne, mais je ne sais pas si ça fonctionnera dans le temps... Wait and see, je ferai un 1er constat en fin de semaine.

    Cordialement,

    LN

Discussions similaires

  1. [AC-2010] ERREUR - Ressources systèmes insuffisantes
    Par Damiounet dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/09/2017, 18h21
  2. Erreur 0x800705AA : Ressources système insuffisantes
    Par infrasound dans le forum Windows 7
    Réponses: 27
    Dernier message: 26/05/2014, 13h13
  3. Ressources systèmes insuffisantes
    Par Guigsounet dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 13/12/2011, 10h48
  4. Réponses: 5
    Dernier message: 11/05/2011, 10h02
  5. Ressources système insuffisantes
    Par tedparker dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2006, 11h56

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