PB à toute heure et à tout moment. (à parcourir avec modération)

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 30-04-2010 10:27:25

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

un problème avec la datastore

slt à ts,
voici mon petit souci:

je besoin de parcourir une table afin de faire des sommations sur un champ montant pr une période donnée.

j'ai une datawindow qui fait un select pr tous les enregistrements de la période.

maintenant ds le code, j'ai créé une datastore comme suit:

datastore ds_fact

ds_fact = create datastore

ds_fact.dataobject ='dw_fact'
ds_fact.settransobject(sqlca)

ds_fact.retrieve()
ll_rows=ds_fact.rowcount()
messagebox("rows",string(ll_rows))

notez que la datawindow dw_fact contient les enregistrements tant disque la datastore ne récupère rien ll_rows=0.
avant de faire ma  boucle pr calculer le montant total de la période j'aimerais savoir combien de lignes j'ai ds ma datastore.

svp j'ai besoin de votre aide
merci

Hors ligne

 

#2 30-04-2010 10:50:03

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

Re: un problème avec la datastore

Bonjour,

Il y a une solution plus élégante et surtout plus rapide à ton probléme.

Il te suffit d'ajouter un computed field dans ta dawindow réalisant la somme sur la colonne désirée (sum(mycolonne)) et de récupérer la valeur par un GetItemDecimal par exemple.

Par contre, je ne vois pas d'anomalies particulières à ton code, tu devrais récupérer le nombre de lignes. L'erreur la plus classique est une faute de syntaxe dans le nom du dataobject.

Tu devrais tester les valeurs retours de SetTransObject et Retrieve pour voir si tu n'as pas un retour -1.

Hors ligne

 

#3 30-04-2010 12:16:25

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

Re: un problème avec la datastore

settransobject me renvoi bel et bien 1

aussi, je voulais par là utiliser une datastore pcq j'aurais bcp à faire le cumul du montant est un cas.
comment savoir si j'ai omis un truc ou pas?

merci buck

Hors ligne

 

#4 30-04-2010 12:52:44

abdelta  
Bienfaitrice du site
Award: bf
Lieu: La Daguenière
Date d'inscription: 21-03-2007
Messages: 393
Pépites: 14,703
Banque: 9,223,372,036,854,776,000

Re: un problème avec la datastore

le code retour du retrieve te donne directement le nombre de lignes récupérées si çà marche (pas besoin donc de faire un rowcount juste après). Sinon, çà retourne -1.

F1 a écrit:

Returns the number of rows displayed (that is, rows in the primary buffer) if it succeeds and -1 if it fails. If there is no DataWindow object assigned to the DataWindow control or DataStore, this method returns -1.
This method always returns -1 if the data source is external. Use a method such as ImportFile to populate the DataWindow.

Vérifie déjà ton code retour, et si c'est -1, tu as ici deux pistes de recherche.

Dernière modification par abdelta (30-04-2010 12:54:03)


La sirène noire
http://www.nerdtests.com/images/badge/bf1f6c78865210a9.gif

Hors ligne

 

#5 30-04-2010 12:58:17

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

Re: un problème avec la datastore

Bonjour,

Nous sommes un forum d'entraide entre utilisateur, notre temps est précieux. Peux-tu faire un minimum d'effort dans la rédaction :

aussi, je voulais par là utiliser une datastore pcq j'aurais bcp à faire le cumul du montant est un cas.

Je ne sais pas si d'autres on compris ce que tu voulais dire . On aimerait éviter en plus de faire du décryptage.

Hors ligne

 

#6 30-04-2010 13:39:15

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

Re: un problème avec la datastore

je voulais dire par là que je préfère utiliser une datastore
mis à part le cumul du montant, je vais faire d'autres opérations de calculs dans le code

abdelta, j'ai vérifié le retour de settransobject c'est 1 mais ce n'est pas le nombre d'enregistrements contenus ds le dw_fact.
que faire encore?

Hors ligne

 

#7 30-04-2010 14:01:16

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: un problème avec la datastore

omelia a écrit:

abdelta, j'ai vérifié le retour de settransobject c'est 1 mais ce n'est pas le nombre d'enregistrements contenus ds le dw_fact.
que faire encore?

Sauf erreur de ma part Abdelta parle bien du Retrieve() (chargement de la DW) et non du SetTransObject() (affectation d'un objet transaction)


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#8 30-04-2010 14:01:59

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

Re: un problème avec la datastore

Code: pb

long ll_ret 
ll_ret = ds_fact.Retrieve()


ll_ret > 0 Nombre de ligne récupérées
ll_ret < 0 Erreur

Quelle est ta valeur de ll_ret ?

Hors ligne

 

#9 30-04-2010 15:31:29

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,776,000

Re: un problème avec la datastore

Bonjour Omelia,

Est-ce que ta variable de retour n'est pas de type Integer?
Si c'est le cas, peut être que ton nombre de ligne est supérieur à 32767. Dans ce cas, passe ta variable en Long

Hors ligne

 

#10 30-04-2010 16:12:46

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: un problème avec la datastore

Pour des raisons de lisibilité, merci également de


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