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-10-2006 08:11:19

doktorquick  
Membre Geek
Lieu: douchy les mines
Date d'inscription: 20-10-2006
Messages: 24
Pépites: 92
Banque: 0

[RESOLU] Valeur du résultat d'une requête

Salut à tous, voici mon petit problème :
Je voudrais tester la valeur de retour d'une requête, je m'explique :
je fais un agenda, dedans je gére les RDV. J'ai donc une feuille avec une zone de saisie de la date, et une DW qui affiche les rdv pour la date saisie. Ce que j'aimerais c'est qu'au démarrage de l'appli, une requête vérifie si j'ai des RDV aujourd'hui. Pour cela j'ai une requette avec un controle sur la date du RDV, et j'aimerais que si j'ai un ou plusieurs RDV un message me le dise. Si je fais un select * into rdv_jour from rdv, je pense qu'il ne me renverra qu'une seule valeur, or si j'ai 2 ou + RDV aujourd'hui, je ne les verrais pas. Dois je faire une requête supplémentaire afin d'actualiser la DW ou y a t il possibilité de tout récupérer en une seule fois ?

Merci

Hors ligne

 

#2 30-10-2006 13:31:19

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] Valeur du résultat d'une requête

Bonjour,
Evidement, les "select into" servent uniquement à récupérer une ligne et une seule.

Le plus simple est de ne pas utiliser de SQL en ligne
jamais.

Puisque tu as déjà un objet datawindow, utilie le dans un datastore pour récupérer la liste des RDV d'aujourd'hui.


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

Hors ligne

 

#3 30-10-2006 13:51:37

doktorquick  
Membre Geek
Lieu: douchy les mines
Date d'inscription: 20-10-2006
Messages: 24
Pépites: 92
Banque: 0

Re: [RESOLU] Valeur du résultat d'une requête

Salut à toi,
Je te remercie de ta réponse, en fait j'ai fait autrement car je suis dans une feuille MDI et dans cette feuille je n'avais pas de DW. Une petite question, pourquoi dis tu qu'il ne faut jamais utiliser de SQL en ligne ?

Hors ligne

 

#4 30-10-2006 14:01:49

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] Valeur du résultat d'une requête

Une datastore, pas une dw.
La datastore est un objet NON VISUEL.
Comme propriété, tu lui associe un objet DW (à ne pas confondre avec un contrôle DW) qui contient la requete SQL.

Et quand je dis jamais de sql en ligne c'est :
1) pour t'apprendre à utiliser les datastore
2) tout ton SQL est au même endroit (dans des objets datawindow)
3) la datastore est plus simple à manipuler que d'avoir à fetcher un curseur comme tu as dû le faire (enfin je suppose)

Update
Sur ce site, va dans "conseils pratiques", puis "L'objet datastore"
http://pbadonf.fr/forum/viewtopic.php?id=53

Dernière modification par shahin (30-10-2006 14:05:30)


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

Hors ligne

 

#5 30-10-2006 14:11:50

doktorquick  
Membre Geek
Lieu: douchy les mines
Date d'inscription: 20-10-2006
Messages: 24
Pépites: 92
Banque: 0

Re: [RESOLU] Valeur du résultat d'une requête

OK je te remercie beaucoup, même si je nage un tit peut mais c'est comme ça qu'on apprend. Merci pour tes réponses vieux, et bonne continuation !

Hors ligne

 

#6 30-10-2006 16:15:57

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Valeur du résultat d'une requête

shahin a écrit:

Une datastore, pas une dw.
La datastore est un objet NON VISUEL.
Comme propriété, tu lui associe un objet DW (à ne pas confondre avec un contrôle DW) qui contient la requete SQL.

Et quand je dis jamais de sql en ligne c'est :
1) pour t'apprendre à utiliser les datastore
2) tout ton SQL est au même endroit (dans des objets datawindow)
3) la datastore est plus simple à manipuler que d'avoir à fetcher un curseur comme tu as dû le faire (enfin je suppose)

Update
Sur ce site, va dans "conseils pratiques", puis "L'objet datastore"
http://pbadonf.fr/forum/viewtopic.php?id=53

Bonjour,

Reste à savoir si effectivement passer par un datastore est plus rapide que passer par un
curseur ...

Si tu as des benchs à ce sujet, n'hésites pas à les poster.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#7 30-10-2006 16:54:03

mreminiac  
Membre Geek
Lieu: Marseille
Date d'inscription: 29-05-2006
Messages: 56
Pépites: 321
Banque: 0

Re: [RESOLU] Valeur du résultat d'une requête

Bonjour à tous

Pour Infos sous ORACLE

que ca soit une datastore ou une datawindows il est fortement conseillé dans ton les cas de faire un PLAN_TABLE . A mon niveau c'est une règle.

Par contre au niveau performance je ne vois pas de différence entre les deux. Mise à part de bien faire un destroy de la datastore après une utilisation de celle ci.

Bonne Journée
Cordialement


Migration PB11
Oracle 9I
XP Pro

Hors ligne

 

#8 31-10-2006 09:26:26

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] Valeur du résultat d'une requête

Doctor Z, désolé je n'ai pas de benchs et aucune idée de ce qui est mieux en terme de performance.
Ma problématique était plus axée facilité de maintenance du code / lisibilité. Dans le cas de doktorquick dont l'appli récupère une poignée de lignes, il n'y aura aucune différence de perf.

mreminiac, oui moi aussi je détruis systématiquement les objets que je créée, mais puisque PB possède un garbage collector, la théorie dit que ce n'est pas nécessaire.

A titre de comparaison voici un squelette de code avec du sqL en ligne. Tres mauvais code (pas de gestion des erreurs)

Code: pb

DECLARE Emp_cur CURSOR FOR
SELECT employee.emp_number, employee.emp_name
FROM employee
WHERE employee.emp_salary > :Sal_var ;

OPEN Emp_curs ;

do while sqlca.sqlcode <> 100
  FETCH Emp_cur INTO :emp_num, :emp_name ;
loop

CLOSE Emp_cursor ;

Pour écrire du code correct il faut tester sqlca.sqlcode apres chaque ordre SQL :
- declare
- open
- fetch
- close

Dernière modification par shahin (31-10-2006 09:37:40)


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22