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 :

[Delphi 7] Sélectionner plusieurs lignes DBGRID et afficher sur un état


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut [Delphi 7] Sélectionner plusieurs lignes DBGRID et afficher sur un état
    bonjour , je voudrait savoir comment sélectionner deux ligne d'un dbgrid et les affiche dan un etat de sortie merci d'avance et voici une capture de ce que j'ai et merci
    Nom : Capture.PNG
Affichages : 2385
Taille : 49,2 Ko

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    il faut que ta grille accepte le multiselect

    et ensuite une fois la selection faites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure TMafrm.TraiteSelectionClick(Sender: TObject);
    var
     i : integer;
    begin
      inherited;
      if MaGrid.SelectedRows.Count > 0 then
      begin
        with MaGrid.DataSource.DataSet do
        begin
          for i := 0 to MaGrid.SelectedRows.Count-1 do
          begin
            GotoBookmark(Pointer(MaGrid.SelectedRows.Items[i])); // on se place sur la selection 
            // ici tu fait le traitement qui t'interesse pour la ligne selectionné
          end;
        end;
      end ;
    tu as deux choix possible soit dans ta table tu as un champs selectionée O/N
    et dans ton etats tu fait une requette avec les element qui ont une selection a O

    soit tu remplis une deuxieme table et tu affiche cette table dans l'etats prevu
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    j'ai fait mais seulement une ligne s'affiche merci

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    tu as fait quoi/comment ?
    tu est sur quel type de base de donnée

    ton etats c'est quoi ?
    tu le lance comment ?

    tu vois ce n'est pas simple de repondre quand on a que tres peu d'info
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    j'utilise sql server 2000 les numero_bc qui s'affiche plusieurs fois dans plusieurs ligne sont le même bon de commande avec 2 3 article mon problème c'est j'ai trouver le moyen pour regrouper un bon de commande avec tous les article qui sont dans ce bon de commande affichage sur état affiche un seul article alors qu'il y a 2 et plus

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    soyez plus précis ! On ne sait toujours pas quel générateur d'état vous utilisez, et puisque SGBD il y a ainsi que selon ce dernier post à minima deux tables, il serait bon d'en fournir partie de la structure de celle-ci.
    finalement je n'aurais peut être pas du supprimer mon premier message

    votre problème semble plus être un problème de type : état maitre (le numéro de bon) détail (les lignes du bon) qu'un problème de sélection d'enregistrements dans une grille !
    répondre à : imprimer le numéro le bon 1212016710 passe par un simple SQL qui sélectionnera les lignes du bon SELECT * FROM LIGNES WHERE NBC=1212016710,répondre à : n'imprimer que les lignes cochées de la DBGrid passera par la proposition d'anapurna
    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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    voici ma vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    create view etat_bc2
    ([prix_unitaire],[quantite_commande],[montant],[montant_total],[montant_tva],[designation_article],[numero_da],[date_demandeachat],[numero_bc],[code_paiment],[designation_paiment],[nom_service],
    [unite_mesure],[nom_fourisseur],[adresse_fournisseur],[nom_acheteur])
    as
    select a.pu,a.qtc,a.qtc*a.pu as montant,sum(a.qtc*a.pu)as montant_total,sum(a.qtc*a.pu*19/100),b.desig_ar,c.n_da,c.date_da,d.n_bc,f.code_mpei,f.desig_mpei,g.desig_serv,
    h.code_um,i.nom_fo,i.adresse_fo,j.nom_achet
    from contient1 as a
    join article as b
    on a.ref=b.ref
    join da as c
    on a.n_int_da=c.n_int_da
    join bc as d
    on a.n_int_da=d.n_int_da
    join facture as e
    on d.n_bc=e.n_bc
    join mpei as f
    on e.code_mpei=f.code_mpei
    join service as g
    on c.code_serv=g.code_serv
     join unitemesure as h
    on b.code_um=h.code_um
    join fournisseur as i
    on d.code_fo=i.code_fo
    join acheteur as j
    on c.code_achet=j.code_achet
     group by a.pu,a.qtc,b.desig_ar,c.n_da,c.date_da,d.n_bc,f.code_mpei,f.desig_mpei,g.desig_serv,
    h.code_um,i.nom_fo,i.adresse_fo,j.nom_achet
    et voila le résultat
    Nom : Sans titre.png
Affichages : 1631
Taille : 120,8 Ko
    Nom : 1.png
Affichages : 1590
Taille : 122,1 Ko
    le problème c'est le même numéro bc s'affiche plusieurs fois avec article différent du même bc

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    pour lancer mon état je fait un filtre sur dbgrid après je fait form2.quickrep.preview

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    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 037
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Ouf, enfin on sait que le générateur d'état est quickreport ! mais
    je fait un filtre sur dbgrid
    est loin d'être explicite et votre problème est justement ce genre de raisonnement, et le fait d'utiliser une vue que je qualifierai de synthétique pénalise plus que arrange les choses.

    De la vieille école, j'ai retenu qu'il valait toujours mieux décomposer (les états, les données etc..) en parties simples .
    D'ailleurs lorsque je fait une analyse rapide pour une application point besoin de Merise, je pars des écrans et états voulus pour avoir ma première approche et décompose

    par exemple : un bon de commande se décompose en :
    un Entête
    . numéro
    . client
    . date
    etc..
    des lignes
    . numero de ligne
    . article
    . prix
    etc..
    un pied
    . Montant total
    etc...
    En bref ce que je nomme un état maitre/détail

    où vous, vous fourrez tout dans une grille, moi je met soit deux grilles, soit une boite de choix (numéro de bon) et renseignements asscociés et une seule grille pour les lignes.
    où vous vous partez d'un "filtre" sur votre grille, moi je construis par exemple une table en mémoire qui contiendra les numéros de bons à imprimer et fonde mon état sur cette table avec bien évidemment d'autres requêtes associés via paramètres pour glaner les informations nécessaires à mon état
    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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/03/2010, 05h29
  2. Réponses: 11
    Dernier message: 30/08/2008, 10h06
  3. E07 Sélectionner plusieurs lignes conditions
    Par eillon dans le forum Excel
    Réponses: 5
    Dernier message: 11/03/2008, 18h46
  4. Réponses: 17
    Dernier message: 20/04/2007, 23h28
  5. Réponses: 7
    Dernier message: 17/05/2006, 12h37

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