Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 04-08-2010 09:46:29

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

[RESOLU] dw.GetNextModified (0, Primary!)

Bonjour,

Dans l'evenement fermer d'une fenetre je fait appel à dw.GetNextModified (0, Primary!)  et qui me retourne 1 même que j'ai pas modifié dans ma datawindow d'où l'affichage d'un message de confirmation d'enregistrement de la modification.

Est ce qu'il s'agit d'un bug PowerBuilder ou quoi ?

Merci d'avance

Dernière modification par mattdamon (04-08-2010 17:11:23)

Hors ligne

 

#2 04-08-2010 10:20:32

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] dw.GetNextModified (0, Primary!)

tu dois avoir du code qui modifie tes données


never let people work on more than one thing at once.

Hors ligne

 

#3 04-08-2010 13:40:29

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Bonjour,

    Effectivement tu dois avoir un setitem quelque part.

   Par contre si tu utilise cette fonction pour vérifier si une maj est nécessaire celà n'est pas la bonne méthode. Tu devrais plutot faire la chose suivante :
           If dw_1.ModifiedCount() + dw_1.deletedCount() > 0 then
                           .............
                           .............
           End if
      ( La fonction getnextmodified même si tu la demande sur le buffer delete ne prend en compte que les lignes ayant été modifiées puis supprimées par exemple ) 

Cdt
Yanis

Hors ligne

 

#4 04-08-2010 13:58:41

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Yanis a écrit:

Bonjour,

    Effectivement tu dois avoir un setitem quelque part.

   Par contre si tu utilise cette fonction pour vérifier si une maj est nécessaire celà n'est pas la bonne méthode. Tu devrais plutot faire la chose suivante :
           If dw_1.ModifiedCount() + dw_1.deletedCount() > 0 then
                           .............
                           .............
           End if
      ( La fonction getnextmodified même si tu la demande sur le buffer delete ne prend en compte que les lignes ayant été modifiées puis supprimées par exemple ) 

Cdt
Yanis

D'accord, je vais chercher dans le code s'il y une modification systématique des données

Hors ligne

 

#5 04-08-2010 14:36:17

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Le code que je t'indique ne change rien. Si le la fonction getNextModified te renvoi un numéro de ligne > 0 c'est qu'une modification est intervenue ( et il en sera de même avec mon code ) soit au clavier par l'utilisateur soit dans le code ( ex à l'ouverture de la fenêtre ) par l'utilisation de la fonction SETITEM par exemple.



Le code que je t'indique n'est qu'un complément et il est préférable à l'utilisation de getnextmodified

Cdt
Yanis

Hors ligne

 

#6 04-08-2010 14:51:50

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Yanis a écrit:

Le code que je t'indique ne change rien. Si le la fonction getNextModified te renvoi un numéro de ligne > 0 c'est qu'une modification est intervenue ( et il en sera de même avec mon code ) soit au clavier par l'utilisateur soit dans le code ( ex à l'ouverture de la fenêtre ) par l'utilisation de la fonction SETITEM par exemple.



Le code que je t'indique n'est qu'un complément et il est préférable à l'utilisation de getnextmodified

Cdt
Yanis

Justement, je crois que le problème n'est pas dù à l'utilisation de getbextmodified ou ton code mais à la modification systématique des données .

A titre indicatif, le message informatif se déclenche si :

(dw.DeletedCount () + dw.GetNextModified (0, Primary!) + dw.GetNextModified (0, Filter!)) > 0

Je suis en train de voir dans mon code et surtout dans les ancestres des fenetres s'il y a des setitem ou modify...

Hors ligne

 

#7 04-08-2010 14:59:41

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Y a t'il un moyen en PWB pour savoir quel est la colonne dans une datawindow a été changée au cours de traitement ?

Hors ligne

 

#8 04-08-2010 15:24:06

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] dw.GetNextModified (0, Primary!)

une fois que tu sais quelle ligne a été modifie, tu peux boucler sur les colonnes avec GetItemStatus

ps : nombre de colonnes avec .Describe("DataWindow.Column.Count")


never let people work on more than one thing at once.

Hors ligne

 

#9 04-08-2010 15:27:19

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] dw.GetNextModified (0, Primary!)

utilise tu le framework de sybase ( Powerbuilder Foundation Class)

Car si c'est le cas il existe un service te permettant de visualiser dans une fenêtre spécifique au framework le status des lignes , des colonnes etc... de n'importe quelle datawindow

Hors ligne

 

#10 04-08-2010 15:57:44

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Yanis a écrit:

utilise tu le framework de sybase ( Powerbuilder Foundation Class)

Car si c'est le cas il existe un service te permettant de visualiser dans une fenêtre spécifique au framework le status des lignes , des colonnes etc... de n'importe quelle datawindow

Non on utilise pas le PFC.

shahin a écrit:

une fois que tu sais quelle ligne a été modifie, tu peux boucler sur les colonnes avec GetItemStatus

ps : nombre de colonnes avec .Describe("DataWindow.Column.Count")

Effectivement, je dois boucler sur toutes les colonnes pour savoir la quelle a été modifiée (que ce soit datamodified ou newmodified).

A+

Hors ligne

 

#11 04-08-2010 16:34:24

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: [RESOLU] dw.GetNextModified (0, Primary!)

Merci à tous pour ces informations.

En fait, j'ai trouvé dans mon code que le système fait un setitem dans une colonne et pércissement dans l'event avant_saisie_ligne, donc pour corriger ce problème j'ai fait comme suit :

Code: pb

This.SetItemStatus(num_ligne, "colonne", Primary!, NotModified!)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22