Modifier l'enregistrement de la table avec selection sur un dbgrid

Résolu
morphman59 Messages postés 2 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 19 mars 2010 - 18 mars 2010 à 03:58
morphman59 Messages postés 2 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 19 mars 2010 - 19 mars 2010 à 14:51
Bonjour,

Voila je voudrais savoir si il est possible que lorsque l'utilisateur selectionne une ligne du DBGrid la table correspondante se place sur le meme enregistrement pour pouvoir le modifier grace a une Form differente avec des Tedit?


Voici mon code pour l'appel de la fonction modifier l'enregistrement
procedure TSDIAppForm.Bt_modifierClick(Sender: TObject);
begin
     // Récupére la marque,le nom,le parametre, le prix, la qtéstock etoption et les places dans les Combobox et edit
 form1.marque_combobox.Text:=adoTable1.FieldByName('Marque').AsString;
 Form1.nom_combobox.Text:=adoTable1.FieldByName('Nom').AsString;
 Form1.parametre_combobox.Text:=ADOTable1.FieldByName('Parametre').AsString;
 Form1.prix_edit.Text:=ADOTable1.FieldByName('prix').AsString;
 Form1.qte_edit.Text:=ADOTable1.FieldByName('Qte_en_stock').AsString;
 Form1.Alerte_edit.Text:=ADOTable1.FieldByName('niveau_alerte').AsString;
 Form1.option_checkbox.Checked:=ADOTable1.FieldByName('piece_option').AsBoolean;
     // Affiche la form
 Form1.ShowModal;
end;

et ici le code de modification de la table
procedure TForm1.Bt_applimodifClick(Sender: TObject);
begin
       // Positionne la table en mode Edition
 SDIAppForm.ADOTable1.edit;
       //Place la marque, nom, parametre, prix, qtestock, et option dans la table
 SDIAppForm.ADOTable1.FieldByName('Marque').Value := marque_combobox.Text;
 SDIAppForm.ADOTable1.FieldByName('Nom').Value := Nom_combobox.Text ;
 SDIAppForm.ADOTable1.FieldByName('Parametre').Value := Parametre_combobox.Text ;
 SDIAppForm.ADOTable1.FieldByName('Prix').Value := prix_edit.Text ;
 SDIAppForm.ADOTable1.FieldByName('Qte_en_stock').Value := Qte_edit.Text ;
 SDIAppForm.ADOTable1.FieldByName('Niveau_alerte').Value := alerte_edit.Text ;
 SDIAppForm.ADOTable1.FieldByName('Piece_option').AsBoolean := option_checkbox.Checked ;
        //Enregistre les modification dans la table
 SDIAppForm.ADOTable1.Post;
        //ferme la form
 Close;
end;

2 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 mars 2010 à 13:51
Bonjour,

je ne peux tester ton code pour l'instant
mais sur le principe, lors du positionnement d'un enregistrement
dans un grid si bien entendu ton grid est relié à une table,
ce dernier est automatiquement positionné :

A cet instant, deux possiblités existent ,
soit de modifier directement les données dans
le grid (pas très pratique) ou
créer un formulaire lié avec des champs db et faire cette modification dedans.

Ce qui donne une forme avec un grid et
un formulaire le tout en db

classique..

bon courage


cantador
3
morphman59 Messages postés 2 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 14:51
Bonjour cantador, et merci pour ta reponse.

En effet la selection se fait bien dans le Grid et dans la table mais j'avais rejouter une programation des items des combobox, par rapport a ma table, a l'ouverture du formulaire de modification, ce qui fesait que la table retourner automatiquement au dernier enregistrement de ma table.

Apres avoir deplacer cette programation la modification se fait correctement. merci
0
Rejoignez-nous