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 24-04-2007 08:27:53

garion  
Membre
Date d'inscription: 23-04-2007
Messages: 5
Pépites: 22
Banque: 0

tableau en retrieval argument ?

Bonjour,

Je suis sur un projet PB et je dois creer un datastore qui sera utilisé pour generer un fichier plat servant a la fusion word.

  Ce datastore doit aller chercher des element dans une table d'info sur des personnes qui ne possede pas de primary key, le seul moyen  de distinguer chaque ligne c'est en fonction de son identifiant ET son année d'inscription.

  Vu qu'il y a de nombreuses personnes je créé des groupe de meme  taille, et je fait un fusion par groupe.

  J'ai donc dans mon datastore deux retrivals arguments que sont l'identifiant et l'année, seulement ils marchent par couple en fonction du N° de groupe.

  Je voulais donc savoir quelle requete donner a mon Datastore pour avoir l'ensemble des elements voulus.

  On m'a dit de passer a mon argment un tableau a 2 dimensions est ce possible ?

En gros je voulais faire un truc dans ce style mais c'est completement faux.

code du datastore.

Code: mssql

 


SELECT     NOM , PRENOM, ADRESSE, TEL, NUM_CARTE, COMMUNE, DATE_VALIDITE_CARTE
  FROM      ALLOC,
                ...
                ...

  WHERE    ...
                ...
                (ALLOC.IDF_ALLOC,ALLOC.ANNEE_DOSSIER) = SELECT      LOT.IDF_ALLOC, LOT.ANNEE_DOSSIER
                                                                                         FROM      LOT
                                                                                       WHERE      IDF_LOT = :al_idf_lot

 


donc je cherche une facon de faire correcte si possible.


Merci d'avance pour vos reponses.



PS : Désolé si ca vous parait trivial mais je ne fait du PB que depuis 2 semaines.

Hors ligne

 

#2 24-04-2007 08:42:32

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: tableau en retrieval argument ?

j'aurais fait ca pour la requete
mais apres, rien ne prouve qu'elle est bonne :

Code: mssql

SELECT     NOM , PRENOM, ADRESSE, TEL, NUM_CARTE, COMMUNE, DATE_VALIDITE_CARTE
  FROM      ALLOC,
                ...
                ...

  WHERE    ...
                ...
                (ALLOC.IDF_ALLOC,ALLOC.ANNEE_DOSSIER) in ( SELECT      LOT.ANNEE_DOSSIER
                                                                                         FROM      LOT
                                                                                       WHERE      IDF_LOT = :al_idf_lot )

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

Hors ligne

 

#3 24-04-2007 08:42:53

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: tableau en retrieval argument ?

garion a écrit:

...qui ne possede pas de primary key...

-> ERREUR grave.  Toute table doit avoir une clef primaire. En l'occurence, il faudrait définir la clef primaire de la table Alloc comme (IDF_ALLOC, ANNEE_DOSSIER)

Pour répondre à ta question, tu dois avoir :

Code: mssql

SELECT...
FROM...
WHERE ALLOC.IDF_ALLOC = ...
AND ALLOC.ANNEE_DOSSIER =...

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

Hors ligne

 

#4 24-04-2007 08:44:52

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: tableau en retrieval argument ?

un jointure , c'est mieux...

et, faute de primary key, tu crées des index


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

Hors ligne

 

#5 24-04-2007 08:49:27

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

Re: tableau en retrieval argument ?

Bonjour,

Peut-être ai-je mal compris ce que tu veux, mais il me semble qu'utiliser un sous-select
pourrait t'être utile:

Code: mssql

SELECT     NOM , 
                PRENOM, 
                ADRESSE, 
                TEL, 
                NUM_CARTE, 
                COMMUNE,  
                DATE_VALIDITE_CARTE
  FROM      ALLOC,
                ( SELECT   LOT.IDF_ALLOC IDF_ALLOC, 
                                LOT.ANNEE_DOSSIER ANNEE_DOSSIER
                  FROM      LOT
                  WHERE    IDF_LOT = :al_idf_lot ) TMP,
                ...

  WHERE    ...
                ...
                ( ALLOC.IDF_ALLOC = TMP.IDF_ALLOC
                AND ALLOC.ANNEE_DOSSIER = TMP.ANNEE_DOSSIER )
 


PS: Merci d'utiliser les balises code = mssql pour vos exemples de scripts SQL.


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

Hors ligne

 

#6 24-04-2007 08:49:43

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: tableau en retrieval argument ?

