Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

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 29-09-2008 13:00:18

jcc  
Membre completement Geek
Lieu: Mouscron
Date d'inscription: 08-01-2008
Messages: 142
Pépites: 13,733
Banque: 409,387,083,524

[RESOLU] Petit problème avec une dddw

Bonjour,
Je réalise pour l'instant un programme de location de documentations pour pour bibliothèque.
A partir d'une window qui gère la documentation, je veux faire un drag and drop vers une autre window ( la window de location)
La window  pour la location est en master-detail.
Lorsque que j'ai choisi le document que le client veut louer, je drag and drop dans la dw_detail de la window location.
La dw source contient une dddw (Code doc_id, display value doc_titre)
Dans le dragDrop event de la dw_detail de destination, je fais un insertrow. Je charge les valeurs et la dddw de destination identique à celle du source affiche bien le titre du document.
Jusque là tout va bien.
Lorsque je choisis un autre document, et que je fait le drag and drop, juste après l'insertrow, la display value de l'enregistrement précédent disparait et c'est le code qui est visualisé. Le code est bon mais la display value a disparu. Par contre sur le 2e enregistrement c'est bon. Et ainsi de suite pour les autres enregistrements.

Exemple

Source : code 238 - display value Maladie cardivasculaire        ===> destination  Maladie cardiovasculaire  OK

2e selection

Source : code 127 - Display value Allergie ===> 1er enregistrement destination 238        pas OK plus de display value
                                                             ===>  2e enregistrement  destination Allergie  OK
Etc.....

Je ne fais pas de save entre chaque détail car je dois pouvoir, après avoir terminé ma sélection, encoder les quantités.
Li_row = insertrow(0) le renvoie bien à chaque fois le numéro de record.
Le scrolltorow(li_row) aussi.
setitem(li_row',"doc_id",source) fonctionne et visualise la display value.
Toutes les enregistrements précédents sont affectés par ma dernière sélection.
J'ai mis un messagebox juste après l'insertrow. le li_row renvoie bien le bon résultat. Mais dès l'insert exécuté les display values des records précédent disparaissent.

Pouvez-vous m'aider. Je ne vois pas ce qui cloche.

Merci

Dernière modification par jcc (30-09-2008 09:39:43)

Hors ligne

 

#2 29-09-2008 15:19:31

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: [RESOLU] Petit problème avec une dddw

Bonjour,

De souvenir, j'ai déjà eu ce genre de comportement (avec une version d'EBF de la 9.0.3) . Il me semble qu'en entourant le code avec un this.SetRedraw(FALSE) et this.SetRedraw(TRUE) dans l'événement de dragdrop pour forcer le rafraichissement avait résolu le problème.

De toute façon, il est conseillé de le faire systématiquement. Si tu as de nombreuses lignes à traiter en drag en drop, ça va accélérer très nettement le temps de traitement (pas de refresh graphique entre chaque insertion). 

Quelle version de PB ? Database ?

Hors ligne

 

#3 29-09-2008 15:44:45

jcc  
Membre completement Geek
Lieu: Mouscron
Date d'inscription: 08-01-2008
Messages: 142
Pépites: 13,733
Banque: 409,387,083,524

Re: [RESOLU] Petit problème avec une dddw

PB enterprise 11.1 Build 8123 et SqlAnywhere 10

J'ai mis un setredraw(False) au début du script dans le dragdrop event et un setredraw(true) à la fin
Ca ne change rien.
A chaque insertrow la display value de la ligne précédente disparait et j'ai le code à la place. Sur la ligne courante c'est toujours OK

Hors ligne

 

#4 29-09-2008 16:13:27

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 30-05-2006
Messages: 4685
Pépites: 1,025
Banque: 2,147,483,647
Site web

Re: [RESOLU] Petit problème avec une dddw

salut,
comment est alimentée ta dddw ?
tu le fais via un retrieve() simple et sans expression ?

au pire des cas, apres chaque insertrow(), lances le retrieve de ta dddw.

A+


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 29-09-2008 16:30:18

