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 :

Bloc try Except


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Par défaut Bloc try Except
    Bonjour,

    j'ai un petit problème avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
          adost2.Close;
          adost2.ProcedureName:=adost.ProcedureName;
          showmessage('try'+adost2.ProcedureName);
          adost2.Open;
        except
          on E:Exception do
          begin
             showmessage('except'+adost.ProcedureName);
            adost.ExecProc;
          end;
        end;
    en fait il s'agit de composants TADOStoredProc (adost et adost2) qui exécute dans une boucle des requêtes existantes dans une base Access.

    Certaines requêtes retourne un résultat et d'autre pas : ceci pour expliquer le adost2.open dans le try et le adost.execproc dans le except !!

    je veux biensur que les requêtes ne soient exécutées qu'une seule fois mais il passe aussi bien dans le try que dans le except donc lorsque j'arrive sur une requête d'ajout dans une table qui a déja été exécutée dans le adost2.open, il râle avec adost.execproc qui essaie d'exécuter la même requête d'ajout. donc problème de doublons dans la table !!

    quelqu'un aurait-il une solution à ce problème ?
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    l'except ne s'execute qu'en cas d'exception dans le try/except...ton open génère-t-il une exception ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Par défaut
    en fait, je pensais qu'il en générait une mais l'exception que j'avais était due au fait qu'il passe dans le try mais aussi dans le except donc doublons !

    le problème est que je ne sais pas dire à l'avance si je dois utiliser un "open" ou un "execproc" !!

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Ne serait-il pas possible (au lieu de tenter un Open et de faire un Exec si cela ne marche pas) d'extraire le texte de la requete et de tester s'il commence par "Select" pour ensuite faire un Open ou un Exec dans une simple structure conditionnelle ?

  5. #5
    Membre éclairé Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Par défaut
    l'idée est intéressante mais il y un ou plusieurs "select" dans toutes les requêtes

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Citation Envoyé par zemeilleurofgreg Voir le message
    l'idée est intéressante mais il y un ou plusieurs "select" dans toutes les requêtes
    Si la requête possède dans son texte Insert,Update ou delete alors tu fais un ExecSQL sinon tu fais un open

    Mais bon, avec les procédures stockées, c'est plus difficile.
    Il faudrait peut être que tu renommes tes procédures stockées afin de savoir si c'est une requête avec resultat ou non.

    Genre :
    insert_Nom_de_la_procedure_stockée
    delete_Nom_de_la_procedure_stockée
    select_Nom_de_la_procedure_stockée
    etc...
    Modérateur Delphi

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

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

Discussions similaires

  1. Gestion exception (retourner dans le bloc try)
    Par hotman1313 dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2014, 10h03
  2. bloc try/except et API windows
    Par jakouz dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 24/02/2005, 12h21
  3. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  4. Réponses: 8
    Dernier message: 28/04/2004, 16h53
  5. Réponses: 5
    Dernier message: 21/04/2004, 11h43

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