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 :

Créer une nouvelle ligne dans un DBgrid


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Gerant
    Inscrit en
    Janvier 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Gerant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 31
    Points : 38
    Points
    38
    Par défaut Créer une nouvelle ligne dans un DBgrid
    Bonsoir!J'ai un problème avec mon DBgrid et je voudrais demander de l'aide.Je sais que pour créer une nouvelle ligne, on fais un monDBgrid.insert.Mais ce que je voudrais faire et que ça ne marche pas ET surtout je ne sais pas comment on doit passer, c'est que je voudrais laisser le choix à l'utilisateur de mettre autant de ligne qu'il veut. ie que j'ai un bouton Ajouter sur mon Form et que si l'utilisateur clique dessus, une nouvelle ligne apparait et il fais les saisies et cela autant de fois qu'il veut.Avec le code monDBgrid.insert, si je clique encore sur le bouton, la première ligne disparait. Je me dis pourtant que mon idée est faisable; sauf que je ne vois pas vraiment pas trop comment faire. Quelqu'un pourrait m'aider? une explication? un lien ? Merci.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 603
    Points : 25 288
    Points
    25 288
    Par défaut
    Il faut faire un Insert ou Append sur le DataSet lié au DataSource, lui même lié au DBGrid
    Il existe le TDBNavigator lié au même DataSource, ce contrôle fourni les Boutons d'Insertion, Modification, Suppression et Navigation (le tout configurable), il va automatiquement géré les opérations sur le DataSet sans une ligne de code, il n'est pas très beau mais pour débuter, c'est déjà bien !

    Tu ne peux pas vraiment inséré plusieurs lignes comme ça, il te faut faire un Post avant, attention, cela va créer les lignes en Base de données !!

    Tu devrais utiliser un TClientDataSet pour un tampon avant l'insertion réelle
    Ou alors utiliser une TStringGrid et un remplissage manuelle en SQL

    Sinon, aère un peu ton texte, on a une masse pas très agréable à lire !

  3. #3
    Nouveau membre du Club
    Profil pro
    Gerant
    Inscrit en
    Janvier 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Gerant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 31
    Points : 38
    Points
    38
    Par défaut
    Merci pour la réponse ShaiLeTroll! Mais en fait j'ai omis pas mal de choses dans

    mon poste.En fait, j'ai 4 cellules par ligne et la première cellule a la

    propriété buttonStyle à cbsEllipsis; dans l’évènement OnEditButtonClick j'appelle

    un DBLookupListBox qui liste des enregistrements d'une table de ma base de

    données.Je choisis alors une ligne du DBLookupListBox pour remplir les

    deux premières cellules; les autres cellules étant remplies à la main.Et c'est là

    que le problème intervient.Quand je clique sur le DBLookupListBox mes

    deux premières cellules se remplissent, je remplis aussi les deux dernières.Si

    je clique ensuite sur le bouton Ajouter, une nouvelle ligne se créée et

    l'ancienne ligne déjà saisie est toujours visible là pas de problème.Mais quand

    je fais apparaître le DBLookupListBox et que je choisie l'enregistrement

    voulue, patatras l'ancienne ligne disparaît et c'est la nouvelle qui est visible;

    ça fait que j'ai une seule ligne sur mon DBgrid à chaque fois que je clique sur

    le DBLookupListBox.Comment pourrais-je gérer ce cas?

    Ps:Vous avez raison derrière mon bouton Ajouter, j'ai ; et non monDBgrid.Insert comme dans mon premier poste.

    J'espère avoir été assez précis cette fois.Merci.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 603
    Points : 25 288
    Points
    25 288
    Par défaut
    Aéré ne veut pas dire sauter des lignes pour rien !

    En fait, j'ai 4 cellules par ligne et la première cellule a la propriété buttonStyle à cbsEllipsis puis dans l’évènement OnEditButtonClick, j'appelle un DBLookupListBox qui liste des enregistrements d'une table de ma base de données.
    Je choisis alors une ligne du DBLookupListBox pour remplir les deux premières cellules, les autres cellules étant remplies à la main.

    Et c'est là que le problème intervient !

    Quand je clique sur le DBLookupListBox mes deux premières cellules se remplissent, je remplis aussi les deux dernières.
    Si je clique ensuite sur le bouton Ajouter, une nouvelle ligne se créée et l'ancienne ligne déjà saisie est toujours visible là pas de problème.
    Mais quand je fais apparaître le DBLookupListBox et que je choisie l'enregistrement voulue, patatras, l'ancienne ligne disparaît et c'est la nouvelle qui est visible.
    ça fait que j'ai une seule ligne sur mon DBgrid à chaque fois que je clique sur le DBLookupListBox.

    Comment pourrais-je gérer ce cas?
    Attention le DBLookupListBox est assez retord, parfois un simple TDBComboBox est plus approprié !

    Tu dois avoir affecté une mauvaise propriété à DataSource et ListSource !
    Il y a une confusion la dessus !

Discussions similaires

  1. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  2. Comment créer une nouvelle ligne (\n) dans un StringBuffer
    Par publicStaticVoidMain dans le forum Langage
    Réponses: 5
    Dernier message: 05/11/2009, 18h31
  3. puis je créer un nouvelle ligne dans un dbgrid
    Par lila23 dans le forum Débuter
    Réponses: 7
    Dernier message: 06/04/2009, 09h44
  4. Réponses: 18
    Dernier message: 26/07/2006, 14h51
  5. Réponses: 2
    Dernier message: 07/12/2005, 16h26

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