Une petite remarque pour Garion en particulier et pour toutes les demandes SQL en général : il est extrémement difficile, voire impossible, de construire une requete SQL sans avoir le modèle de données sous les yeux. (construit et maintenu sous Power AMC)


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

Hors ligne

 

#7 24-04-2007 09:05:55

garion  
Membre
Date d'inscription: 23-04-2007
Messages: 5
Pépites: 22
Banque: 0

Re: tableau en retrieval argument ?

@ pick ouic :   je pense que ca devrait mieux marcher avec le in. 

@shanin : Je sais tres bien qu'il faut obligatoirement une primary key sur une table mais je suis sur la maintenance d'un projet et je ne peut donc pas toucher aux tables de celui ci. Je suis obligé de m'adapté tant bien que mal. 

en tout cas je vous félicite pour votre rapidité de reponse et la qualité de celles ci.

Je vous tiens au courant pour voir si ca marche avec la technique de pick ouic.


EDIT : pour la solution de pick ouic il me semble avoir vu sur un site quelle ne pouvait retourner qu'une seule ligne, est ce vrai ou pure fabulations?

Dernière modification par garion (24-04-2007 09:10:10)

Hors ligne

 

#8 24-04-2007 09:14:21

garion  
Membre
Date d'inscription: 23-04-2007
Messages: 5
Pépites: 22
Banque: 0

Re: tableau en retrieval argument ?

merci foon pour cette solution mais il me semble que ca va me renvoyer toutes les possibilité entres les couples année et  idf_alloc.

Pour le modele de donnée je l'ai sous power designer mais il ne m'aide pas beaucoup pour trouver les requetes. Les tables ne sont pas tres bien faite ( pas de PK)

Hors ligne

 

#9 24-04-2007 09:22:41

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

Re: tableau en retrieval argument ?

Au niveau de ton modèle de données, y-a-t'il des indexes uniques sur les tables et, si oui,
lesquels?


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

Hors ligne

 

#10 24-04-2007 09:24:10

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: tableau en retrieval argument ?

garion a écrit:

... mais je suis sur la maintenance d'un projet et je ne peut donc pas toucher aux tables de celui ci....

ça m'est arivé aussi : bon courage.
Heureusement qu'ils avaient un modèle


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

Hors ligne

 

#11 24-04-2007 09:26:59

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: tableau en retrieval argument ?

tout depend du select .
si ton select ramenes plusieurs lignes... alors, le in ( ) fonctionnne.

Code: mssql

select      lot.annee_dossier
from      lot
where      idf_lot = :al_idf_lot


A+++


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

Hors ligne

 

#12 24-04-2007 09:40:26

garion  
Membre
Date d'inscription: 23-04-2007
Messages: 5
Pépites: 22
Banque: 0

Re: tableau en retrieval argument ?

Sur le modele de donnée il n'y a rien de renseigné, apparement d'apres ma maitresse de stage le modele a été fait en reverse engineering a partir de la base existante.

A partir de plsqldev j'ai pu trouver quelques trucs :

Pour ma table alloc j'ai un index ALLOC_PK qui a comme colonne ANNEE et IDF_ALLOC et pour ma table LOT j'ai un index PK_LOT pour les meme colonnes.
Par contre je ne suis pas un pro en SQL donc je risque d'avoir un peu de mal a suivre pour les index mais j'apprend vite.

Hors ligne

 

#13 24-04-2007 09:47:21

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

Re: tableau en retrieval argument ?

OK,
Avec PL/SQL Developer, tu peux regarder la description de tes indexes par clique droit dessus => "View".

Vu le nom des indexes, je pense que ce sont bien des clés primaires (PK = Primary Key),
mais pour en être sûr, vérifies que les indexes sont de type "Unique" (Colonne "Type" dans la description des indexes dans PL/SQL Developer)

Est-ce bien le cas?


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

Hors ligne

 

#14 24-04-2007 10:02:06

garion  
Membre
Date d'inscription: 23-04-2007
Messages: 5
Pépites: 22
Banque: 0

Re: tableau en retrieval argument ?

ouai c'est bon ils sont bien uniques.

Par contre je ne reviens pas avant 2 heure, donc ne te presse pas.

a tout' et merci pour votre aide.

Hors ligne

 

#15 24-04-2007 15:30:55

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

Re: tableau en retrieval argument ?



HS
De retour après une (longue) coupure réseau ()...
/Fin HS



Alors Garion, maintenant que tu as retouvé tes primary keys, ta requête avec jointure marche-t-elle?


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