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

Bases de données Delphi Discussion :

Delphi-Access et Maxlocksperfile


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut Delphi-Access et Maxlocksperfile
    Bonjour,

    J'ai une application Delphi6/Access2000. Et je rencontre cette fameuse erreur connue des utilisateurs d'Access :
    Le nombre de verrous disponible pour le partage de fichiers est dépassé. Augmenter l'entrée du registre MaxLocksPerFile
    Je n'ai pas trouve de véritable solution dans la programmation Delphi6 pour remédier a ce probleme.
    Je ne voudrais pas avoir à demander à mes utilisateurs de modifier ce paramètre dans la base de registre, car ils ne sont pas administrateurs de leur poste.

    Le probleme arrive quand l'application fait une succession de requêtes d'Update qui doivent être assez volumineuses. Elles sont du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update TCAP_CLIENT as C set C.B_VALIDE_EXPORT = False 
              where exists ( 
                select * from REJET_CLIENT as R 
                where R.ID_TIERS_LOCAL = C.ID_TIERS_LOCAL)
    J'en ai toute une liste comme ca.

    Savez-vous comment je devrais m'y prendre?

    Merci

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Quel composant utilises tu ? Ado/BDE/ autres ?
    Utilises tu un Tdatabase/TadoConnection/TxxxConnection ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Malatar
    Quel composant utilises tu ? Ado/BDE/ autres ?
    Utilises tu un Tdatabase/TadoConnection/TxxxConnection ?
    J'utilise ADOConnection
    C'est codé comme suit :
    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
    with DMParametres.ADOConnection do
    begin
    BeginTrans;
    Execute('update TCAP_CLIENT as C set C.B_VALIDE_EXPORT = False 
              where exists ( 
                select * from REJET_CLIENT as R 
                where R.ID_TIERS_LOCAL = C.ID_TIERS_LOCAL')
     
    Execute('...');
    Execute('...');
    Execute('...');
    ...
    ...
    ...
    CommitTrans;
    end;

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Est ce que tes updates doivent être obligatoirement fait tous ensemble ?

    Fait un test aussi sans le begintrans...commit.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Malatar
    Est ce que tes updates doivent être obligatoirement fait tous ensemble ?

    Fait un test aussi sans le begintrans...commit.
    oui, il doivent etre faits de maniere sequentielle.
    A quoi servent "begintrans" et "commit"? Sont-ils essentiels? (je viens de faire le test, ca passe sans probleme)

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ca sert à gérer les transactions.
    Par exemple si l'action que tu veux faire est lancée 2 fois en même temps, une des deux transactions (la première qui aura reçu l'ordre de la base de données) passera et tant qu'elle n'est pas terminé la 2em ne démarrera pas.

    Donc à toi de voir s'il est bien utile d'en cadrer tes updates dans une transaction, car il se peut que vu le nombre d'update que tu fais, le pauvre ACCESS ait du mal à le gérer ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Malatar
    Ca sert à gérer les transactions.
    Par exemple si l'action que tu veux faire est lancée 2 fois en même temps, une des deux transactions (la première qui aura reçu l'ordre de la base de données) passera et tant qu'elle n'est pas terminé la 2em ne démarrera pas.

    Donc à toi de voir s'il est bien utile d'en cadrer tes updates dans une transaction, car il se peut que vu le nombre d'update que tu fais, le pauvre ACCESS ait du mal à le gérer ^^
    Ok, merci.
    Dans la mesure où tous les update sont réalisés séquentiellement (donc pas d'update lancé 2 fois en même temps), il n'est peut-etre pas nécessaire de mettre begintrans et commit. Qu'en penses-tu?

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si ton logiciel est le seul à avoir accès à la base de données et est le seul a faire cette action, alors, oui c'est inutile de gèrer une transaction.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Malatar
    Si ton logiciel est le seul à avoir accès à la base de données et est le seul a faire cette action, alors, oui c'est inutile de gèrer une transaction.
    C'est le cas.
    Merci pour ta réponse.

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

Discussions similaires

  1. Delphi, access et ftFloat
    Par Adrian Miatlev dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/09/2005, 15h57
  2. Depuis EDI DELPHI : Access Violation
    Par powerlog dans le forum EDI
    Réponses: 1
    Dernier message: 03/08/2005, 16h59
  3. Problem de Date (Delphi/Access)
    Par mobeida dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/04/2005, 18h14
  4. Delphi-Access
    Par mobeida dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/01/2005, 11h43
  5. [Delphi+Access] Pb affichage caractère spéciaux
    Par fred64 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/06/2004, 10h53

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