IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

4D Discussion :

Problème de résultat sur une selection sur 3 tables


Sujet :

4D

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut Problème de résultat sur une selection sur 3 tables
    Bonjour à tous, voila je débute en 4D et j'aimerais 3 informations, se trouvant dans 3 tables différentes dont 2 des 3 sont reliés à la troisième

    agence ===> Commandes <=== details commandes
    1 n n 1
    codes agences n°commandes


    Pour cela j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    CHERCHER([Commandes];[Commandes]Date enlèvement>=$date1;*)**`on recherche les commandes dont la date d'enlèvement est supérieur au premier du mois calculé
    CHERCHER([Commandes];*&*;[Commandes]Date enlèvement<=$date2)**`et inférieur au 31 du mois calculé
     
    SELECTION RETOUR([Détails Commande]N° de commande)**`on sélectionne les numéro de commande de détails commande en fonction de la sélection faites précédemment sur la table commande
    SELECTION VERS TABLEAU([Détails Commande]Prestation;$prest;[Commandes]Agence enlèvement;$agenceenlev)
     
     
    CHERCHER([Commandes];[Commandes]Date enlèvement>=$date1;*)**`on recherche les commandes dont la date d'enlèvement est supérieur au premier du mois calculé
    CHERCHER([Commandes];*&*;[Commandes]Date enlèvement<=$date2)**`et inférieur au 31 du mois calculé
    **``JOINTURE([Commandes];[Agences])**`on fait une jointure avec la table agence pour savoir la region de l'agence
     
    ENSEMBLE VIDE([Agences];"regionenlev")
    Tant que (Non(Fin de selection([Commandes])))
    	CHARGER SUR LIEN([Commandes]Agence enlèvement)
    	ADJOINDRE ELEMENT([Agences];"regionenlev")
    	ENREGISTREMENT SUIVANT([Commandes])
    Fin tant que 
     
    UTILISER ENSEMBLE("regionenlev")
    SELECTION VERS TABLEAU([Agences]CodeDirectionRégion;$regionenlev)
    EFFACER ENSEMBLE("regionenlev")

    Mon problème est que mes 3 tableaux n'obtiennent pas le meme nombre de ligne, en effet pour $prest et $agenceenlev j'obtiens 6130 élements mais pour $regionenlev j'obtiens que 25 élements.
    alors que je devrais en obtenir 6130 puisque tout est renseigné dans les tables, et comme vous pouvez le constater, j'obtiens le meme resultat avec le tant que qu'avec la jointure.

    Alors il y aurait t'il quelque chose que j'ai oublié ou mal fait ??? ou sinon pourquoi est ce que j'obtiens çà ??

    d'avance merci

    @++
    dubidon

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 80
    Points : 84
    Points
    84
    Par défaut
    Salut,

    peux-tu essayer ceci. J'ai modifié un peu ta programme et corriger la syntaxe de Charger sur Lien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    CHERCHER([Commandes];[Commandes]Date enlèvement>=$date1;*)**`on recherche les commandes dont la date d'enlèvement est supérieur au premier du mois calculé
    CHERCHER([Commandes];*&*;[Commandes]Date enlèvement<=$date2)**`et inférieur au 31 du mois calculé
     
    NOMMER ENSEMBLE ([Détails Commande];"MaRecherche")
     
     
    SELECTION RETOUR([Détails Commande]N° de commande)**`on sélectionne les numéro de commande de détails commande en fonction de la sélection faites précédemment sur la table commande
     
    SELECTION VERS TABLEAU([Détails Commande]Prestation;$prest;[Commandes]Agence enlèvement;$agenceenlev)
     
    ENSEMBLE VIDE([Agences];"regionenlev")
    UTILISER ENSEMBLE ("MaRecherche")
    Début selection ( [Commandes])
     
    Tant que (Non(Fin de selection([Commandes])))
    	CHARGER SUR LIEN([Commandes]Agence enlèvement;[Agences]CodeDirectionRégion) 
    	ADJOINDRE ELEMENT([Agences];"regionenlev")
    	ENREGISTREMENT SUIVANT([Commandes])
    Fin tant que 
     
    UTILISER ENSEMBLE("regionenlev")
    SELECTION VERS TABLEAU([Agences]CodeDirectionRégion;$regionenlev)
    EFFACER ENSEMBLE("regionenlev")
    EFFACER ENSEMBLE("MaRecherche")

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    merci beaucoup sieste68, mais j'ai réussi à régler mon probleme en faisant autrement. Je vais d'abord chercher toutes mes agences avec leur code region, et ensuite je recuperer mes commandes avec mon code agence et je rempli un tableau en correspondance avec les agences et au final, pour le total de ma méthode, cela me fait beaucoup moins de lignes de codes et le tempsd 'éxécution s'en trouve diminué docn tout est bénéfique.

    Merci beaucoup pour l'aide et la rapidité de celle ci

    @++
    dubidon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les résultats d'un Select sur une table
    Par naznaz dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/11/2007, 12h58
  2. Récupération du résultat d'une requête sur une table liée
    Par champijulie dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2007, 13h26
  3. Recupérer le résultat d'une requête sur une table Firebird
    Par defluc dans le forum Bases de données
    Réponses: 7
    Dernier message: 20/04/2007, 19h30
  4. Réponses: 5
    Dernier message: 26/02/2007, 02h50
  5. Problème de lenteur due à une selection sur une date [CR 8.5]
    Par Fredifredo dans le forum SAP Crystal Reports
    Réponses: 15
    Dernier message: 13/02/2007, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo