OVH Cloud OVH Cloud

[WD8] Erreur d'intégrité avec des alias

7 réponses
Avatar
Jean Cougnaud
Bonjour,

J'utilise des alias de fichiers avec la fonction hAlias et je change leur
répertoire avec HChangeRep.

J'ai défini des contraintes d'intégrité dans l'analyse entre les fichiers
originaux qui me servent pour créer les alias.

Lorsque je travaille avec les fichiers originaux tout va bien.

Lorsque je travaille avec les fichiers alias, le hAjoute plante et me
renvoie une erreur d'intégrité entre ces 2 fichiers .

Il y a quelque chose de spécial à faire avec les alias ? On ne doit pas
gérer les intégrités ?

Merci par avance de vos conseils.

Jean Cougnaud

7 réponses

Avatar
Michel
Jean Cougnaud a écrit :
Bonjour,

J'utilise des alias de fichiers avec la fonction hAlias et je change leur
répertoire avec HChangeRep.

J'ai défini des contraintes d'intégrité dans l'analyse entre les fichiers
originaux qui me servent pour créer les alias.

Lorsque je travaille avec les fichiers originaux tout va bien.

Lorsque je travaille avec les fichiers alias, le hAjoute plante et me
renvoie une erreur d'intégrité entre ces 2 fichiers .

Il y a quelque chose de spécial à faire avec les alias ? On ne doit pas
gérer les intégrités ?

Merci par avance de vos conseils.

Jean Cougnaud




non,

Cela devrait être complétement transparent pour le programme.

Par contre c'est évident que TOUS les fichiers concernés à un instant
donné doivent avoir évolués en même temps.

Michel
Avatar
Jean Cougnaud
Bonjour,

Même si je recréé physiquement les alias ils ne sont pas gérés
correctements.
Si je supprime la gestion des intégrités temporairement par programme, cela
fonctionne.

Le problème est juste sur l'alias... Il faut dire aussi que je travaille sur
ces alias par indirection et que je n'ai pas défini de source de données
pour ces fichiers.

Je vais faire une fenêtre de tests pour ne pas utiliser les indirections et
voir le résultat.

Merci de ta réponse

Jean


"Michel" a écrit dans le message de news:
dptde5$2ql$
Jean Cougnaud a écrit :
Bonjour,

J'utilise des alias de fichiers avec la fonction hAlias et je change leur
répertoire avec HChangeRep.

J'ai défini des contraintes d'intégrité dans l'analyse entre les fichiers
originaux qui me servent pour créer les alias.

Lorsque je travaille avec les fichiers originaux tout va bien.

Lorsque je travaille avec les fichiers alias, le hAjoute plante et me
renvoie une erreur d'intégrité entre ces 2 fichiers .

Il y a quelque chose de spécial à faire avec les alias ? On ne doit pas
gérer les intégrités ?

Merci par avance de vos conseils.

Jean Cougnaud


non,

Cela devrait être complétement transparent pour le programme.

Par contre c'est évident que TOUS les fichiers concernés à un instant
donné doivent avoir évolués en même temps.

Michel



Avatar
Jean Cougnaud
Je viens de faire un essai avec une fenêtre toute simple comportant juste
des affectations et un hAjoute.

Systématiquement, les 10 premiers ajouts ne fonctionnent pas ensuite c'est
aléatoire. Le 11ème fonctionne pas le 12ème, ensuite les 5 suivants
fonctionnent puis plus les suivants et cela revient ...

Bref, cela débloque complètement. Si je désactive la gestion de l'intégrité
cela fonctionne correctement et les données sont cohérentes.

Je ne comprends vraiment pas d'où cela vient.

L'impression que j'ai c'est qu'il semble "oublier" parfois qu'il travaille
sur des alias...

Bref, je n'ai pas de réponse satisfaisante avec mes tests.

Si quelqu'un avait des pistes ?

Jean


"Jean Cougnaud" a écrit dans le message de
news: 43c240c7$0$15706$
Bonjour,

