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 avec maxlocksperfile du nouveau


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 42
    Points
    42
    Par défaut erreur avec maxlocksperfile du nouveau
    Bonjour à tous,

    j'ai un probléme avec le Maxlockspertolock en effet j'ai pu lire les différents cas renontrés sur le forum il semblerai que cela soit nouveau:

    A partir d'un fichier de 13000 lignes seulement et 20 colonnes, en mettant simultanement à jour un champ de case à cocher de chaque ligne en guise d'initialisation le maxlockstofile se manifeste. j'ai bien entendu augmenter sa valeur à 200000 mais sans succes, supprimer quelque colonnes idem, isoler le traitement afin que plusieurs taches ne s'execute pas simultanement idem


    est ce quelqu'un aurait une idée


    en vous remerciant par avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    J'avais déjà vu ton précédent message concernant "MaxlocksPerfile", mais pas de temps pour répondre...

    Citation Envoyé par Ludwik
    A partir d'un fichier de 13000 lignes seulement et 20 colonnes, en mettant simultanement à jour un champ de case à cocher de chaque ligne en guise d'initialisation le maxlockstofile se manifeste. j'ai bien entendu augmenter sa valeur à 200000 mais sans succes, supprimer quelque colonnes idem, isoler le traitement afin que plusieurs taches ne s'execute pas simultanement idem
    Reprenons les différents points:
    Citation Envoyé par Ludwik
    A partir d'un fichier de 13000 lignes seulement et 20 colonnes, en mettant simultanement à jour un champ de case à cocher de chaque ligne en guise d'initialisation le maxlockstofile se manifeste.
    Si je comprends bien, il s'agit d'une requête SQL UPDATE. Tu confirmes ?
    Citation Envoyé par Ludwik
    A partir d'un fichier de 13000 lignes seulement [...] j'ai bien entendu augmenter sa valeur à 200000 mais sans succes,
    Donc, ça devrait passer.

    Il faut que tu nous en montres plus: ton code VBA, ta requête SQL...

    As-tu lu cette discussion dao mette à jour de grandes quantités de données et en particulier le message n° 6 de LedZepII ?
    _

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 42
    Points
    42
    Par défaut
    Bonjour JBO,


    Merçi de m'aider, c'est la fonction suivante qui me permet de m'initialiser mes cases à cocher de ma base:


    Dim MaBase As Database

    Dim rst2 As Recordset
    Set MaBase = CodeDb
    Set rst2 = MaBase.OpenRecordset("Bd_LcbMef", dbOpenDynaset)

    rst2.MoveFirst

    Do Until rst2.EOF = True
    rst2.Edit
    rst2!Selection = -1
    rst2.Update
    rst2.MoveNext
    Loop

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Vu que tu mets à jour tout le jeu de données (Recordset), je trouverai normal que tu le verrouilles complètement avec l'option dbDenyWrite.

    Code Ludwik : 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
     
    Dim MaBase As Dao.Database
    Dim rst2 As DAO.Recordset
     
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
     
    Set MaBase = CurrentDb
    Set rst2 = MaBase.OpenRecordset("Bd_LcbMef", dbOpenDynaset, dbDenyWrite)
     
    rst2.MoveFirst
     
    Do Until rst2.EOF = True 
        rst2.Edit
        rst2!Selection = -1
        rst2.Update
        rst2.MoveNext
    Loop

    Si "Bd_LcbMef" est une table, alors encore mieux, tu ouvres un Recordset de type "table" et tu la verrouilles complètement avec l'option dbDenyWrite. En théorie, ça ne pose qu'un seul verrou pour toute la table, donc pas de Pb de type MaxLocksPerFile.
    Code Ludwik : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim MaBase As Dao.Database
    Dim rst2 As DAO.Recordset
     
    Set MaBase = CurrentDb
    Set rst2 = MaBase.OpenRecordset("Bd_LcbMef", dbOpenTable, dbDenyWrite)
     
     ' etc.

    Mais, une requête me semble aussi bien appropriée.
    Code Ludwik : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim MaBase As Dao.Database
     
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
     
    Set MaBase = CurrentDb
    MaBase.Execute "UPDATE Bd_LcbMef SET Selection = -1", dbDenyWrite

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 42
    Points
    42
    Par défaut
    Merci JBO en faisant le point voici les résultats:

    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
    La solution qui fonctionne:
     
    Function AnnulFiltreSurEquipementLcb()
     
    Dim rst2 As Recordset
     
    Set MaBase = CodeDb
     
    Set rst2 = MaBase.OpenRecordset("Bd_LcbMef", dbOpenDynaset)
    DBEngine.SetOption dbMaxLocksPerFile, 200000
     
    rst2.MoveFirst
    Do Until rst2.EOF = True
    rst2.Edit
    rst2!Selection = -1
    rst2.Update
    rst2.MoveNext
    Loop
     
    End Function

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

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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