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 :

sauvegarde d'un enregistrement dans un DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut sauvegarde d'un enregistrement dans un DBGrid
    bonjour tout le monde,
    je veux sauvegarder un enregistrer en sortant d'une cellule du DBGrid.
    comment faire svp?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    Peux tu etre plus explicite stp ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    j'ai un DBGrid avec plusieurs cellules(ç comme en excel).
    je veux que quand je saisis enregistrements on les sauvegarde automatiquement(post).

  4. #4
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 217
    Points
    217
    Par défaut salut nabil 47.
    bon jour.
    pour enregistrer des information il faut toujour ouvrir la table et inserer les donnés puis tu la ferme,exmeple j'ai une table :Table1 il a comme champs:

    numero :integer.
    nom :string.

    pour inserer les donnés tu peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    table1.insert;
    table1fieldbyname('numero').asinteger:= strtoint(edit1.text);
    table1fieldbyname('nom').asstring:= edit2.text;
    table1.post;
    pour modifier un enregistrement déjas existe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    table1.edit;
    table1fieldbyname('numero').asinteger:= strtoint(edit1.text);
    table1fieldbyname('nom').asstring:= edit2.text;
    table1.post;
    remarques::
    insert:ouvre la table et insert un enregistrement vide,
    post:ferme la table.
    edit:ouvrir la table et la metre on mode edition(modification) .
    tu peut utiliser à la place de insert (append :fait meme travail que insert mais il insert ala fin de la table ou contraire de insert au debut ).
    j'éspére qu'il soit comprehensible.
    cordiallement

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    merci rec82 pour ton aide,
    je travaille sur un DBGrid.je saisie les données directement dans toutes la cellule de ce DBGrid (comme dans Microsofr Excel)et je veux que Delphi sauvegarde automatiquement les données dans la Table en sortant de chaque cellule(Cell).
    comment faire svp?

  6. #6
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 217
    Points
    217
    Par défaut salut
    salut.
    le dbgrid sert à afficher le contenu des tables ,pas d'entrés des valeurs à partir d'elle à la base des donné.
    je comprend ce que vous voulez à la place de dbgrid utilisé le composant STRINGGRID et considérer ces cellules comme valeur à entrer.
    exemples
    même table précédente table1, un stringrid 2*3 faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i:=0 to striggrid1.colcount-1 do
     for j:=0 to stringgrid.rowcount-1 do
    begin
    table1.insert;
    table1.fieldbyname('numero').asinteger:=strtoint(stringgrid1.cells[i,j]);
    table1.fieldbyname('nom).asstring:=stringgrid1.cells[i,j];
    table1.post;
    cordialement

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Lu Nabil74,

    Le principe d'un DBgrid est effectivement d'afficher le resultat d'une requete ou l'ensemble des enregistrements d'une table (filtré ou non), ensuite chaque ligne correspond à un renregistrement.
    Donc c'est pas logique de vouloir utiliser Dbgrid en voulant que chaque cellule produise un enregistrement !
    1 ligne de DBgrid = 1 Ligne de ta table
    Si ta table comporte 5 champs (exemple: code, nom, adresse, cp et ville) alors tu as par defaut 5 colonne possible dans ton DBGRID

    Maintenant l'idée d'utilise le StringGrid est une bonne alterntive, mais je me demande si 1 cellule est égale à un enregistrement chaque cellule vaut donc 1 ligne dans ta table ??

    En fait si tu pouvais être plus claire dans ta demande.

    a+

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Lu Nabil74,

    Le principe d'un DBgrid est effectivement d'afficher le resultat d'une requete ou l'ensemble des enregistrements d'une table (filtré ou non), ensuite chaque ligne correspond à un renregistrement.
    Donc c'est pas logique de vouloir utiliser Dbgrid en voulant que chaque cellule produise un enregistrement !
    1 ligne de DBgrid = 1 Ligne de ta table
    Si ta table comporte 5 champs (exemple: code, nom, adresse, cp et ville) alors tu as par defaut 5 colonne possible dans ton DBGRID

    Maintenant l'idée d'utilise le StringGrid est une bonne alterntive, mais je me demande si 1 cellule est égale à un enregistrement chaque cellule vaut donc 1 ligne dans ta table ??

    En fait si tu pouvais être plus claire dans ta demande.

    a+
    bonjour BuzzLeclaire
    oui 1 ligne de DBgrid = 1 Ligne de ta table.
    ma table comporte les champs:num_eleve,nom_prenom,Devoir1,Devoir2,Compo,Moyenne.
    je veux travailler et saisir(enregistrer) les infos des élèves directement dans
    le DbGrid en passant d'une cellule à une autre c'est à dire:je saisis le champ
    num_eleve dans le DbGrid et puis je passe à la cellule suivante(nom_prenom)et je saisis le nom et prénom de l'élève et ainsi de suite.en sortant de la cellule,je voudrais que Delphi l'enregistre c comme dans un tableau de Microsoft Excel.
    j'espere que j'étais claire mon ami et merci d'avance.
    cordialement

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Bonjour,

    Alors le DBGrid permet déjà cette possibilité.
    exemple :
    1) tu créer un form
    2) (moi j'utilise ADO) tu pose un ADOConnection
    3) Tu pose un ADOTable
    4) Tu pose un DATASet
    Là tu fait en sorte que la connection soit active en ADOConnection et ADOTable (pour rendre plus visible ton travail) et tu lie Ton ADOTable à n'importe quelle table pour commencer
    5) tu Pose un DBGrid et tu lie ton DataSet avec

    Normalement arrivé ici tu devrai déjà voir la liste des entregistrements existant de ta table en mode conception
    Dans le DBGRID il y a le paramètre ReadOnly que tu mets à False (si nécessaire)

    Ensuite tu compile, normalement tu va voir ton dbgrid de rempli (si ta table n'ai pas vide évidemment).

    Va tout simplement en dernière ligne et descend ou fait entrée (cela dépend et tu pourra créer un nouvel enregistrement sans aucun soucis et comme dans Excel passe à la colonne suivante avec le TAB.
    A chaque saisie dans la colonne (correspondant à un champ) si les contraintes des champs sont respectés la saisie est mémorisée au fur et à mesure. Tu pourras également modifier ceux existants.

    Maintenant on peut imaginer plein d'autre traitement, mais pour ta demande voilà ce qu'il faut faire.

  10. #10
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Salut,
    Si vous voulez enregistrer dans votre table derriere la saisie de chaque champ, utilisé l'evenement OnColExit du DBGrid, avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
    ADOtable1.Edit;
    Adotable1.Post;
    end;
    , il est evident que ce n'est pas la meilleure solution, car si vous avez des champs obligatoires, ça ne marche pas, la logique veut qu'ont utilise un DBNavigator pour faire ça.
    bon courage.

  11. #11
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    bonsoir à tous,
    merci beaucoup BuzzLeclaire pour ta précieuse aide.
    je me débrouille avec Delphi.je cherchai le nom de l'événement pour se déplacer de cellule en cellule et dieu merci notre ami liazidf nous a aidé.Donc son nom est "DBGrid1ColExit".je l'ai cherché dans les événements du DBGrid mais je ne l'ai pas trouvé car je croyais qu'il porte le nom de
    "On Cellexit".
    encore merci à vous pour tous les efforts que vous faites.
    cordialement

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

Discussions similaires

  1. se positionner sur un enregistrement dans un DBGRID
    Par menoulette dans le forum Débuter
    Réponses: 2
    Dernier message: 23/04/2014, 12h29
  2. S'arrêter sur un enregistrement dans un DBGrid
    Par vg-matrix dans le forum Composants VCL
    Réponses: 17
    Dernier message: 20/12/2010, 23h35
  3. Comment sélectionner plusieurs enregistrements dans un DBGrid
    Par defluc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/11/2009, 14h26
  4. Réponses: 2
    Dernier message: 30/08/2007, 08h28
  5. [VB]Ajout d'enregistrement dans un DBGrid
    Par nikita34 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/01/2006, 08h39

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