Même si je recréé physiquement les alias ils ne sont pas gérés
correctements.
Si je supprime la gestion des intégrités temporairement par programme,
cela fonctionne.

Le problème est juste sur l'alias... Il faut dire aussi que je travaille
sur ces alias par indirection et que je n'ai pas défini de source de
données pour ces fichiers.

Je vais faire une fenêtre de tests pour ne pas utiliser les indirections
et voir le résultat.

Merci de ta réponse

Jean


"Michel" a écrit dans le message de news:
dptde5$2ql$
Jean Cougnaud a écrit :
Bonjour,

J'utilise des alias de fichiers avec la fonction hAlias et je change
leur répertoire avec HChangeRep.

J'ai défini des contraintes d'intégrité dans l'analyse entre les
fichiers originaux qui me servent pour créer les alias.

Lorsque je travaille avec les fichiers originaux tout va bien.

Lorsque je travaille avec les fichiers alias, le hAjoute plante et me
renvoie une erreur d'intégrité entre ces 2 fichiers .

Il y a quelque chose de spécial à faire avec les alias ? On ne doit pas
gérer les intégrités ?

Merci par avance de vos conseils.

Jean Cougnaud


non,

Cela devrait être complétement transparent pour le programme.

Par contre c'est évident que TOUS les fichiers concernés à un instant
donné doivent avoir évolués en même temps.

Michel







Avatar
Michel
Jean Cougnaud a écrit :
Je viens de faire un essai avec une fenêtre toute simple comportant juste
des affectations et un hAjoute.




Peux tu nous transmettre tes déclarations des alias et tes appel à SubstRep?
peut-être que à l'examen qqchose nous alertera.

Michel
Avatar
Jean Cougnaud
Voici ce que j'ai fait.

J'appelle cette procédure en initialisation de projet et je passe le nom des
fichiers Alias en paramètres.


SI PAS G_CreeAliasMarches("MarchesClients","MarchesClientsLignes") ALORS
Erreur("Impossible de créer les alias des marchés.")
FIN

Et la procédure

----------------------------------------------------------------------------------------------------------
PROCEDURE G_CreeAliasMarches(S_NomFicPrincipal,S_NomFicDetail)

// on créé les alias pour le fichier des marchés
SI PAS HAlias(DevisClients,S_NomFicPrincipal) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicPrincipal)
RENVOYER Faux
FIN

SI PAS HAlias(DevisClientsLignes,S_NomFicDetail) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicDetail)
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicPrincipal,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicDetail,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicPrincipal) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicDetail) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

RENVOYER Vrai
-----------------------------------------------------------------------------------------------------------

"Michel" a écrit dans le message de news:
dpu6vp$knu$
Jean Cougnaud a écrit :
Je viens de faire un essai avec une fenêtre toute simple comportant juste
des affectations et un hAjoute.




Peux tu nous transmettre tes déclarations des alias et tes appel à
SubstRep?
peut-être que à l'examen qqchose nous alertera.

Michel


Avatar
Michel
Juste une confirmation,

Dans l'analyse il y a 2 fichiers DevisClients et DevisClientsLignes
Je suppose qu'il y a une relation 1-n entre DevisClients et
DevisClientLignes

Si la création d'Alias se fait dans le code du projet, il est plus
facile de s'assurer que les fichiers sont bien fermés.

HAlias(NomLogique, NomAlias)

