PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → intégrité.
intégrité.
Débuté par sebastien.boudot, 14 jan. 2005 13:40 - 4 réponses
Posté le 14 janvier 2005 - 13:40
Bonjour,

J'ai un gros probleme avec les alias et les contraintes d'intégrité.

Imaginons deux fichiers simples liés entre eux :


{Devis}(NumPiece)[ 0,N ] -----> [ 1,1 ](NumPiece){LigneDevis}

Un devis contient 0 à n lignes de devis.
Une ligne de devis est forcément liée a un devis et un seul.

Je réalise un alias sur chacun des deux fichiers.
halias(Devis,"Alias_Devis")
halias(LigneDevis,"Alias_LigneDevis")

Ensuite je veux travailler uniquement sur les fichiers alias.

Si j'execute le code suivant :
Alias_Devis.NumPiece=1
hajoute(Alias_Devis)
// Test création = OK

Alias_LigneDevis.NumPiece=1
hajoute(Alias_LigneDevis)
// Test création = Pas bon, erreur intégrité
// Erreur sur la clé NumPiece
// L'erreur d'intégrité se reporte sur les fichiers de l'analyse
// et non pas sur les fichiers alias.

Le probleme vient de la contraite entre les deux fichiers alias, c'est
celle des fichiers source qui est prise en compte. Je n'ai pas trouvé le
moyen de créer une nouvelle contraite entre ces deux fichiers.

Les fonctions
hGereIntegrite() et hDecritLiaison() ne fonctionnent pas sur les alias.

Je n'ai aucune solution pour le moment et ca paralyse mon projet.

Avez vous une idée ?
Posté le 14 janvier 2005 - 16:04
[ Exemple concret de code ]
[ Fichier Devis ]
[ 1. IDDevis ( idAutomatique )
[ 2. NumPiece ( chaine 13 caracteres, clé unique )
[ 3. DateBL ( date , clé doublon )

[ Fichier LigneDevis ]
[ 1. IDLigneDevis ( idAutomatique )
[ 2. NumPiece ( chaine 13 caracteres, clé avec doublon )
[ 3. Code ( Chaine sur 50 )

[ Contrainte : Un devis a 0 à N lignes, une ligne a 1 et 1 seul devis ]
Devis [ NumPiece ][ 0,N] ------> [1,1][ NumPiece ] LigneDevis

HAlias(Devis,"alias_devis")
HAlias(LigneDevis,"alias_lignedevis")

HCréation(Devis)
HCréation(LigneDevis)
HCréation("Alias_Devis")
HCréation("Alias_LigneDevis")

Devis.NumPiece = HeureSys()
Devis.DateBL = DateDuJour()
HAjoute(Devis)
Erreur(HErreurInfo(hErrComplet))

LigneDevis.NumPiece = Devis.NumPiece
LigneDevis.Code = "XXX"
HAjoute(LigneDevis)
Erreur(HErreurInfo(hErrComplet))

{"Alias_Devis.numpiece"} = HeureSys()
{"Alias_Devis.datebl"} = DateDuJour()
HAjoute("Alias_Devis")
Erreur(HErreurInfo(hErrComplet))

{"Alias_LigneDevis.numpiece"} = {"Alias_Devis.numpiece"}
{"Alias_LigneDevis.code"} = "CCC"
HAjoute("Alias_LigneDevis")
Erreur(HErreurInfo(hErrComplet))

[ Erreur générée uniquement sur le 4ieme hAjoute() ]
Dump de l'erreur du module <WD90HF.DLL> <9.00Bwe>.

- Appel WL :
Fonction <HAjoute>, n° de syntaxe <1>

- Niveau : erreur non fatale (EL_ONRETURN)

- Code erreur : 70015

- Code erreur WD55 : 15

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Erreur d'integrité.
Les cardinalités côté clé étrangère (1,1) entre les rubriques
<Devis.NumPiece> et <LigneDevis.NumPiece> ne sont pas respectées.

- Infos de debug :
iehf029

- Infos attachées :
EIT_LOGICALTABLENAME : <Alias_LigneDevis>
EIT_ITEMNAME : <NumPiece>
EIT_LINKNAME : <Contrainte_Devis_LigneDevis>

- Identifiant dans le .err : 70901
Posté le 14 janvier 2005 - 16:42
Bonjour

Avez-vous déclaré Alias_Devis et Alias_LigneDevis comme source de données?
Avez-vous fait un HCreationSiEnexistant de ces 2 fichiers?

Voir l'exemple de l'aide,il vous éclairera peut-être.

Cordialement
Posté le 14 janvier 2005 - 19:51
J'ai bien sur fait tout cela ( j'ai mis un complément de code sur mon poste précédent )
Mais en fait c'est un probleme qui existait deja en version 5.5 et qui n'a pas évolué.

C'est fort dommage.
Posté le 15 janvier 2005 - 16:27
J'allais te le dire, dès que l'on utilise des alias, (repertoire annuel par
exemple) il faut supprimer les containtes.

"sébastien BOUDOT" <kerovnia@brsystem.com> a écrit dans le message de news:
41e7fc13@news.pcsoft.fr...


J'ai bien sur fait tout cela ( j'ai mis un complément de code sur mon
poste précédent )
Mais en fait c'est un probleme qui existait deja en version 5.5 et qui n'a
pas évolué.

C'est fort dommage.