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 :

JvUIB et Thread


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut JvUIB et Thread
    Salut à tous.

    Dans une application Delphi7 de reprise de données (passer des données d'un système d'information X vers un autre - le nôtre) j'utilise une base de données Firebird 2 avec les composants UIB.

    Je lance certaines procédures stockées via des threads. Pendant leurs éxécution, j'affiche une fenetre d'attente. A la fin de la procédure, la fenetre disparait et rend la main au soft.

    Le problème, c'est que parfois, le thread ne me rend pas la main. et donc le fenetre d'attente s'affiche en permenance. Seul solution : tuer la tache ! Pas bon !

    Avant j'utilisai Firebird 1 + IBX, je n'ai jamais eu le problème. Etant novice avec les UIB, il y a peut être des choses à faire ou à ne pas faire.

    Merci pour vos réponses.
    @+, Alex

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut
    Salut,

    alors, vraiment, ca n'intéresse personne ?

    @+, Alex

  3. #3
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    donne au moins le code de la procedure Execute de thréad

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut
    Salut,

    Voici le code de la méthode Execute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
      inherited;
     
      try
        try
          TJvUIBQuery(FParametres).ExecSQL;
          TJvUIBQuery(FParametres).Tag := 1;
        except
          TJvUIBQuery(FParametres).Tag := 0;
        end;
      finally
        Terminate;
      end;
    La propriété "Tag" me sert à savoir si la méthode est sortie en erreur ou pas.

    Merci de ta solicitude.
    @+, Alex

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut
    Citation Envoyé par alexvdb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          TJvUIBQuery(FParametres).ExecSQL;
    Je ne saisi pas très bien, c'est un transtypage ?

    sinon, avec les compos UIB il est préférable d'utiliser la méthode Execute plutôt qu'ExecSQL.

    A tester.

    @+ Claudius

  6. #6
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    et cette inherited; sére à quoi

  7. #7
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Citation Envoyé par alexvdb Voir le message
    Je lance certaines procédures stockées via des threads. Pendant leurs éxécution, j'affiche une fenetre d'attente. A la fin de la procédure, la fenetre disparait et rend la main au soft.
    A quoi sert le thread si tu fait attendre l'utilisateur ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut
    Salut,

    Les threads me servent à lancer des procédures stockées longues. Pendant qu'elles s'éxécutent, une fenetre d'attente dit gentiment aux utilisateurs de patientez quelques instants (un peu comme les hots lines) pour ne pas qu'ils s'impatientent et écrasent de leurs gros doigts boudinés les 3 touches que sont CTRL+ALT+SUPPR pour tuer la tâche (ce qui par ailleurs pourraient éventuellement mettre à mal la base de données ...).

    Enfin, moi, à leur place, une mise à jour de base qui bloquent/frisent l'appli. pendant 5 longues minutes, ca m'énerverait ...

    @+, Alex

  9. #9
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Si tu met en service un thread, normalement c'est pour rendre la main a l'utilisateur sans attente.
    Sinon, pour utiliser une procedure stockée avec UIB, voici la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JvUIBQuery.BuildStoredProc('NOM_Procedure_Stockee');
    JvUIBQuery.Params.ByNameAsString['Parametre_Entree'] := 'Valeur';//éventuellement.
    JvUIBQuery.Open;
    Var_String:=JvUIBQuery.Fields.ByNameAsString['Parametre_Sortie'];//éventuellement.
    JvUIBQuery.Close(etmCommit);

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut
    Salut,

    Ok, merci, je sais comment on lance une procédure stockée avec JvUIB ... mais, sérieux, je tiens absolument à mettre cette foutu fenetre d'attente pendant le longue procédure stockée. Le fait que tu ne comprennes pas pourquoi m'est égal ...

    Maintenant, si quelqu'un a d'autre propositions, je suis preneur.

    @+, Alex

  11. #11
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Désolé de ne pouvoir te comprendre.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 33
    Par défaut
    Salut

    Alors, les fêtes de noël ne vous ont pas inspirés pour mon problème ? toujours pas ?

    @+, Alex

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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