Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 10h39   #1
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
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
Type de fichier : png 47622120120130102659.png (14,4 Ko, 4 affichages)
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 12h17   #2
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Voici l’erreur,

Merci de votre aide.
Images attachées
Type de fichier : png 57955520120130121551.png (8,0 Ko, 5 affichages)
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 13h22   #3
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Salut!

La rubrique idEntete du fichier Ligne est elle déclarée en doublons?
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h09   #4
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Bonjour,

Oui IDEntête est déclaré en doublon.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h13   #5
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Si cela peut vous aider :

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

Merci.
Images attachées
Type de fichier : png 48736895en.png (292,0 Ko, 4 affichages)
Type de fichier : png 29096420120130141105.png (384,9 Ko, 5 affichages)
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h45   #6
Membre confirmé
 
Avatar de mnw.william
 
Homme William MBOUKAP
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 237
Détails du profil
Informations personnelles :
Nom : Homme William MBOUKAP

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 237
Points : 258
Points : 258
Envoyer un message via Yahoo à mnw.william
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,
mnw.william est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h00   #7
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
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.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h13   #8
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
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
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h17   #9
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
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.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h19   #10
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Je vais vous faire un exemple !
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h27   #11
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
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
Type de fichier : png 524178741.png (287,5 Ko, 3 affichages)
Type de fichier : png 503725472.png (120,2 Ko, 2 affichages)
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h58   #12
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 640
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 640
Points : 1 023
Points : 1 023
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
Nicolas_Jeanneau est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h09   #13
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Autant pour moi :

Code :
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
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h10   #14
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
IDEntête dans ma table Entête est un id.automatique.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h57   #15
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 640
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 640
Points : 1 023
Points : 1 023
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
Nicolas_Jeanneau est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h15   #16
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Bonjour et désolé du retard,

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

Merci.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h08   #17
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Voici mon nouveau code :

Code :
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.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h24   #18
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
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 :
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!
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h45   #19
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
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.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h54   #20
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 640
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 640
Points : 1 023
Points : 1 023
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.
Nicolas_Jeanneau est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h04.


 
 
 
 
Partenaires

Hébergement Web