|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
[WD20] : Comment changer la liaison d'une table fichier |
Débuté par Daniel, 17 mar. 2017 14:08 - 9 réponses |
| |
| | | |
|
| |
Membre enregistré 71 messages |
|
Posté le 17 mars 2017 - 14:08 |
Bonjour,
Je fais appel à vos lumières car je n'arrive pas à changer le fichier parcouru associé à une table.
En fait, je crée un alias d'un fichier, je change le répertoire ainsi que le nom physique (nom qui peut varier d'une exécution à l'autre). Je voudrais que la table qui est liée initialement au fichier original soit liée à l'alias que je viens de créer. Je n'y arrive pas. Je vous joins le code utilisé. Il y a des Info() qui traînent car c'est toujours en phase de développement.
La dernière ligne provoque l'erreur suivante "Erreur n°10085 : Le champ Table n'a pu s'initialiser, car il a rencontré l'erreur HFSQL suivante : L'élément '34T1' n'a pas été trouvé." '34T1' étant le nom physique donné à l'alias.
SI HAlias(LIVRACYL,sdCylindreEncodage) ALORS HChangeNom(sdCylindreEncodage,SansEspace(SAI_LOTFAB)) HChangeRep (sdCylindreEncodage,gsSmapTemp) SINON Erreur("Echec de la création de l'alias",HErreurInfo()) RETOUR FIN SI fFichierExiste(gsSmapTemp+SansEspace(SAI_LOTFAB)+".FIC") ALORS Info("Le fichier existe déjà") SINON Info("Le fichier n'existe pas encore") HCreation(sdCylindreEncodage) FIN REQ_CYLINDRESLOTFAB_SEL_V20.paramCléUniqueLOTFAB = SAI_LOCLEUNIK HExécuteRequête(REQ_CYLINDRESLOTFAB_SEL_V20) SI HNbEnr(REQ_CYLINDRESLOTFAB_SEL_V20)>0 ALORS HLitPremier(REQ_CYLINDRESLOTFAB_SEL_V20) TANTQUE PAS HEnDehors(REQ_CYLINDRESLOTFAB_SEL_V20) SI HCopieEnreg(sdCylindreEncodage,REQ_CYLINDRESLOTFAB_SEL_V20,hCopieIdAuto) ALORS HAjoute(sdCylindreEncodage,hFixeIdAuto) SINON Erreur("Copie d'enregistrement impossible.") SORTIR FIN HLitSuivant(REQ_CYLINDRESLOTFAB_SEL_V20) FIN FIN Info("Liaison initiale : "+TABLE..FichierParcouru) TABLE..FichierParcouru = sdCylindreEncodage..NomPhysique Info("Liaison initiale : "+TABLE..FichierParcouru) TABLE.LIVRCYL_1..LiaisonFichier = {sdCylindreEncodage+".LIVRCYL"}
Merci d'avance pour votre aide.
Dan |
| |
| |
| | | |
|
| | |
| |
Posté le 17 mars 2017 - 14:51 |
Bonjour Daniel
dans ton code, tu testes sur l'existence de gsSmapTemp+SansEspace(SAI_LOTFAB)+".FIC" et si ca n'existe pas, tu créé sdCylindreEncodage
C'est normal ca ? Ca ne devrait pas être le ichier que tu teste qui est créé ?
Si c'est une erreur, ca expliquerait ton message d'erreur
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 3/17/2017 à 8:08 AM, Daniel a écrit :
Bonjour, Je fais appel à vos lumières car je n'arrive pas à changer le fichier parcouru associé à une table. En fait, je crée un alias d'un fichier, je change le répertoire ainsi que le nom physique (nom qui peut varier d'une exécution à l'autre). Je voudrais que la table qui est liée initialement au fichier original soit liée à l'alias que je viens de créer. Je n'y arrive pas. Je vous joins le code utilisé. Il y a des Info() qui traînent car c'est toujours en phase de développement. La dernière ligne provoque l'erreur suivante "Erreur n°10085 : Le champ Table n'a pu s'initialiser, car il a rencontré l'erreur HFSQL suivante : L'élément '34T1' n'a pas été trouvé." '34T1' étant le nom physique donné à l'alias. fichier LIVRACYL SI HAlias(LIVRACYL,sdCylindreEncodage) ALORS HChangeNom(sdCylindreEncodage,SansEspace(SAI_LOTFAB)) HChangeRep (sdCylindreEncodage,gsSmapTemp) SINON Erreur("Echec de la création de l'alias",HErreurInfo()) RETOUR FIN
d'encodage SI fFichierExiste(gsSmapTemp+SansEspace(SAI_LOTFAB)+".FIC") ALORS Info("Le fichier existe déjà") SINON Info("Le fichier n'existe pas encore") HCréation(sdCylindreEncodage) FIN
REQ_CYLINDRESLOTFAB_SEL_V20.paramCléUniqueLOTFAB = SAI_LOCLEUNIK HExécuteRequête(REQ_CYLINDRESLOTFAB_SEL_V20) SI HNbEnr(REQ_CYLINDRESLOTFAB_SEL_V20)>0 ALORS sélectionné dans LIVRACYL HLitPremier(REQ_CYLINDRESLOTFAB_SEL_V20) TANTQUE PAS HEnDehors(REQ_CYLINDRESLOTFAB_SEL_V20) SI HCopieEnreg(sdCylindreEncodage,REQ_CYLINDRESLOTFAB_SEL_V20,hCopieIdAuto) ALORS HAjoute(sdCylindreEncodage,hFixeIdAuto) SINON Erreur("Copie d'enregistrement impossible.") SORTIR FIN HLitSuivant(REQ_CYLINDRESLOTFAB_SEL_V20) FIN FIN Info("Liaison initiale : "+TABLE..FichierParcouru) TABLE..FichierParcouru = sdCylindreEncodage..NomPhysique Info("Liaison initiale : "+TABLE..FichierParcouru) TABLE.LIVRCYL_1..LiaisonFichier = {sdCylindreEncodage+".LIVRCYL"}
Merci d'avance pour votre aide. Dan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 71 messages |
|
Posté le 17 mars 2017 - 15:39 |
Bonjour Fabrice, et ravi de te revoir, ici du moins
sdCylindreEncodage est déclaré comme une source de données. En fait, je crée le fichier "temporaire" avec le nom saisi en SAI_LOTFAB.
Mais je viens de trouver ce qui posait problème, la table fichier était en "programmation", je viens de la passer en "parcours automatique" et tout roule. J'ai juste du ajouter TABLE..FichierParcouru = sdCylindreEncodage à la place des Infos("Liaison initiale:"). A noter que ce code placé après le HChangeRep() provoquait déjà la création physique du fichier.
Il ne me reste plus qu'un petit problème, à l'initialisation de la fenêtre, la table est toujours associée au fichier de l'analyse et affiche tous les enregistrements, j'aimerais qu'elle reste vide tant que l'utilisateur n'a pas saisi quelque chose dans SAI_LOTFAB. Mais je ne vois pas comment faire, c'est vendredi ! |
| |
| |
| | | |
|
| | |
| |
Posté le 17 mars 2017 - 19:04 |
Ca, c'est facile...
tu fais, dans le code d'INIT DE LA TABLE, matable..FIchierparcouru=VarGlobaleVIDEaudepart
Ensuite,q uadn tu veux la remplir, tu mets le fichier à parcourir dans VarGLobaleVideAUDepart et un tableaffiche en mode init
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 3/17/2017 à 9:39 AM, Daniel a écrit :
Bonjour Fabrice, et ravi de te revoir, ici du moins sdCylindreEncodage est déclaré comme une source de données. En fait, je crée le fichier "temporaire" avec le nom saisi en SAI_LOTFAB. Mais je viens de trouver ce qui posait problème, la table fichier était en "programmation", je viens de la passer en "parcours automatique" et tout roule. J'ai juste du ajouter TABLE..FichierParcouru = sdCylindreEncodage à la place des Infos("Liaison initiale:"). A noter que ce code placé après le HChangeRep() provoquait déjà la création physique du fichier. Il ne me reste plus qu'un petit problème, à l'initialisation de la fenêtre, la table est toujours associée au fichier de l'analyse et affiche tous les enregistrements, j'aimerais qu'elle reste vide tant que l'utilisateur n'a pas saisi quelque chose dans SAI_LOTFAB. Mais je ne vois pas comment faire, c'est vendredi ! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 71 messages |
|
Posté le 20 mars 2017 - 06:27 |
Merci Fabrice,
C'est tellement simple que l'on a honte de ne pas y avoir pensé...
Dan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 71 messages |
|
Posté le 20 mars 2017 - 14:03 |
Bonjour à tous,
J'ai encore un petit problème.
Suite à la création de l'alias, la fenêtre appelle une fenêtre d'édition dont les champs sont liés au fichier de base LIVRACYL (celui qui est aliassé ci-dessus).
Comment dois-je m'y prendre pour lier les champs de cette fenêtre d'édition avec ma source de données sdCylindreEncodage au lieu de LIVRACYL.
En WD 5.5 (ben oui je suis vieux), je faisais ceci dans le code d'initialisation de la fenêtre d'édition :
IsChamp = EnumèreChamp(FenEnCours(),i) TANTQUE IsChamp<>"" SI {IsChamp}..Type<>typBouton ALORS ChampAlias(IsChamp,"ALIAS=LIVRACYL") FIN i++ IsChamp = EnumèreChamp(FenEnCours(),i) FIN
En WD20, je n'arrive pas à traduire cela, je dois m'embrouiller les pinceaux quelque part. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 71 messages |
|
Posté le 20 mars 2017 - 15:44 |
N'ayant pas trouver une manière générique de changer les liaisons fichier, je me les suis tapées en dur car la modification était assez urgente et le nombre limité de champs me le permettait. Toutefois, je suis preneur d'indications pour procéder de façon assez similaire au code 5.5 ci-dessus.
Merci.
Bonne journée.
Dan |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 18:53 |
Bonjour
les fonctions enumxxx sont dipo pour lister les champs
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 3/20/2017 à 9:44 AM, Daniel a écrit :
N'ayant pas trouver une manière générique de changer les liaisons fichier, je me les suis tapées en dur car la modification était assez urgente et le nombre limité de champs me le permettait. Toutefois, je suis preneur d'indications pour procéder de façon assez similaire au code 5.5 ci-dessus.
Merci.
Bonne journée.
Dan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 71 messages |
|
Posté le 21 mars 2017 - 15:31 |
Bonjour Fabrice,
Je m'en doute puisque c'est ce que j'ai utilisé en WD5.5 mais apparemment c'est l'assignation correspondant à l'ancien ChampAlias qui me pose des soucis.
Meilleurs sentiments,
Dan |
| |
| |
| | | |
|
| | |
| |
Posté le 11 mars 2019 - 17:06 |
Bonjour, je remonte un peu ce sujet car j'ai un peu le même problème je change le nom d'un fichier de ma BDD : "Participants" que je renomme grâce à une combo. Le nouveau fichier est bien créé. Dans le Hmap je vois bien les données que j'y ai ajouté. mais quand je veux charger ma table fichier ("Participants") rien ne se passe j'ai ce code :
gsFichierAParcourir="Participants_"+COMBO_Animation..ValeurAffichée TABLE_Participants..FichierParcouru=gsFichierAParcourir TableAffiche(TABLE_Participants,taInit) Comme Patrice l'indique, à la première lecture dans l'init de la table j' ai bien :*
TABLE_Participants..FichierParcouru=gsFichierAParcourir
si quelqu'un pouvait me dire ce qui ne va pas. Merci Cordialement, YL |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|