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

WinDev Discussion :

Problème liaison entre deux tables [WD11]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut Problème liaison entre deux tables
    Bonjour à tous,

    J’espère que le week-end à été bon !

    Voila j'ai un "petit" problème mais qui me bloque et je n'arrive pas à régler.

    En cherchant un peu j'ai trouvé des pistes mais je n'arrive pas à les appliqués.

    Donc voila j'ai dans une fenêtre des champs de saisies reliée a ma table entête.
    Toujours dans ma fenêtre j'ai un tableau avec des colonnes et ce qui est écrit dans le tableau cela s'enregistre dans ma table ligne (par le biais de tableoccurence).

    Une entête peut avoir plusieurs lignes.

    (Voir pièce jointe)

    Mon problème c'est que quand j’enregistre j'ai une erreur d'intégrité ou de clé... J'ai beau beau modifier mes cardinalités toujours les même erreurs.

    Je veux que lorsqu'on enregistre que les ligne saisie soit liée a l’entête.

    Exemple : Entête 01 = ligne 1 , 2 , 3 ,4 entête 02 = ligne 1 ,2 ,3 ,4 ,5 etc

    En cherchant on ma dit que il fallait que je parcours mon fichier entête que je récupère le numéro de l’entête que je fasse +1 et que je l'associe a mes lignes enfin j'ai pas tous compris...

    Voila merci d'avance.
    Images attachées Images attachées  

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Voici l’erreur,

    Merci de votre aide.
    Images attachées Images attachées  

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut!

    La rubrique idEntete du fichier Ligne est elle déclarée en doublons?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Oui IDEntête est déclaré en doublon.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Si cela peut vous aider :

    En pièces jointes la table entête et la table ligne

    Merci.
    Images attachées Images attachées   

  6. #6
    Membre confirmé Avatar de mnw.william
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2011
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 311
    Points : 459
    Points
    459
    Par défaut
    Bonjour;

    Essaye de modifier les cardinalités de la clé côté étrangère. Au lieu de (1,1) essaye les cardinalités (0,1).

    cdt,

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    merci cela marche mais je problème c'est que à chaque nouvelle enregistrement les lignes prennent toujours 0 en IDEntête alors que la je devrais avoir 3 lignes avec comme IDEntete 0 (1er enregistrement) et 2 ligne avec comme identete 1 (nouvelle saisie).

    J en sais pas comment résoudre ce problème.

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut Julien
    Il y a très certainement une erreur de laison dans vos fichiers!
    Vous devriez avoir Entete o,n --->0,1 Ligne

    Essayer de revoir la liaison, quitte à reprendre les fichiers!
    Edit: oopss désolé javais pas vu les réponses

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Une Entête peut ne pas avoir de lignes et peu en avoir jusqu’à 99.

    Une ligne ne peut avoir qu'une seule entête.

    0,99 --> 1,1 c'est donc faux???

    Je comprend pas pourquoi IDEntête de ligne de prend pas IDEntête en cours de saisie ...

    Il faudrait que je regarde dans quoi?

    Merci de m'aider.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Je vais vous faire un exemple !

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Voila par exemple :

    J'ai fait 2 saisie TEST 1 TEST 2

    Voici les tables Entête et ligne

    Normalement idligne 1 et 2 auraient du prendre comme identete 9 et idligne 3 et 4 auraient du prendre identete 10.
    Images attachées Images attachées   

  12. #12
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    la question est : dans quelle partie de code alimentes-tu ton champ IDEntete ? C'est ce qui doit être montré ici sinon on ne sait pas comment tu fais ton recoupement avec la table Entete.

    Un simple bout de code où tu as le HAJoute(Ligne) normalement ...

    à bientôt,

    Nicolas

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Autant pour moi :

    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
    26
    27
    28
    EcranVersFichier()
    HAjoute(Entête)
    HRAZ(Entête)
     
    POUR i = 1 A 99
     
    	TableOccurrence(TABLE_TableLSCPcopie)
     
    	SI (COL_UF[i] + COL_Produit[i] + COL_Qte[i] + COL_MonTTC[i] > 0) OU SansEspace(COL_Designation[i] + COL_NumBesoin[i] + COL_NumCompte[i] + COL_MarcheLot[i]) <> "" ET COL_TauxTVA[i] >= 0 ALORS
     
    		Ligne.UF = COL_UF[i]
    		Ligne.Produit = COL_Produit[i]
    		Ligne.Designation = COL_Designation[i]
    		Ligne.NumBesoin = COL_NumBesoin[i]
    		Ligne.NumCompte = COL_NumCompte[i]
    		Ligne.MarcheLot = COL_MarcheLot[i]
    		Ligne.Qte = COL_Qte[i]
    		Ligne.MonTTC = COL_MonTTC[i]
    		Ligne.TauxTVA = COL_TauxTVA[i]
     
    EcranVersFichier()
    HAjoute(Ligne)
    HRAZ(Ligne)	
     
    FIN
    FIN	
     
    Info("Votre liquidation à bien été enregistrée")
    Voila le code qui me permet d’enregistrer dans mes fichiers .fic

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    IDEntête dans ma table Entête est un id.automatique.

  15. #15
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Le problème est que tu n'indiques nul part quel doit être la valeur de l'identete ...
    Il devrait y avoir cette ligne car cela ne se fera pas tout seul:

    Ligne.IDEntete= Entete.IDEntete

    à bientôt,

    Nicolas

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Bonjour et désolé du retard,

    Je vais essayer cette solution, je vous tiens au courant.

    Merci.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Voici mon nouveau code :

    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
    26
    27
    EcranVersFichier()
    HAjoute(Entête)
    HRAZ(Entête)
     
    POUR i = 1 A 99
     
    	TableOccurrence(TABLE_TableLSCPcopie)
     
    	SI (COL_UF[i] + COL_Produit[i] + COL_Qte[i] + COL_MonTTC[i] > 0) OU SansEspace(COL_Designation[i] + COL_NumBesoin[i] + COL_NumCompte[i] + COL_MarcheLot[i]) <> "" ET COL_TauxTVA[i] >= 0 ALORS
     
    		Ligne.IDEntête = Entête.IDEntête
    		Ligne.UF = COL_UF[i]
    		Ligne.Produit = COL_Produit[i]
    		Ligne.Designation = COL_Designation[i]
    		Ligne.NumBesoin = COL_NumBesoin[i]
    		Ligne.NumCompte = COL_NumCompte[i]
    		Ligne.MarcheLot = COL_MarcheLot[i]
    		Ligne.Qte = COL_Qte[i]
    		Ligne.MonTTC = COL_MonTTC[i]
    		Ligne.TauxTVA = COL_TauxTVA[i]
     
    EcranVersFichier()
    HAjoute(Ligne)
    HRAZ(Ligne)	
     
    FIN
    FIN
    Malheureusement cela ne fonctionne toujours pas ... Dans mon fichier "ligne.fic" IDEntête est toujours = à 0.

  18. #18
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut!

    La fonction HRAZ() se met en général avant le Hajoute()
    En le mettant après tu vides le buffer.

    Essaie de modifier comme ceci avec des Trace() tu peux voir les valeurs de tes rubriques, ou également utiliser le debbuger de windev :

    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
    26
    27
    28
    29
    30
    HRAZ(Entête)
    EcranVersFichier()
    HAjoute(Entête)
    
    
    POUR i = 1 A 99 _A_
    
    TableOccurrence(TABLE_TableLSCPcopie)
    
    SI (COL_UF[i] + COL_Produit[i] + COL_Qte[i] + COL_MonTTC[i] > 0) OU SansEspace(COL_Designation[i] + COL_NumBesoin[i] + COL_NumCompte[i] + COL_MarcheLot[i]) <> "" ET COL_TauxTVA[i] >= 0 ALORS
    
    HRAZ(Ligne)
    Ligne.IDEntête = Entête.IDEntête
    Ligne.UF = COL_UF[i]
    Ligne.Produit = COL_Produit[i]
    Ligne.Designation = COL_Designation[i]
    Ligne.NumBesoin = COL_NumBesoin[i]
    Ligne.NumCompte = COL_NumCompte[i]
    Ligne.MarcheLot = COL_MarcheLot[i]
    Ligne.Qte = COL_Qte[i]
    Ligne.MonTTC = COL_MonTTC[i]
    Ligne.TauxTVA = COL_TauxTVA[i]
    
    //EcranVersFichier() --> à enlever
    HAjoute(Ligne)
    
    
    FIN
    FIN
    Soit tu utilises EcranVersFichier() soit tu fais des affectaions sur les rubriques.
    Tu ne peux pas faire les deux en même temps!

    PS : Le manuel d'autoformation est indispensable!

  19. #19
    Nouveau membre du Club
    Inscrit en
    Janvier 2012
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 171
    Points : 37
    Points
    37
    Par défaut
    Enfin !!!!!!!!! Problème résolu un grand merci à toi !

    Merci à tous ceux qui mon aidé !

    ps: j'ai le livre autoformation sous les yeux et franchement sa ne m'aide pas beaucoup ... En tous cas sa ne m'a pas aidé à régler ce problème.

  20. #20
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    le livre d'auto-formation va te permettre de savoir comment exploiter toutes ces fonctions et dans le bon ordre. Par les exemples, tu pourras ensuite voir comment elles sont utilisées. N'hésites pas à te créer un projet formation qui te permet de tester le RAD, tester la syntaxe des fonctions, leurs résultats etc ... Ca évite de casser son projet en utilisant mal ces fonctions par encore bien maitrisées.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problème liaison entre les tables
    Par PC81 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 07/05/2008, 09h20
  2. Liaison entre deux tables
    Par souhila2007 dans le forum WinDev
    Réponses: 6
    Dernier message: 19/01/2008, 08h06
  3. Probleme de liaison entre deux tables d'une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 32
    Dernier message: 12/04/2007, 18h09
  4. Liaison entre deux tables
    Par knoll dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/02/2007, 17h23
  5. [VBA-A] liaison entre deux tables
    Par lumbroso dans le forum VBA Access
    Réponses: 16
    Dernier message: 01/06/2006, 10h22

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