Bonjour a tous
JE travail avec delphi7 et la bde et je voudrai savoir s'il ya un moyen d'ecrire directement sur un dbgrid que ce dernier est remplis de données tiré d'une requet select ?
Bonjour a tous
JE travail avec delphi7 et la bde et je voudrai savoir s'il ya un moyen d'ecrire directement sur un dbgrid que ce dernier est remplis de données tiré d'une requet select ?
Personnellement je ne pense pas. Essai avec un TDBCtrlGrid associé avec un TDBNavigator et tu verra ca ira tout seul.
Si tu utilises un query il faut penser que par défaut la propriété requestLive est à false, c'est à dire que la requête renvoye toujours un ensemble de résultats en lecture seule.
Donc il faut que cette propriété soit à true, puis tu peux modifier l'ensemble de résultats.
Devrait convenir, je pense
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 with dbGrid1.DataSource.DataSet do begin edit; //et par exemple fields[numero colonne].asstring := 'modif'; //ou fieldByName('nom champ').asInterger := 66; post; end;
Cordialement
merci pour ton exemple pascal mais sa m'affiche une erreur !!
cannot modify a read only data-set...
pourtant voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); begin with dbGrid1.DataSource.DataSet do begin edit; query1.RequestLive:=true; fields[1].asstring := 'modif'; post; end; end;
Déjà la propriété RequestLive doit être spécifiée avant l'ouverture (Open, Prepare, Active, ExecSQL), ensuite il faut vérifier si le curseur est vraiment modifiable (CanModify), car dans la plupart des cas le curseur est en lecture seule (multi-table, restrictions BDE, etc).
Et comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm1.Button1Click(Sender: TObject); begin with dbGrid1.DataSource.DataSet do begin if Active then Close; RequestLive := true; edit; fields[1].asstring := 'modif'; post; end; end;
Envoyé par Pascal Jankowski
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 TForm1.Button1Click(Sender: TObject); begin with dbGrid1.DataSource.DataSet do begin if Active then Close; RequestLive := true; Open; if CanModify then begin edit; fields[1].asstring := 'modif'; post; end; end; end;
Attention, le résultat d'une requète contenant un ORDER BY n'est jamais modifiable. Quel que soit la BDD.
Enfin, pas directement. Il faut utiliser le composant UpDateSQL en plus de la requète pour gérer les modifications.
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