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 :

Problème ADOQuery + Post + OnCalcFields


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut Problème ADOQuery + Post + OnCalcFields
    Bonjour,

    J'ai un soucis avec une requête ADO dont le résultat est affiché dans une grille.

    Cette requête contient des champs calculés, et possède une fonction OnCalcFields.

    J'ai besoin de pouvoir modifier manuellement la valeur des champs calculés de l'enregistrement courant, donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                  Q_Declinaison.disablecontrols;
                  Q_Declinaison.Edit;
                  Q_Declinaison.FieldByName('CA_Access').AsInteger:=Q_Declinaison.FieldByName('CA_Access').AsInteger+10;
                  Q_Declinaison.Post;
                  Q_Declinaison.enablecontrols;
    Le problème, c'est qu'au moment du post, la query va passer dans son OnCalcFields pour TOUS les enregistrements affichés dans la grille, ce qui est super long.

    Comment faire pour que le OnCalcFields ne se fasse que sur l'enregistrement qui vient d'être modifié ??

    La présence ou absence des enable/disable controls ne change rien.

    La requête tape dans une base SQL server, en direct via une ADOConnection, pas de BDE, pas d'ODBC.


    Merci d'avance

  2. #2
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    bonjour,

    champ calculer au niveau de SQL SERVER (computed) ?
    Il me semble que l'on ne peut modifer directement un champ calculer et seul les champs impliquant le champ calculer sont modifiable.
    Post ton code ..

  3. #3
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    Citation Envoyé par freud Voir le message
    champ calculer au niveau de SQL SERVER (computed) ?
    Non, champs calculé créé dans la TQuery (FieldKind = fkCalculated)

    Citation Envoyé par freud Voir le message
    Il me semble que l'on ne peut modifer directement un champ calculer et seul les champs impliquant le champ calculer sont modifiable.
    si si, ça marche trés bien (enfin, avec un champ calculé Delphi)


    Citation Envoyé par freud Voir le message
    Post ton code ..
    c'est déjà fait..

  4. #4
    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

    Ton champ calculé est CA_Access ?
    Si oui, je ne vois pas comment ton code peut fonctionner, puisque la valeur de CA_Access se calcule en faisant référence à sa propre valeur.

    @+ Claudius

  5. #5
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    Et pourtant, ça marche trés bien.

    Dès que je change la valeur de CA_Access, elle s'affiche bien dans la grille.
    Et si entre temps je change une des valeurs de la formule du champ calculé, le calcul se fait bien.

    Mon problème n'est pas un problème de calcul du champ courant, tous les calculs sont corrects, mais le fait que ce sont tous les champs de la grille qui repassent pas le OnCalcField, d'où un ralentissement conséquent.

  6. #6
    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
    Citation Envoyé par fredfred Voir le message
    Dès que je change la valeur de CA_Access, elle s'affiche bien dans la grille.
    Que la situation soit vraiment claire, j'ai peur de ne pas bien saisir:
    • Le champ AC_Access est-il ton champ calculé ?
    • Le code que tu as posté dans ton 1° message est-il l'implémentation de OnCalcField ?


    @+ Claudius

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/10/2006, 09h39
  2. Formulaire au comportement étrange : problème de POST
    Par Chlipouni dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 11h36
  3. Problème Methode POST
    Par nguthans dans le forum Langage
    Réponses: 3
    Dernier message: 13/01/2006, 20h28
  4. Problème methode POST
    Par raptor70 dans le forum Langage
    Réponses: 18
    Dernier message: 24/10/2005, 10h57
  5. [HTTPS] Problème de Post et Get avec Apache et SSL
    Par bartrik dans le forum Apache
    Réponses: 5
    Dernier message: 17/09/2004, 08h37

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