Pas de problème (pb), que du PowerBuilder (PB) ^^

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 01-04-2008 15:26:17

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

[RESOLU] SetItemStatus ne fonctionne pas

Bonjour à tous,


je reprend du code powerBuilder7 en maintenance et il y a un truc qui ne marche pas:

il y a une commande qui supprime une ligne d'une DataWindow par un DeleteRow (sans que la suppression ne soit effective sur la base de données) et le but est de récuperer  sur une autre window le nombre de ligne  supprimées par un DeletedCount puis lancer une procedure stockée sur la base de données pour  supprimer définitivement la dite ligne.
A ma connaissance pour pouvoir récupérer le nombre de ligne supprimées il faut écrire avant la commande de suppression (deleteRow)une commande qui ressemble à:

SetItemStatus(numLigne ,nomColonne, Delete!, DataModified!)
pour inscrire sur le buffer Delete le nombre de ligne supprimées.

J'ai essayé de le faire mais cela ne marche pas:
bien que sur tout de suite aprés le deleteRow la ligne disparait visuellement de la dataWindow mais l'entier que retourne par deletedCount est toujours 0

Est-ce que quelqu'un à une piste?Est-ce qu'il y a des trucs à parametrer sur la dataWindow?

Merci beaucoup

Dernière modification par Tmani (15-05-2008 14:46:26)

Hors ligne

 

#2 01-04-2008 15:29:30

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

Re: [RESOLU] SetItemStatus ne fonctionne pas

et ?
c'est quoi ce truc ?
tu veux je lise dans ma boule de cristal ?

donnes nous plus de details...


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

Hors ligne

 

#3 01-04-2008 16:01:36

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

J'ai une dataWindow sur ma fenêtre qui contient une liste de données.
On peut supprimer de cette liste les lignes que l'on veut via un bouton supprimer.
dans le code derriere ce bouton existe une commande nomdelaDatawindowDeleteRow.
Puis par un autre bouton Confirmer on supprime les lignes choisies définitivement de la base de données.
Dans le code derriere le bouton confirmer existe une commande nomdelaDatawindow.DeletedCount
si cette commande retourne un entier >0 une procedure stockée sera lancée sur la base de données pour supprimer définitivement les lignes voulues sinon pas de suppression sur la base.

Mon problème est que l'entier retourné est toujours=0 et  même si visuellement quand je supprime les lignes sur la dataWindow je les vois disparaitre mais la suppression n'est jamais réalisé sur la base (donc les lignes reviennent juste après à l'écran)

Je ne sais pas si c plus clair?

Hors ligne

 

#4 01-04-2008 16:14:04

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] SetItemStatus ne fonctionne pas

Tmani a écrit:

Bonjour à tous,
il y a une commande qui supprime une ligne d'une DataWindow par un DeleteRow (sans que la suppression ne soit effective sur la base de données) et le but est de récuperer  sur une autre window le nombre de ligne  supprimées par un DeletedCount puis lancer une procedure stockée sur la base de données pour  supprimer définitivement la dite ligne.

Mouais, je suis pas convaincu du bien fondé de tout ca, mais admettons...

Tmani a écrit:

A ma connaissance pour pouvoir récupérer le nombre de ligne supprimées il faut écrire avant la commande de suppression (deleteRow)une commande qui ressemble à:

SetItemStatus(numLigne ,nomColonne, Delete!, DataModified!)
pour inscrire sur le buffer Delete le nombre de ligne supprimées.

Sauf si tu venais juste de m'apprendre qqch, il me semble aussi que cela n'est pas nécessaire, puisque le but du deletedcount etant de voir le nombre de lignes presentes dans le deleteBuffer, et que deleterow ne fait rien de moins que deplacer une ligne du primaryBuffer vers le deleteBuffer, je ne vois absolument pas l'utilité d'un setitemstatus... A moins que ce soit lié au frame que vous utilisez dans ta boite...

Par acquis de conscience, je rappelle - a toute fins utile - que le numligne dans l'appel de setitemstatus ne correspond pas au numero de ligne du primary buffer (la ligne #5 de ta dw, une fois deletee peut devenir la ligne #1 du deleteBuffer, etc... cf. getrowfromrowid)

Tmani a écrit:

J'ai essayé de le faire mais cela ne marche pas:
bien que sur tout de suite aprés le deleteRow la ligne disparait visuellement de la dataWindow mais l'entier que retourne par deletedCount est toujours 0

Et as-tu verifié que ta ligne était bien toujours dans ton deleteBuffer a ce moment la? Ce qui expliquerait le 0 renvoye par le deletedCount...

Tu veux des pistes?