jcc  
Membre completement Geek
Lieu: Mouscron
Date d'inscription: 08-01-2008
Messages: 142
Pépites: 13,733
Banque: 409,387,083,524

Re: [RESOLU] Petit problème avec une dddw

Ma dddw a un retrievial argument qui est le doc_id.

Pour ne pas avoir la window qui me demande le retrievial argument, je fais un retrieve de la child_doc avant le insertrow avec le le code_id qui vient de la dw source.
c'est toujours bon sur le record courant mais jamais sur les précédents.
Les valeurs doc_id sont exactes mais j'aimerais voir les display values car les doc_id ne veulent rien dire pour les utilisateurs.
Même si je supprime le code après la commande insertrow, la display value de la ligne précédente et remplacée par le doc_id correspondant.

Dernière modification par jcc (29-09-2008 16:32:39)

Hors ligne

 

#6 29-09-2008 16:46:39

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: [RESOLU] Petit problème avec une dddw

Bonjour,

Une dddw doit contenir l'ensemble des translations possibles code <-> display value pour l'ensemble des lignes de la datawindow. Tu l'initialises une seule fois et non pas à chaque insertrow.

J'ai l'impression que tu récupères uniquement la translation code <-> display value pour la ligne courante que tu es en train d'insérer avec l'argument que tu donnes à la dddw.

Dans ce cas, c'est donc normal que tu perdes la correspondance pour les lignes précédentes puisqu'elle n'existe plus.

ex : contenu de la dddw après retrieve :

code 238 - display value Maladie cardivasculaire
code 127 - Display value Allergie

Hors ligne

 

#7 29-09-2008 16:49:46

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 30-05-2006
Messages: 4685
Pépites: 1,025
Banque: 2,147,483,647
Site web

Re: [RESOLU] Petit problème avec une dddw

en conclusion,
au lieu de passer via une dddw, tu utilises 2 colonnes.
1 colonne ID et 1 colonne libellé.
tu ajoutes un petit bouton à coté de la colonne ID, histoire d'avoir une fenetre LISTE des libelles - ID.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#8 29-09-2008 16:56:00

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Petit problème avec une dddw

Bonjour,

Pour être sur d'avoir bien compris :
Tu as une Windows 1 dans laquelle se trouve une DW source qui contient une dddw (Code doc_id, display value doc_titre)
Lorsque l'utilisateur choisi un doc_titre, tu va l'insérer dans ta Windows 2 ou se trouve une DW detail qui contient une dddw identique (Code doc_id, display value doc_titre).

Fait tu un retrieve() sur ta DW detail?
Fait tu un accepttext(), bien que je ne pense pas que ça fasse grand chose?
As tu coché l'autoretrieve dans les propriété de ta dddw?

Comme dit Pick Ouic, tu règlerais surement ton problème en faisant une mise à jour puis un  retrieve() de ta dddw dans ta DW_detail

A+

Hors ligne

 

#9 29-09-2008 16:59:50

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Petit problème avec une dddw

Oups,

je vois que plusieurs messages ont été écris pendant que j'écrivais.

Le message précédent risque de ne rien vouloir dire.

Désolé

Hors ligne

 

#10 29-09-2008 17:01:39

jcc  
Membre completement Geek
Lieu: Mouscron
Date d'inscription: 08-01-2008
Messages: 142
Pépites: 13,733
Banque: 409,387,083,524

Re: [RESOLU] Petit problème avec une dddw

Tu viens de me mettre sur le bon chemin.
En fait, j'ai utilisé un dddw que j'utlisais dans une autre dw. Et Cette dddw avait un retrievial argument.
Or, dans ce cas, je n'ai pas besoin de retrievial argument.
J'ai recrée une nouvelle dddw san retrievial argument et maintenant ça semble fonctionner.

Merci de m'avoir éclairé.

A+

Hors ligne

 

#11 29-09-2008 17:05:16

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Petit problème avec une dddw

Bonsoir,

N'oublies pas le [RESOLU]


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22