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

 Delphi Discussion :

Comment récupérer les valeurs d'un QRDBtext


Sujet :

Delphi

  1. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    c'est pas une simple facture

    on n'a certainement pas la même conception d'une facture , je n'ose te présenter l'édition des miennes (sachant qu'en plus , je fais non pas facture par facture mais bien l'edition d'un ensemble de factures)

    les deux requêtes sont liées à deux QRDBTEXT1 (code_article) et QRDBTEXT(code_s_a) ;
    je ne vois pas la liaison code_s_a dans les requêtes indiquées

    donc je ne travaille pas sur des tableau (ADOTABle) je travaille sur des requêtes
    je ne travaille pratiquement plus qu'avec des requêtes maintenant
    après tout une table n'est qu'un SELECT .. FROM TABLE sans WHERE

    Deux solutions sont possibles :

    un Quickreport Détail avec un QRGroup

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     SELECT B.dateBP,B.code_chapitre,B.code_article,B.code_s_a,
    B.BA_SACHAP,B.BS_SACHAP ,C.nom_chap,C.nom_article,C.BA,C.BS,C.code_cpt
    FROM budgetSAChap B JOIN ON B.Code_Chapitre=C.Code_chapitre  And b.Code_Article=c.CodeArticle AND B.DateBP=C.DateBP 
    WHERE code_article <>'850' 
    AND B.Code_chapitre=:C AND B.DateBP:=D  // repris de Query Maitre
    order by B.code_chapitre,B.code_article,B.dateBP
    QRGROUP sur CODE_CHAPITRE

    ou la solution (beaucoup moins élégante) Maitre/Détail

    QMaitre
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from budgetChapitre 
    where code_chapitre = :c and dateBP = :d and code_article <>'850'
    order by code_article , code_cpt

    QDetail (avec datasource=QMaitre)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM from budgetSAChap where code_chapitre = :codechapitre and dateBP = :datebp and
    code_article = :code_article

    et dans le BeforePrint de la Bande Détail (précaution car je ne suis pas sur que cela soit nécessaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin
    QDetail.Active:=False;
    QDetail.Active:=True;
    end;
    et voilà
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #22
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    select  budgetSAchap.dateBP, budgetSAchap.code_article, budgetSAchap.code_s_a ,budgetSAchap.nom_s_a ,  budgetSAchap.BA_sa_cha ,
    budgetSAchap.BS_sa_chap, budgetChapitre.dateBP, budgetChapitre.code_chapitre ,  budgetChapitre.code_article from budgetSAchap , budgetChapitre 
    JOIN ON  budgetSAchap.dateBP = budgetChapitre.dateBP AND budgetSAchap.code_article = budgetChapitre.code_article
    and budgetSAchap.code_chapitre = budgetChapitre.code_chapitre where code_article <> '850' and budgetSAchap.code_chapitre = :c
    AND budgetSAchap.dateBP= :D order by budgetSAchap.code_article
    J'ai essayé cette requête erreur dans la clause FROM j'ai cru que les Alias me causent le problème mais je ne le pense pas pourtant me semble tout est juste

  3. #23
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    from budgetSAchap , budgetChapitre
    faut réviser la syntaxe des jointures

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM budgetSAchap JOIN budgetChapitre ON
    méa culpa , la faute au copier-coller , et la faim , tout à l'heure il y avait une petite omission
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM budgetSAChap B JOIN budgetChapitre C ON B.Code_Chapitre=C.Code_chapitre  AND b.Code_Article=c.CodeArticle AND B.DateBP=C.DateBP
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #24
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    moi je pense qu'une aide par team viewer réglera le problème .

    après vous posté la solution et le problème pour aider les autres .

    Merci

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par coolirc Voir le message
    moi je pense qu'une aide par team viewer réglera le problème .
    mes interventions par teamviewer restent professionnelles et donc monnayables ! mettre une remarque comme celle-ci , ne fait certainement pas avancer le 'débat' .
    Comprenez bien qu'il y a aussi une vie en dehors du forum (c'est entre autre pour cette raison que je vais rarement dans la chatroom)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    mes interventions par teamviewer restent professionnelles et donc monnayables ! mettre une remarque comme celle-ci , ne fait certainement pas avancer le 'débat' .
    Comprenez bien qu'il y a aussi une vie en dehors du forum (c'est entre autre pour cette raison que je vais rarement dans la chatroom)
    moi je dit pas le contraire . nous avons tous une vie en dehors le forum . c'est pour ça j'ai pas encore fait ma table consommable lol .

    restant dans le sujet .

    Merci

  7. #27
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    @menoulette Je me permet de persister , j'utilise le Aftercroll depuis toujours et ça marche à merveille et ça répond réellement à ta question initiale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure datasetafterscroll(dataset Tdataset);
    begin
    ssa.Close;
    ssa.Parameters[0].Value:=  QRDBText4.dataset.Fields[0].AsString  ;
    ssa.Open();
    end;
    je jure devant dieu, si cette methode ne marche pas je devient pompier

    @sergio qu'est-ce qui peut remplacer le Afterscroll à ma connaissance rien.
    je l'utilise surtout dans la recherche imbriqué exple:
    Table Client
    Tabe Vente
    et à chaque changement de client une recherche se fait sur la table vente corréspondant au client selectionné.
    tu m'a aussi fait la remarque sur la non utilisation des parameters et je te remercie et je vai te répondre tout simplement parce-que la requette change à chaque fois.

  8. #28
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    @Checkal J'explique ma position :
    tout d'abord à propos de la solution en utilisant une jointure et donc un état détail avec un QRGroup : Avantage moins d'accès disque puisque l'on utilise qu'un seul fichier et donc pas de Close+Parametre+Open , donc gain de temps

    Pour ce qui est du BeforePrint ou AfterPrint au lieu d'un AfterScroll . D'une part le Beforeprint et le AfterPrint sont déclenchés un peu de la même manière (en fait avant le Scroll pour le Before et après pour le After , ce qui parait évident).
    A mon avis,d'un point de vue Maintenance , il est donc plus aisé de lire ce qui se passe au niveau du report sans s'occuper de ce qui pourrait se passer sur le Dataset.

    Enfin le AfterScroll en lui même , quand on affiche des Grilles (ce qui est souvent ton cas si j'ai bien compris) il est trop fréquemment appelé (ne serait-ce déjà qu'a l'ouverture du fichier !) . Bien sur on peut désactiver l'event puis le réactiver après l'ouverture , mais lors de la navigation dans une grille , c'est galère . Donc encore une fois pour des gains non négligeables de temps, d'accès disque etc... je ne recommande pas
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #29
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    @sergio, merçi pour ton explication, mais je vai peut être ajouter quelque chose sur le Beforeprint et Afterprint.ayant testé le afterpint son utilisation bloque souvent la construction du report sur tout sur une table volumineuse.

    @menoulette, il y a une chose que j'ai appris dans ce forum, c'est de partager le savoir, c'est pour ça que je vai te répondre ici. tu peut utiliser Tadotable, il contient un événement "onafterscroll".

  10. #30
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Bonjour @Sergio j'ai essayé la requête suivante est tjrs fausse
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  b.dateBP, b.code_article, b.code_s_a ,b.nom_s_a ,  b.BA_sa_cha ,
    b.BS_sa_chap, c.dateBP, c.code_chapitre ,  c.code_article from budgetSAchap  b
    JOIN  budgetChapitre c  ON  b.dateBP =c.dateBP AND b.code_article =c.code_article
    and b.code_chapitre =c.code_chapitre where code_article <> '850' and b.code_chapitre = :c
    AND b.dateBP= :D order by b.code_article

    @Chekkal votre proposition ne marche pas peut être j'ai mal placé le code , de plus pouvez vous m'expliquer encore (QRDBText4.dataset.Fields[0].AsString) fields[0]=> c'est le champs sélectionné ou celui qui est paramétré !!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure ADOquery1afterscroll(dataset Tdataset);
    begin
      ssa.Close;
      ssa.Parameters[2].Value:= QRDBText4.dataset.Fields[0].AsString  ;
      ssa.Open();
    end;



  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par menoulette Voir le message
    Bonjour @Sergio j'ai essayé la requête suivante est tjrs fausse
    quelle erreur ? et d'abord je ne crois pas l'avoir lu quelle BDD ?

    est-il possible d'avoir un script de création des tables et jeu d'essai ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #32
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    quelle erreur ? et d'abord je ne crois pas l'avoir lu quelle BDD ?

    est-il possible d'avoir un script de création des tables et jeu d'essai ?
    erreur dans la clause FROM j'ai le cerveau ramollis j'utilise le SGBD ACCESS

  13. #33
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Bon , je n'ai pas Access sur mon poste (d'ailleurs j'en suis pas un fan) , peut être que ce dernier n'accepte pas les alias de table , ou faut-il explicitement indiquer LEFT JOIN ?

    syntaxe JOIN ACCESS
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #34
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    j'ai réessayé avec cette requête et un message s'affiche expression join non supporté je crois que je dois éviter de travailler avec les requête tous ce que je souhaite c'est juste récupérer les données de ce QRDBtext et les faire passer à une requête paramétrées

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM budgetSACHap INNER JOIN budgetChapitre ON (budgetSACHap.code_article = budgetChapitre.code_article) AND (budgetSACHap.code_chapitre = budgetChapitre.code_chapitre) AND (budgetSACHap.dateBP = budgetChapitre.dateBP) and budgetChapitre.dateBP = :d and budgetChapitre.code_chapitre=:c

  15. #35
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    J'ai toujours dit que acces était
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM budgetSACHap,budgetChapitre
    WHERE (budgetSACHap.code_article = budgetChapitre.code_article) AND (budgetSACHap.code_chapitre = budgetChapitre.code_chapitre) AND (budgetSACHap.dateBP = budgetChapitre.dateBP) 
    AND budgetChapitre.dateBP = :d AND budgetChapitre.code_chapitre=:c
    au pire celle-ci devrait passer , mais c'est plutôt le * qu'il faut travailler à cause des noms de colonnes identiques

    tous ce que je souhaite c'est juste récupérer les données de ce QRDBtext et les faire passer à une requête paramétrées
    c'est sur , pourquoi faire quelque chose d'efficace quand on peut faire une bidouille en plus vous persistez dans votre erreur de vouloir obtenir le QRDBText au lieu de récupérer , plus simplement BudgetChapitre.code_article .
    (vous seriez un de mes stagiaires ou de mes élèves lorsque j'en avais la moitié de la note aurait déjà disparu )

    avez vous seulement testé "la solution (beaucoup moins élégante) Maitre/Détail " ? et compris le pourquoi du moins élégant ?

    comment faites vous pour tester les SQL (via DELPHI ou via Access) perso je peaufine toujours mon SQL via un GUI de la SGBD plutôt que de modifier sans cesse mon programme
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Gridview: Comment récupérer les valeurs des deux clés?
    Par Thomas_Laurent dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/02/2007, 14h54
  2. Réponses: 2
    Dernier message: 11/12/2006, 12h38
  3. Formulaire & Confirm : Comment récupérer les valeurs en javascript ?
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2006, 18h21
  4. Réponses: 4
    Dernier message: 13/11/2006, 17h49
  5. Réponses: 11
    Dernier message: 19/06/2006, 13h51

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