bonjour tout le monde,
je veux sauvegarder un enregistrer en sortant d'une cellule du DBGrid.
comment faire svp?
bonjour tout le monde,
je veux sauvegarder un enregistrer en sortant d'une cellule du DBGrid.
comment faire svp?
j'ai un DBGrid avec plusieurs cellules(ç comme en excel).
je veux que quand je saisis enregistrements on les sauvegarde automatiquement(post).
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:
pour modifier un enregistrement déjas existe:
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;
remarques::
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;
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
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?
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:
cordialement
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;
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
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.
Salut,
Si vous voulez enregistrer dans votre table derriere la saisie de chaque champ, utilisé l'evenement OnColExit du DBGrid, avec le code suivant
, 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.
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;
bon courage.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager