Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Voilà, j'ai mis ceci dans l'open de la fenêtre :
This.ids_impr_plan = Create n_datastore This.ids_impr_plan.DataObject = "dw_impr_plan" This.ids_impr_plan.settransobject( SQLCA ) This.ids_impr_plan.ShareData( This.dw_saisie )
dw_impr_plan et dw_saisie ont exctement les même champs et ont le même type de colonne.
Plus tard je met à jour dw_saisie et le problème est que lorsque je fais un rowcount sur cette datastore, ça me renvoi 0 alors quelle devrait me renvoyer le nombre de ligne de dw_saisie. Pourquoi??
Dernière modification par poche (11-12-2007 14:43:35)
Hors ligne
poche a écrit:
Bonjour,
Voilà, j'ai mis ceci dans l'open de la fenêtre :Code:
This.ids_impr_plan = Create n_datastore This.ids_impr_plan.DataObject = "dw_impr_plan" This.ids_impr_plan.settransobject( SQLCA ) This.ids_impr_plan.ShareData( This.dw_saisie )dw_impr_plan et dw_saisie ont exctement les même champs et ont le même type de colonne.
Plus tard je met à jour dw_saisie et le problème est que lorsque je fais un rowcount sur cette datastore, ça me renvoi 0 alors quelle devrait me renvoyer le nombre de ligne de dw_saisie. Pourquoi??
t'es sure que c'est pas plutot
dw_saisie.ShareData(ids_impr_plan)
Hors ligne
dans un sens ou dans l'autre, rowcount = 0!!!!
Hors ligne
This.ids_impr_plan = Create n_datastore This.ids_impr_plan.DataObject = "dw_impr_plan" This.ids_impr_plan.settransobject( SQLCA )
tu as testé le code retour du sqlca lors du settransobject ?
et pourquoi ne pas essayé plutot ids_impr_plan = Create datastore ?
montres nous les 2 datawindows...
Hors ligne
Bonjour,
Je pense qu'il y a une incompréhension au niveau de la fonction ShareData.
Le bout de code que tu nous a présenté provient de l'évenement open d'une de tes fenêtres.
Je suppose qu'a ce moment là, dw_saisie ne contient aucune donnée et donc
dw_saisie.ShareData(ids_impr_plan)
n'aura quasiment aucun effet (puisque rien a copier)
Ensuite les modifications que tu apporteras à dw_saisie n'auront aucun impact direct sur ids_impr_plan (ShareData ne crée pas un lien entre ces deux objets).
Donc au final tu te retrouveras avec la datastore que tu avais initialisé dans ton evenement open, donc une datastore vide. Il faudra donc penser à faire un ShareData à chaque fois que tu voudras récupérer les données de ta datawindow
Que les grands manitous du PB me corrigent si j'ai fait une erreur sur cette description du fonctionnement de la fonction ShareData
Dernière modification par Nephtis (11-12-2007 13:47:59)
Hors ligne
Euuh....excuse-moi Nephtis, mais le principe du sharedata est de partager les buffers de données entre une datawindow maître, et une ou plusieurs autres.
Toute modification d'un buffer d'une des datawindow "liée" par le sharedata (par retrieve, insertion, suppression ou modification de donnée) est donc automatiquement
répercutée dans les autres (sauf si présence d'un sharedataoff dans le code)
Hors ligne
Nephtis a écrit:
Bonjour,
Je pense qu'il y a une incompréhension au niveau de la fonction ShareData.
Le bout de code que tu nous a présenté provient de l'évenement open d'une de tes fenêtres.
Je suppose qu'a ce moment là, dw_saisie ne contient aucune donnée et doncCode: pb
dw_saisie.ShareData(ids_impr_plan)n'aura quasiment aucun effet (puisque rien a copier)
Ensuite les modifications que tu apporteras à dw_saisie n'auront aucun impact direct sur ids_impr_plan (ShareData ne crée pas un lien entre ces deux objets).
Donc au final tu te retrouveras avec la datastore que tu avais initialisé dans ton evenement open, donc une datastore vide. Il faudra donc penser à faire un ShareData à chaque fois que tu voudras récupérer les données de ta datawindow
Que les grands manitous du PB me corrigent si j'ai fait une erreur sur cette description du fonctionnement de la fonction ShareData
ça marche lorsque je fais un sharedata avant mais je ne comprends pas pourquoi??
Je suis d'accord avec foon...
Hors ligne
foon a écrit:
Euuh....excuse-moi Nephtis, mais le principe du sharedata est de partager les buffers de données entre une datawindow maître, et une ou plusieurs autres.
Toute modification d'un buffer d'une des datawindow "liée" par le sharedata (par retrieve, insertion, suppression ou modification de donnée) est donc automatiquement
répercutée dans les autres (sauf si présence d'un sharedataoff dans le code)
Au temps pour moi j'en apprends toujours à parcourir ces forums (je pensais que c'était juste un bête copié/collé).
En revanche avec le nouveau test de poche (faire un sharedata avant, heu... avant quoi, je suppose avant le rowcount) cela fonctionne
Donc au moment du open de la fenetre le sharedata ne fonctionne pas. As tu testé le code retour de ton sharedata dans l'evenement open?
Dernière modification par Nephtis (11-12-2007 14:38:23)
Hors ligne
J'ai trouvé, voilà je faisais le sharedata dans l'open de la fenêtre alors que le dataobject n'était pas encore affecter à la datawindow de réference. Donc j'ai mis ce sharedata plus tard dans l'application et je ne le fais qu'une fois, ça fonctionne très bien.
Merci à tous.
Hors ligne