# Environnements de dveloppement > Autres EDI > Powerbuilder >  [PowerBuilder] Faire un COMMIT  la fin du travail

## loki9481

Bonjour   ::D:  

Je suis nouveau en PB et je me retrouve face  un problme.

J'ai 2 datawindows :
1) une grid datawindow en lecture seule (A)
2) une freeform datawindow pouvant tre mise  jour (B)

Quand je clique sur une ligne de A, des informations pouvant tre mises  jour concernant la ligne slectionne sont affiche dans B.

Je voudrais pouvoir faire un COMMIT de mes modifications uniquement quand je clique sur le boutton Ok de ma fentre.
Par exemple :
a) Je clique sur la ligne 1 de A
b) Je met  jour des informations dans B pour la ligne 1
c) Je clique sur la ligne 3 de A
d) Je met  jour des informations dans B pour la ligne 3
e) Je clique sur la ligne 4 de A
f) Je met  jour des informations dans B pour la ligne 4
g) Je clique sur le boutton Ok pour faire mon COMMIT. Ce n'est qu' ce moment que je veux que mes informations soient stockes dans ma base de donnes. Le bouton Annuler quant  lui fera un ROLLBACK.

J'ai essay de plusieurs manires mais pour l'instant je n'arrive qu' faire des COMMIT  chaque clique que je fais sur une ligne de A, alors que je veux stocker mes changements quelque part dans un buffer et faire mon COMMIT uniquement  la fin...

Quelqu'un peut me dire comment faire svp   ::?: : 

Merci d'avance,

----------


## civ

C'est un cas d'cole de master-detail.

la A doit grer les accs  la base de donne (retrieve, update)
Leur structure de donne (columns spcifications) doivent tre identiques

utilise la mthode de partage de donnes


```
dw_A.ShareData &#40; dw_B &#41;
```

les modifications faites faites dans l'une seront automatiquement prise en compte dans l'autre (les buffers sont partags).

tu ne dois faire ton update qu'une seule fois lorsque tu clicke sur ton bouton de sauvegarde (sinon tu aura des problmes de verrous).


```
dw_A.update&#40;&#41;
```

tu COMMIT aprs tes tests d'erreur.

Ensuite tu n'as plus qu'a grer ton vnement rowfocuschanged dans le control de la dw_A pour slectionner la bonne ligne dans la dw_B. (scrollToRow(...) ou setfilter(...) & filter())

bonne chance
___
CiV

----------