Dans le premier HAlias le S_NomFicPrincipal correspond au nom de
l'alias, j'en deduis que "MarchesClients" est l'alias de DevisClients
(fichier de l'analyse)

Dans le second "MarchesClientsLignes" est serait l'alias de
DevisClientsLignes


Mes remarques peut-être sans objet :
Pourquoi utiliser les alias, HSubtNom et HsubstRep aurait pu suffir,non ?
ou HChangeNom et HChangeRep



Il est recommandé de définir une source de donnée avant la fonction hAlias


Les fichiers sont-ils bien fermés avant l'appel de la procedure ?

Pour le reste je ne vois pas.

Michel


Jean Cougnaud a écrit :
Voici ce que j'ai fait.

J'appelle cette procédure en initialisation de projet et je passe le nom des
fichiers Alias en paramètres.


SI PAS G_CreeAliasMarches("MarchesClients","MarchesClientsLignes") ALORS
Erreur("Impossible de créer les alias des marchés.")
FIN

Et la procédure

----------------------------------------------------------------------------------------------------------
PROCEDURE G_CreeAliasMarches(S_NomFicPrincipal,S_NomFicDetail)

// on créé les alias pour le fichier des marchés
SI PAS HAlias(DevisClients,S_NomFicPrincipal) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicPrincipal)
RENVOYER Faux
FIN

SI PAS HAlias(DevisClientsLignes,S_NomFicDetail) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicDetail)
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicPrincipal,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicDetail,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicPrincipal) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicDetail) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

RENVOYER Vrai
-----------------------------------------------------------------------------------------------------------






Avatar
Jean Cougnaud
Bonsoir,

Merci de tes remarques.

Effectivement, j'aurais pu utiliser un HSubstNom. Je m'en suis rendu compte
en faisant mes tests mais j'avais l'habitude de faire des alias et je
n'avais jamais eu de problème avant. C'est vrai que les projets précédents
n'avaient pas tous des relations dans l'analyse.

Comme je mets cette déclaration à l'ouverture du projet, les fichiers alias
doivent bien être fermés.

Par contre, je n'ai pas fait de source de données avant la création des
alias. Je vais essayer pour voir.

Merci de ton aide

Jean Cougnaud
www.jean-cougnaud.com


"Michel" a écrit dans le message de news:
dpug8t$341$
Juste une confirmation,

Dans l'analyse il y a 2 fichiers DevisClients et DevisClientsLignes
Je suppose qu'il y a une relation 1-n entre DevisClients et
DevisClientLignes

Si la création d'Alias se fait dans le code du projet, il est plus facile
de s'assurer que les fichiers sont bien fermés.

HAlias(NomLogique, NomAlias)

Dans le premier HAlias le S_NomFicPrincipal correspond au nom de l'alias,
j'en deduis que "MarchesClients" est l'alias de DevisClients (fichier de
l'analyse)

Dans le second "MarchesClientsLignes" est serait l'alias de
DevisClientsLignes


Mes remarques peut-être sans objet :
Pourquoi utiliser les alias, HSubtNom et HsubstRep aurait pu suffir,non ?
ou HChangeNom et HChangeRep



Il est recommandé de définir une source de donnée avant la fonction hAlias


Les fichiers sont-ils bien fermés avant l'appel de la procedure ?

Pour le reste je ne vois pas.

Michel


Jean Cougnaud a écrit :
Voici ce que j'ai fait.

J'appelle cette procédure en initialisation de projet et je passe le nom
des fichiers Alias en paramètres.


SI PAS G_CreeAliasMarches("MarchesClients","MarchesClientsLignes") ALORS
Erreur("Impossible de créer les alias des marchés.")
FIN

Et la procédure

----------------------------------------------------------------------------------------------------------
PROCEDURE G_CreeAliasMarches(S_NomFicPrincipal,S_NomFicDetail)

// on créé les alias pour le fichier des marchés
SI PAS HAlias(DevisClients,S_NomFicPrincipal) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicPrincipal)
RENVOYER Faux
FIN

SI PAS HAlias(DevisClientsLignes,S_NomFicDetail) ALORS
Erreur("Problème en créant l'alias : "+S_NomFicDetail)
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicPrincipal,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HChangeRep(S_NomFicDetail,GP_Ch_CheminFichiers) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicPrincipal) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

SI PAS HCréationSiInexistant(S_NomFicDetail) ALORS
Erreur(ErreurInfo())
RENVOYER Faux
FIN

RENVOYER Vrai
-----------------------------------------------------------------------------------------------------------