1 - Inactive ton setitemstatus
2 - Inactive ta StoredProc
3 - Verifie qu'un deleterow met bien a jour le deletedcount
4 - La, theoriquement tu saura si c'est bel et bien un

Bonne chance

Hors ligne

 

#5 01-04-2008 16:24:12

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

Merci pour ta réponse.

Justement par quel moyen vérifier pourquoi le deleterow ne met pas à jour le deletedcount car dans  l'ancienne version du code il le met bien à jour et le code est exactement le même et il n'y a effectivement pas  de setitemstatus (c une regression dans l'application que je n'arrivé pas à cerner)

Hors ligne

 

#6 01-04-2008 16:38:27

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] SetItemStatus ne fonctionne pas

Tmani a écrit:

Justement par quel moyen vérifier pourquoi le deleterow ne met pas à jour le deletedcount...

Je suis desole, mais sauf si tu es sur un build tres particulier de PB 7, le deleterow met a jour le deletedcount...

Pour voir le contenu de ton delete buffer, etant donne que tu es dans une version de PB ou le debugger n'est pas encore super pratique, voila ce que je te propose:

Tente d'afficher une des valeurs de la 1ere ligne de ton deletebuffer! Du genre:

Code: pb

string ls_temp

ls_temp = tadw.GetItemString ( 1, 1 , delete!, false ) // si ta colonne #1 est de type string, evidemment ;)
messagebox('Test DeletedCount', 'DeletedCount: ' + string( tadw.deletedcount() ) + '~r~n' + 'Value: ' + ls_temp )

Et lance ca juste apres ton deleterow...

Alors, si malgre ca ton deletedcount reste a 0 malgre :
1 - Ton deleterow est-il overridé dans ta dw control?
2 - Un update aurait-il eu lieu entre temps, ou un resetupdate? Cela vide le deletebuffer...
3 - Travailles-tu pres du triangle des Bermudes?

Non, serieux, je t'assure qu'ici on a plusieurs appli en PB7, utilisant divers builds, et on a jamais eu un deletedcount foireux... ca doit etre autre chose...

Hors ligne

 

#7 02-04-2008 15:18:02

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

Re: [RESOLU] SetItemStatus ne fonctionne pas

source sybase

Usage
An updatable DataWindow control or DataStore has several buffers. The primary buffer stores the rows currently being displayed. The delete buffer stores rows that the application has marked for deletion by calling the DeleteRow method. These rows are saved until the database is updated. You can use DeletedCount to find out if there are any rows in the delete buffer.

If a DataWindow is not updatable, rows that are deleted are discarded—they are not stored in the delete buffer. Therefore, DeletedCount returns 0 for a nonupdatable DataWindow unless a method, such as RowsCopy or RowsMove, has been used to populate the delete buffer.


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

Hors ligne

 

#8 02-04-2008 15:42:15

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

If a DataWindow is not updatable, rows that are deleted are discarded—they are not stored in the delete buffer. Therefore, DeletedCount returns 0 for a nonupdatable DataWindow unless a method, such as RowsCopy or RowsMove, has been used to populate the delete buffer.

ah purée l'exception à la mors-moi-le-noeud !
j'vais essayer de m'en souvenir de celle là.
Donc pour Tmani le plus simple est sans doute le RowsMove de saDW Primary Buffer vers saDW Delete Buffer


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#9 04-04-2008 07:51:32

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

Bonjour tout le monde,

je n'ai pas trop le temp en ce moment de m'occuper de mon bug mais je vous tiens au courant dès que je le fait.

Je sens de ttes façons que je vais arriver à résoudre le pb.

Hors ligne

 

#10 15-05-2008 14:26:53

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

Bonjour les amis,

j'ai enfin eu le temps de résoudre mon bug.

Il s'agissait de la proporieté update de ma datawindow, pour faire court voila ce que j'ai fait:

sur le dataobject associé à la datawindow, menu Rows->UpdateProperties...
j'ai coché allow updates puis j'ai sélectionné dans le champ d'à coté la table sur laquelle la datawindow envois ses données, click sur ok et cela a marché


Merci beaucoup pour votre aide:superr:

Hors ligne

 

#11 15-05-2008 14:31:59

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

Re: [RESOLU] SetItemStatus ne fonctionne pas

Bonjour Tmani,

N'oublies pas de modifier le titre de ce topic en ajoutant [RESOLU].

d'avance


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

Hors ligne

 

#12 15-05-2008 14:38:13

Tmani  
Membre Geek
Date d'inscription: 12-10-2007
Messages: 65
Pépites: 307
Banque: 0

Re: [RESOLU] SetItemStatus ne fonctionne pas

je ne sais plus comment faire pour letopic à Résolu

Hors ligne

 

#13 15-05-2008 14:41:59

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] SetItemStatus ne fonctionne pas


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22