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 :

Boite de suivi de téléchargement


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Boite de suivi de téléchargement
    J'utilise un Tclisentdataset pour placer des images et autres BLOB dans une base de données distante.
    Les temps de téléchargement étant souvent de l'ordre de quelques minutes, je voudrais indiquer à l'utilisateur du programme le niveau d'avancement des opérations.
    Où puis-je trouver le nombre d'octets déjà tansférés au cours de l'opération ?
    MERCI
    GRAF

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Salut!

    Je doute que la façon par laquelle tu procèdes te permette d'obtenir le nombre d'octets transférés parce que probablement la fiche est figée au moment de la réception de ceux-ci; c'est le cas ?

    Je proposerai que tu utilises ton propre système d'envoi/reception de paquets (en utilisant des composants Indy par exemple), tu recupère les enregistrement ligne par ligne et une à chaque moment tu pourras savoir le nombre d'octets tranférés et afficher un Progress Bar par exemple pour montrer comment l'opération évolue. Une fois la ligne chargée, tu utilises des composants déconnectés (TEdit simple, Image etc...) pour afficher ce que tu as recupéré.
    Afin, c'est la première idée qui me vient à l'esprit.

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Salut, King, et merci de ta réponse.
    En fait mon tclientdataset est relié à un TWebConnection (ou un TSoapConnection selon la configuration du serveur d'application).
    Il n'est pas reliée à un compsant DBVisuel.

    L'ouverture du tclientdataset se fait dans un thread (en tâche de fond) et ne lit à chaque fois qu'un seul enregistrement de la base de données.
    Il est fréquent que le traitement "visuel" qui occupe l'utilisateur soit terminé avant le téléchargement en tâche de fond, et l'utilisateur ne sait pas combien de temps il devra attendre pour avoir la suite, ce qui est assez frustrant (le programe est un outil de formation à distance).
    Que faire ?
    Merci !
    GRAF

  4. #4
    Rédacteur

    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 450
    Points
    450
    Par défaut
    Bonjour,

    Tu peux passer par la propriété "recordcount" pour indexer la barre de progression et par la méthode "GetNextPacket" pour l'itération.

    Chaps

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Chaps,
    impossible, hélas, de passer par recordcount car je ne descends qu'un seul enregistrement à chaque fois.
    Merci !

  6. #6
    Rédacteur

    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 450
    Points
    450
    Par défaut
    Re,

    Tu dis : "je ne descends qu'un seul enregistrement à chaque fois"

    la valeur de PacketRecords=1 ? Tu veux montrer la progression de quoi ? La progression pour le téléchargement d'un enregistrement ?

    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    oui, la progression pour le téléchargement d'un seul gros enregistrement...

  8. #8
    Rédacteur

    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 450
    Points
    450
    Par défaut
    1- avec une TSoapConnection c'est possible via les événements :

    * TBeforePostEvent = procedure(const HTTPReqResp: THTTPReqResp; Data: Pointer) of object;

    * TPostingDataEvent= procedure(Sent: Integer; Total: Integer) of object;

    Voici l'aide qui décrit ce que je propose :

    "New events on THTTPReqResp let you to intercept the HTTP message before it is sent, and to monitor progress while sending or receiving long
    messages."
    2- Pour WebConnection : il faut "regarder dedans" et vérifier s'il n'existe pas l'équivalent. A priori il n'y a pas d'événement durant le transfert. L'unique solution est donc probablement d'utiliser un autre composant (wininet, indy..)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    salut Caps,
    merci de cette réponse détaillée.
    J'utilise D7 entreprise.
    TSoapConnection ne connait pas l'événement dont tu parles.
    De quelle version de Delphi disposes-tu ?

  10. #10
    Rédacteur

    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 450
    Points
    450
    Par défaut
    re,

    C'est du coté cllient : dans HttpRIO.HTTPWebNode ?

    --
    ps: Mon pseudo est "Chaps"

Discussions similaires

  1. Boite englobante (suivi)
    Par endoudech dans le forum OpenCV
    Réponses: 2
    Dernier message: 28/05/2009, 20h42
  2. Boite de dialogue téléchargement
    Par cjacquel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/08/2007, 23h54
  3. boite de téléchargement et javascript
    Par Langly dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/07/2006, 16h22
  4. [techno] Boite de téléchargement
    Par Eouzan dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 17/10/2005, 12h01

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